Linux学习基础篇(软件的安装与管理)

1、源码方式安装软件

1.1、源码安装的优点

因为Linux系统开放源代码的特性,所以在系统上运行的大部分软件也都是开源软件。开源软件基本都提供源码的下载,这时就可以通过源码来安装软件。

使用源码安装软件的优点在于用户可以自定制软件功能,只安装需要的模块;安装时可自定义软件安装的路径,方便管理;卸载时只要删除软件安装目录即可。

1.2、源码安装过程

在源码安装之前,需要把开发工具等基础模块安装好,比如 gcc、gcc-c++、libgcc、glibc、make、automake等开发工具和基础包;还要安装一些相应的开发包,一般是包名-devel类型的,glibc-devel、gettext-devel等(如果源码安装过程中提示缺少某软件包但是该软件包已经安装,可以检查是否该包的开发包即包名-devel是否安装);还有一些开发库,比如以lib开头的开发库。

进入源码目录,一般都有README或INSTALL文件,或者是DOC目录,这些是安装说明文档。可以按照文档中的说明进行软件的安装。

源码安装软件一般包含以下步骤:分析安装平台环境、编译安装软件。

分析安装平台环境

源码目录下有个命名为configure的可执行文件,使用命令./configure进行软件安装环境的检测,如果提示缺少某些软件包,则需要先安装这些包,再重新进行检测,直到检测通过。configure的--prefix参数用于指定软件安装的目录;configure的其他参数可以参考软件的安装说明,不同软件会支持不同的参数。

编译安装软件

安装环境检测通过后,运行make命令进行编译。make是我们经常用到的编译命令,对于一个包含很多源文件的应用程序,使用make和makefile工具可以简单快速的解决各个源文件之间复杂的依赖关系;同时,make工具还可以自动完成所有源码文件的编译工作,并且可以只对上次编译后修改过的文件进行增量编译。如果不需要增量编译,使用make clean命令清除上次编译的结果,重新开始编译。

make工具最主要的功能就是通过makefile文件来实现的,makefile文件是按照某种语法来进行编写的,文件中定义了各个源文件之间的依赖关系,并说明了如何编译源文件并生成可执行文件,它通过描述各个源程序之间的关系让make工具自动完成编译工作。

编译完成后,执行make install命令将编译完成的软件复制到指定的安装目录下,至此,源码安装软件完成。

2、RPM包方式安装软件

2.1、RPM包管理工具

RPM,Red Hat Package Manager,Red Hat软件包管理,由Red Hat公司开发的Linux软件包管理工具。由于该管理工具在软件安装和管理方面非常方便易用,逐渐被其他Linux发行版使用,现在已经成为Linux下通用的一种软件包管理方式。另外一种流行的工具为Debian开发的dpkg。

RPM软件包以.rpm结尾。每个RPM文件中包含了已完成编译的二进制可执行文件,本质为将源码进行编译安装然后封装成RPM文件。

优点:安装简单方便,因为软件已经编译完成打包完毕,安装只是个验证环境和解压的过程。

缺点:对操作系统环境的依赖非常大,它要求RPM包的安装环境必须与RPM包的封装环境一致或相当;另外还需满足安装时的软件包依赖关系

2.2、RPM包种类及文件名含义

RPM包的封装格式一般有两种,分别是RPM和SRPM,SRPM包也是一种RPM,但是它包含了编译时的源码文件和一些编译指定的参数文件,因而在使用的时候需要重新进行编译,通常SRPM文件名称类似于xxx.src.rpm

RPM包文件名的含义:

rpm

一般的RPM封装包的命名格式都有这六个部分组成,由于SRPM包是需要编译才能使用的,因此没有上面显示项中对应的平台选项,其它与RPM包命令格式完全一样。

2.3、RPM管理工具使用

2.3.1、安装RPM包

语法如下:

rpm –i [辅助选项] RPM包

常用辅助选项:

  • -v:显示附加信息
  • -h:安装时输出标记“#”,即安装进度条
  • --test:只对安装进行测试,并不实际安装
  • --nodeps:不检查软件之间的依赖关系,加入此选项可能导致软件不可用
  • --force:忽略软件包以及软件冲突

小技巧:如果安装A软件包时依赖B软件包,而安装B软件包时又依赖A软件包,则可以同时安装这两个软件包以解决相互依赖的情况,使用命令rpm –ivh A.rpm B.rpm

2.3.2、更新RPM包

语法如下:

rpm -U [辅助选项] RPM包

常用辅助选项参考安装RPM包。

2.3.3、查询RPM包

语法如下:

rpm -q [辅助选项] RPM包

常用辅助选项:

  • -f:查询某个文件对应的RPM包
  • -p:查询以.rpm为后缀的软件包安装后对应的包名称
  • -l:显示软件包中的所有文件列表。此选项后面跟软件包安装后对应的包名,而不是以.rpm为后缀的包
  • -i:显示软件包的概要信息,例如软件名称、版本、适应平台、大小等等。此选项后面跟完整的包名,而不是以.rpm为后缀的包
  • -a:查询系统中安装的全部软件包

2.3.4、删除RPM包

语法如下:

rpm -e [辅助选项] 已安装的软件包名

常用辅助选项:

  • --test:只执行删除测试,而不真正删除
  • --nodeps:不检查依赖性

2.3.5、验证未安装的RPM包

RPM包是否值得信任,是否损坏,可以通过RPM提供的选项进行验证。RPM软件包一般使用 Gnu 隐私卫士(GPG)来签名,从而帮助使用者验证下载的软件包是否可信。语法如下:

rpm -K RPM包

