前言

在Windows操作系统下,下载软件对于我们来说是很简单的操作,甚至有的还有自动运行的。但是Linux不同,因Linux版本过多,导致软件的安装方法五花八门。在此我把Linux的软件安装方式进行汇总和整理。

一、Linux应用程序基础

1.Linux应用程序与系统命令的关系

在Linux系统中,一直以来命令和应用程序并没有明确的区别,从长期使用习惯来看,可以通过以下的描述来对两者进行区别。

  • 文件位置:系统命令一般在/bin和/sbin目录中,或为Shell内部指令,而应用程序则通常在/usr/bin 、/usr/sbin和/usr/local/bin,/usr/local/sbin目录中。
  • 主要用途:系统命令是完成系统的基本管理工作,例如IP配置工具,而应用程序则是完成相对独立的其他辅助任务,例如网页浏览器。
  • 试用环境:系统命令一般只在字符操作界面运行,应用程序则是根据实际需要,有些程序可在图形界面中运行。
  • 运行格式:系统命令一般包括命令字、命令选项和命令参数,应用程序却没有固定的执行格式。

2.典型应用程序的目录结构

安装完一个软件后,可能会向系统中复制大量的数据文件,并进行相关设置。在Linux系统中,典型的应用程序通常由以下几部分组成:

文件类型保存目录
普通可执行程序文件一般保存在/usr/bin目录下,普通用户即可执行
服务器程序、管理程序文件一般保存在/usr/sbin目录中,只有管理员能执行
应用程序配置文件一般保存在/etc目录中,配置文件较多时会建立相应的子目录
日志文件一般保存在/var/log目录中
应用程序的参考文档等数据一般保存在/usr/share/doc/目录中
执行文件及配置文件的man手册页一般保存在/usr/share/man/目录中

3.常见的软件包封装类型

对于各种应用程序的软件包,在封装时可以采用各种不同的类型,不同类型的软件包其安装方法也各不相同。常见的软件包封装类型如下:

文件类型保存目录
RPM软件包扩展名为".rpm"
DEB软件包扩展名为".deb"
源代码软件包一般为".tar.gz " 、".tar.bz2"等格式的压缩包,包含程序的原始代码
附带安装程序的软件包扩展名不一,以TarBall格式的居多

二、RPM软件包管理工具

RPM软件包管理机制最早是由Red Hat 公司提出的,后来随着版本的升级逐渐融入了更多的优秀特性,成为众多Linux发行版中公认的软件包管理标准。
一般命名格式如下图所示:
在这里插入图片描述

1.RPM命令的格式

在Linux系统中,rpm命令是实现RPM软件包管理的主要工具,能够实现几乎所有对RPM软件包的管理功能。

  • 执行“man rpm”命令可以获得关于rpm命令的详细帮助信息,如下:
[root@localhost ~]$man rpm

在这里插入图片描述

2.rpm命令功能

从rpm命令的手册页信息中可以看出,rpm命令具有相当复杂的命令格式,结合不同的命令选项及子选项主要可以实现以下三类功能:

  • 查询、验证RPM软件包的相关信息
  • 安装、升级、卸载RPM软件包
  • 维护RPM数据库信息等综合管理操作

三、查询RPM软件包信息

1.查询已安装的RPM软件信息

不带选项的“-q”选项可用于查询已知名称的软件包是否已经安装

选项说明
rpm -qa显示当前系统中以RPM方式安装的所有软件列表
rpm -q查询指定软件是否已安装
rpm -qi显示已安装软件的详细信息
rpm -ql显示已安装的指定软件的文件列表
rpm -qc列出已安装的指定软件的配置文件
rpm -qd列出已安装的指定软件包文档所在位置
rpm -qR列出已安装的指定软件的依赖的软件包及文件
rpm -qf(文件或目录)查询已安装的指定软件属于哪个安装包

案例
①查询是否已安装elinks 和lynx 软件包,如下:

[root@localhost ~]$rpm -q elinks lynx
未安装软件包 elinks 
未安装软件包 lynx 

②查询系统中是否安装了名称中含“samba”的软件包,查询时不区分大小写,如下:

[root@localhost ~]$rpm -qa | grep -i samba
samba-client-libs-4.6.2-8.el7.x86_64
samba-common-4.6.2-8.el7.noarch
samba-common-libs-4.6.2-8.el7.x86_64
samba-client-4.6.2-8.el7.x86_64

③查询vim编辑器程序是在安装哪个软件包时生成的,可以执行如下命令:

[root@localhost ~]$which vim
/usr/bin/vim
[root@localhost ~]$rpm -qf /usr/bin/vim
vim       vimdiff   vimtutor  
[root@localhost ~]$rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-2.el7.x86_64

2.查询未安装的RPM软件包文件信息

使用“-qp”选项时,必须以RPM包文件的路径作为参数(可以有多个),而不是软件包名称

选项说明
rpm -qpi查询指定软件包的详细信息
rpm -qpl查询指定软件包的文件列表
rpm -pqc查询指定软件包的配置文件
rpm -qpd查询指定软件包的软件包文档的位置

四、安装、升级、卸载RPM包

在日常工系统管理工作中,安装、升级 及卸载软件包是管理应用程序最基本的工作内容

1.基本命令选项

  • 命令格式:rpm [选项] RPM包文件
    常用选项如下:
选项说明
-i安装一个新的RPM包
-U升级某个软件包,若未安装,则进行安装
-F升级某个软件包,若未安装,则放弃安装
-h在安装和升级的过程中,以“#”号显示安装进度
-v显示软件安装过程中的详细信息
-e卸载指定名称的软件包
- -nedops在安装或升级,卸载一个软件包时,不检查与其他软件的依赖关系
- -force强制安装某个软件,比如安装版本更旧的软件包

