3.1 软件包管理
完善的软件包管理机制对于操作系统来说是非常重要的,没有软件包管理器,用户使用操作系统将会变得非常困难,也不利于操作系统的推广。用户要使用Linux,需要了解Linux的包管理机制。随着Linux的发展,目前形成了两种包管理机制:RPM(Redhat Package Manager)和DPKG(Debian Package)。两者都是源代码经过编译之后,通过包管理机制将编译后的软件进行打包,避免了每次编译软件的烦琐过程。
3.1.1 RPM软件包管理
RPM(RedHat Package Manager)类似于Windows里面的“添加/删除程序”,最早由Red Hat公司研制,现已成为一个开源工具,并更名为RPM Package Manager。RPM软件包以rpm为扩展名,同时RPM也是一种软件包管理器,可以让用户方便地进行软件的安装、更新和卸载。操作RPM软件包对应的命令为rpm。
RPM包通常包含二进制包和源代码包。二进制包可以直接通过rpm命令安装在系统中,源代码包则可以通过rpm命令提取对应软件的源代码,以便进行学习或二次开发。
1.安装软件包
RPM提供了非常丰富的功能,是通过一定机制把二进制文件或其他文件打包在一起的单个文件。当使用RPM包进行安装时,通常是一个把二进制程序或其他文件复制到系统指定路径的过程。RPM包对应的管理命令为rpm,下面演示如何使用RPM安装软件。
使用SecureCRT时常见的操作是使用rz或sz命令进行文件的上传或下载,对应的软件包为lrzsz-0.12.20-36.el7.x86_64.rpm,一般随附于Linux的发行版(软件版本可能有所不同)。示例3-1演示了如何通过RPM包安装此软件。
【示例3-1】
首先挂载光驱,找到指定的软件,通过rpm命令将软件安装到系统中。上述示例中的参数说明如表3.1所示。
表3.1 rpm安装软件参数说明
软件已经安装完毕,软件安装位置和安装文件列表的查看如示例3-2所示。
【示例3-2】
上述示例演示了如何通过rpm命令查看软件的安装位置,参数说明如表3.2所示。
表3.2 rpm查看软件参数说明
如果软件包已经安装,但由于某些原因想重新安装,则可采用强制安装的方式,使用指定参数实现这个功能,方法如下所示。
【示例3-2】续
上述示例演示了如何强制更新已经安装的软件,如果安装软件时遇到互相依赖的软件包导致不能安装,那么可以使用nodeps参数先禁止检查软件包依赖以便完成软件的安装。
2.升级软件包
软件安装以后随着新功能的增加或BUG的修复,软件会持续更新。更新软件的方法如示例3-3所示。
【示例3-3】
#更新已经安装的软件 [root@localhost Packages]#rpm –Uvh lrzsz-0.12.20-43.el8.x86_64.rpm
更新软件时常用的参数说明如表3.3所示。
表3.3 更新软件rpm常用参数说明
更新软件时如果遇到已有的配置文件,为保证新版本的运行,RPM包管理器会将该软件对应的配置文件重命名,然后安装新的配置文件,新旧文件的保存会使得用户有更多选择。
3.查看已安装的软件包
系统安装完会默认安装一系列的软件。RPM包管理器提供了相应的命令查看已安装的安装包,如示例3-4所示。
【示例3-4】
#查看系统中安装的所有包 [root@localhost Packages]# rpm -qa glusterfs-client-xlators-3.12.2-40.2.el8.x86_64 snappy-1.1.7-5.el8.x86_64 xmlsec1-openssl-1.2.25-4.el8.x86_64 os-prober-1.74-6.el8.x86_64 jomolhari-fonts-0.003-24.el8.noarch liberation-fonts-common-2.00.3-4.el8.noarch python3-setools-4.2.0-2.el8.x86_64 brotli-1.0.6-1.el8.x86_64 sssd-common-2.0.0-43.el8.x86_64 atk-2.28.1-1.el8.x86_64 lohit-odia-fonts-2.91.2-3.el8.noarch yelp-xsl-3.28.0-2.el8.noarch python3-pydbus-0.6.0-5.el8.noarch libini_config-1.3.1-39.el8.x86_64 cryptsetup-2.0.6-1.el8.x86_64 json-glib-1.4.4-1.el8.x86_64 stix-fonts-1.1.0-12.el8.noarch emacs-filesystem-26.1-5.el8.noarch #中间结果省略 unzip-6.0-41.el8.x86_64 libwinpr-2.0.0-46.rc4.el8.x86_64 langpacks-zh_CN-1.0-12.el8.noarch cryptsetup-libs-2.0.6-1.el8.x86_64 iproute-tc-4.18.0-11.el8.x86_64 daxctl-libs-62-2.el8.x86_64 #查找指定的安装包 [root@localhost Packages]# rpm -aq | grep rz lrzsz-0.12.20-43.el8.x86_64
通过使用rpm命令指定特定的参数可以查看系统中安装的软件包。查看已安装的软件包参数说明如表3.4所示。
表3.4 查看已安装的软件包参数
4.卸载软件包
RPM包管理器提供了对应的参数进行软件的卸载,软件卸载方法如示例3-5所示。如果卸载的软件被别的软件依赖,则不能卸载,需要将对应的软件卸载后才能卸载当前软件。
【示例3-5】
#查找指定的安装包 [root@localhost Packages]# rpm -aq | grep rz lrzsz-0.12.20-43.el8.x86_64 #卸载软件包 [root@localhost Packages]# rpm -e lrzsz #卸载后命令不存在 [root@localhost Packages]# rz --version -bash: /usr/bin/rz: No such file or directory #无结果说明对应的软件包被成功卸载 [root@localhost Packages]# rpm -qa |grep rz #如软件之间存在依赖,则不能卸载,此时需要先卸载依赖的软件 [root@localhost ~]# rpm -e glibc-devel error: Failed dependencies: glibc-devel >= 2.2.90-12 is needed by (installed) gcc-4.8.5-11.el7.x86_64
上述示例演示了如何查找并卸载lrzsz软件。不幸的是卸载glibc-devel软件时因存在相应的软件依赖而卸载失败,此时需要首先卸载依赖的软件包。卸载软件包的参数说明如表3.5所示。
表3.5 卸载软件包参数说明
3.1.2 Yum软件包管理
RPM包管理器可以让用户不必经过编译就使用软件,但也存在不方便。当遇到软件包依赖问题时,RPM包管理器会中断当前安装,提示用户依赖的软件包。很明显这种方法使用起来非常不方便,特别是一些依赖性非常复杂的软件包。
为解决软件包依赖性问题,Red Hat公司又开发了一个新工具Yum(全称为Yellow dog Updater,Modified)。Yum工具工作依赖于一个源,源中包含了许多软件包和软件包的相关索引数据,通常位于网络上的主机中。当用户使用Yum工具安装软件包时,Yum将通过索引数据搜索软件包的依赖关系,再从源中下载软件包并安装。
当用户将系统注册到Red Hat网络后,系统将会自动配置源,因此无网络连接的计算机将无法使用Red Hat提供的源。为方便能从本地使用Yum工具安装软件包,用户可以使用安装光盘自建一个本地源。这种方法虽然能解决复杂的软件包依赖关系,但是无法通过Red Hat网络获取最新的软件包,以及获取最新Bug修正。
本节将采用光盘自建源的方式演示Yum工具的使用方法,同时强烈建议将系统注册到Red Hat网络,以解决系统安全性问题。
1.利用安装光盘建立源
使用安装光盘建立源需要将光盘挂载到目录,然后直接建立一个新的源即可,如示例3-6所示。
【示例3-6】
在dvd.repo文件中,方括号“[]”中是源的名称,该名称在所有源中必须是独一无二的,name字段表示源的描述信息。enable和gpgcheck分别表示启用源及是否对软件包执行gpg检查,该检查可以验证软件包是否经过Red Hat的签名,未签名的软件包可能会危害系统的稳定。baseurl和gpgkey表示源的路径和签名使用的密钥文件位置。
2.安装软件包
注册到Red Hat网络或建立源后,就可以使用yum命令安装软件包了,如示例3-7所示。
【示例3-7】
3.卸载软件包
同安装软件包时一样,使用yum命令卸载软件包只需将命令参数install换成remove即可,如示例3-8所示。
【示例3-8】
除了以上使用install、remove选项安装、卸载软件包外,yum命令还可以使用grouplist、groupinstall和groupremove列出、安装及卸载软件组。关于软件组的更多细节,读者可阅读相关文档,此处不做过多介绍。
3.1.3 使用图形化工具管理软件包
除了使用RPM和Yum工具管理软件包外,RHEL 8还提供了一个图形界面供用户管理软件包。需要注意的是图形界面管理软件仍然依赖于Yum的软件源,若系统中没有可用的软件源,图形界面中将无法安装软件。
在桌面的左上角依次选择【活动】|【显示应用程序】|【系统工具】|【软件】选项以打开软件管理界面,如图3.1所示。
在图形化软件包管理界面左上角的搜索框中输入需要安装的软件包名称,按Enter键管理器就会自动搜索软件包并将结果显示在右侧的界面中。此时选择需要的软件包名称,单击右下角的【安装软件包】按钮即可安装软件包。
图3.1 图形化软件包管理界面