2.4、安装.src.rpm包

  1. 执行命令rpm –i xxx.src.rpm
  2. 切换到目录/root/rpmbuild/SPECS(CentOS 5.x以前版本的路径是/usr/src/redhat/SPECS,从CentOS 6.x之后的版本路径变为/root/rpmbuild/SPECS
  3. 执行命令rpmbuild –bb xxx.specs(xxx.specs是一个和软件包同名的specs文件)
  4. 在目录/root/rpmbuild/RPMS/x86_64下将会生成一个或多个RPM包,这些包是已经编译完成的RPM包
  5. 执行命令rpm –ivh安装这些生成的RPM包

3、yum方式安装软件

3.1、yum简介

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

3.2、yum的安装与配置

使用命令rpm –qa|grep yum查看yum工具是否安装。

如果系统中还未安装yum工具,则可以通过CentOS的安装光盘安装,CentOS光盘上带有yum安装包,使用以下命令安装yum:

rpm -ivh yum-*.noarch.rpm

注意:yum的安装需要依赖python-elementtree、python-sqlite、urlgrabber、yumconf等软件包,这些包在CentOS的安装光盘中均可找到。

yum主要配置文件

  • 主配置文件: /etc/yum.conf
  • 软件源配置目录: /etc/yum.repos.d
  • 软件源基本配置文件:/etc/yum.repos.d/CentOS-Base.repo
  • yum缓存目录: /var/cache/yum

yum的特点

  • 安装方便,自动解决增加或删除rpm包时遇到的依赖性问题。
  • 可以同时配置多个资源库(Repository)
  • 配置文件简单明了(/etc/yum.conf、/etc/yum.repos.d/CentOS-Base.repo)
  • 保持与RPM数据库的一致性

3.3、yum的使用

使用yum安装软件:

yum install 软件名

使用yum删除软件:

yum remove 软件名

注意:删除软件时yum会同时删除该软件的依赖包。

检查是否有可更新的软件:

yum check-update

更新所有可升级的软件:

yum update

列出软件源中特定的可以安装/更新/已经安装的软件包的信息:

yum info 软件名

列出软件源中特定的可以安装/更新或已经安装的软件包:

yum list 软件名

搜索匹配特定字符的软件包的详细信息:

yum search 软件名

清除缓存中旧的软件包信息:

yum clean headers|packages|metadata|dbcache|plugins|expire-cache|rpmdb|all

生成新的缓存:

yum makecache

列出软件的依赖:

yum deplist 软件包

yum的一些常用选项:

  • -q:静默执行
  • -t:忽略错误
  • -y:自动应答yes
  • --skip-broken:忽略软件依赖
  • --nogpgcheck:忽略GPG验证

使用yum仅下载软件不安装:

  1. yum自带工具yumdownloader:yumdownloader 软件名
  2. 使用yum的插件yum-downloadonly:yum install --downloadonly --downloaddir=目录 软件名

注意:推荐使用yum-downloadonly插件,该插件在下载软件包时会下载该软件依赖的所有其他软件包。

yum加速插件yum-fastestmirror:

yum-fastestmirror插件可以自动选择最快的软件源下载安装软件。该插件的配置文件位于

/etc/yum/pluginconf.d/fastestmirror.conf,yum软件源的速度测试记录文件为yum缓存下的timedhosts.txt文件。

使用命令yum install yum-plugin-fastestmirror安装该插件。

3.4、更换系统默认的软件源

以下以在CentOS 6.9中将系统默认软件源更换为阿里云软件源为例

进入软件源配置目录:

cd /etc/yum.repos.d

备份系统默认的软件源:

mv CentOS-Base.repo CentOS-Base.repo.backup

下载阿里云软件源配置文件,注意,下载的软件源配置文件必须与所用的系统对应:

wget -O CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo

清理yum缓存:

yum clean all

生成新的yum缓存:

yum makecache

3.5、一些软件源

3.5.1、EPEL源

EPEL,全称是企业版Linux附加软件包,是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版Linux(RHEL)及其衍生发行版(例如CentOS、Scientific Linux)的一个高质量附加软件包项目。 其官方网址为:http://fedoraproject.org/wiki/EPEL/zh-cn, EPEL的软件包不会与企业版Linux官方源中的软件包发生冲突,或者互相替换文件。

相关的EPEL软件包可以从EPEL官方网站下载到,针对CentOS系统,有EL6、EL7三个版本,分别针对CentOS 6.x、CentOS 7.x三个系列版本。

也可以使用以下命令安装该软件源:

yum install epel-release

3.5.2、rpmforge源

rpmforge是一个第三方的软件源仓库,也是CentOS官方社区推荐的第三方yum源,它为CentOS系统提供了超过10000个软件包,被CentOS社区认为是最安全也是最稳定的一个软件仓库。但是由于这个安装源不是CentOS本身的组成部分,因此要使用rpmforge,需要手动下载并安装。

rpmforge的官方网站是http://repoforge.org ,可以在http://repoforge.org/use/ 下载RHEL/CentOS各个版本的“rpmforge-release”包,这样就可以使用RPMForge提高的丰富软件了。

4、二进制包方式安装软件

Linux下二进制格式的软件是指事先已经在各种平台编译安装好相关软件,然后压缩打包,在安装时只需解压或者执行安装可执行文件即可。二进制软件包的优点是安装简单、容易,缺点是缺乏灵活性,相应的软件包执行在对应平台下安装,离开这个环境软件就无法运行。

二进制软件包提供了很多类型的打包方式,最常见的就是RPM格式,还有以tar.gz、tgz、tar.bz2等形式的二进制软件包。

这种格式的软件包,安装其实就是简单的解压过程,根据不同的软件打包格式,用对应的解压命令解压即可。

原文地址:https://www.cnblogs.com/yu2006070/p/9263112.html