案例
卸载已安装的elinks 软件,卸载后查看是否成功,如下:

[root@localhost ~]$rpm -e elinks
[root@localhost ~]$rpm -q elinks
 package elinks is not installed

2.维护RPM数据库

  • 用于记录在Linux系统中安装、卸载、升级应用程序的相关信息,由RPM包管理系统自动完成维护,一般不需要用户干预。
  • 当RPM数据库发生损坏(误删文件、非法关机、病毒破坏等导致),且Linux系统无法完成自动修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包。这时候可以使用rpm命令的"- -rebuilddb”或“- -initdb”功能对RPM数据库进行重建。

命令如下:

[root@localhost ~]$rpm --rebuilddb 

[root@localhost ~]$rpm --initdb
  • 导入验证公钥
    在没有导入用于数字签名验证的公钥文件之前,安装光盘中的一部分RM软件包时会报错,需要向数据库中导入位于光盘根目录下的公钥文件,如下所示:
[root@localhost ~]# rpm --import/media/cdrom/RPM-GPG-KEY-CentOS-7

3.解决软件包依赖关系的方法

  • 安装有依赖关系的多个软件时:
    被依赖的软件包需要先安装
    可同时指定多个.rpm包文件进行安装
  • 卸载有依赖关系的多个软件时
    依赖其他程序的软件包需要先卸载
    可同时指定多个软件名进行卸载

五、 源代码编译安装

在Linux平台中搭建各种应用系统时经常会需要对软件包进行编译安装

1.源代码编译概述

使用源代码安装软件的优点

  • 获得最新的软件版本,及时修复bug
  • 根据用户需要,灵活定制软件功能

现代的Linux发行版本通常使用包管理机制对软件进行打包安装。这样省去了软件的编译安装过程,大大简化了Linux系统的安装和使用难度。但是在有些情况下,仍然需要使用源代码编译的方式为系统安装新的应用程序,如以下几种情况:

安装较新版本的应用程序时
当前安装的程序无法满足需要时
需要为应用程序添加新的功能时

确认源代码编译环境
编译源代码需要相应的开发环境,需安装支持C/C++程序语言的编译器,如gCC、gcC-C++、make、…等等

2.yum命令

安装源代码软件包需要编译安装,需要安装支持c和c++程序语言的编译器,如ges、gcc-c、make
如果使用rpm方式安装,则需要先安装多个依赖包,这样会很繁琐,我们就可以使用yum 方式进行一键安装

yum常用命令

命令说明
yum -y install安装升级软件包,“-y”选项表示自动确认
yum -y remove卸载软件包,可自动解决其依赖关系
yum -y update升级软件包
yum list查询软件包列表
yum list installed查询系统中已安装的软件包
yum list available查询仓库中尚未安装的软件包
yum list updates查询可以升级版本的软件包
yum info查询软件包的描述信息
yum search [all] 关键词根据某个关键词来查找相关的软件包
yum whatprovides查询命令属于哪个软件包

3.yum本地源、网络源

  • 本地源
    配置如下:

首先我们进入虚拟机,打开设置把设备状态勾选上

在这里插入图片描述

然后具体操作如下:

[root@localhost ~]$mount /dev/sr0 /mnt/   把光盘挂载到目录下
[root@localhost ~]$df -h                  查看磁盘
[root@localhost ~]$cd /etc/yum.repos.d/   本地源所有的源都在这个目录下
[root@localhost /etc/yum.repos.d]$mkdir repos.bak  创建目录
[root@localhost /etc/yum.repos.d]$mv*.repo repos.bak
[root@localhost /etc/yum.repos.d]$vim local.repo 
设置仓库配置信息
[local]                    仓库类别
name=local                 仓库名称
baseurl=file:///mnt        指定URL访问路径为光盘挂载目录    
enabled=1                  开启yum源
gpgcheck=0                 不验证软件包的签名

[root@localhost /etc/yum.repos.d]$yum clean all && yum makecache  删除yum缓存并更新
  • 网络源
  • 操作命令(收集所有安装包,包括依赖包保存在指定目录中)
    yum install 包名 -y --downloadonly --downloaddir=/tmp/ 下载RPM包到指定目录

4.编译安装过程

  • 第一步:首先安装依赖包(编译器),命令如下
[root@localhost /home]$yum install gcc* make apr-devel* pkgconfig* libapr* apr-util* pcre* -y
  • 第二步:tar解包
[root@localhost /home]$tar zxvf httpd-2.4.25.tar\(1\).gz -C /usr/local/
  • 第三步:配置软件模块(安装路径,开启或关闭模块功能)
[root@localhost /home]$cd /usr/local/httpd-2.4.25/
[root@localhost /usr/local/httpd-2.4.25]$./configure --prefix=/usr/local/apache
  • 第四步:进行编译(就是将源代码转换为可执行的程序)
[root@localhost /usr/local/httpd-2.4.25]$make && make install
  • 第五步:启动http服务
[root@localhost /usr/local/httpd-2.4.25]$/usr/local/apache/bin/apachectl start
  • 最后进行验证(验证结果可以使用不同的方式)
[root@localhost /usr/local/httpd-2.4.25]$curl http://192.168.139.128
<html><body><h1>It works!</h1></body></html>

总结

  • 源代码编译安装的基本过程:先tar解包,然后配置软件模块,再编译,最后安装,这四个步骤。
  • RPM软件素材参考:地址
  • 编译安装软件素材参考网站:地址
Logo

更多推荐