Linux系统中的软件管理详解(下)
5、软件仓库管理命令
a)dnf 命令: 管理软件仓库中的安装包
dnf repolist ##列出仓库信息
clean all ##清除系统中已经加载的仓库缓存信息
list all ##列出所有软件
list available ##列出未安装软件
list installed ##列出已安装软件
install ##安装
remove ##卸载
reinstall ##重新安装
search ##搜索
whatprovides ##搜索包含文件的软件包
history ##dnf执行历史
history info ##dnf执行历史详细信息
group list ##列出软件组
group list --installed ##列出已安装软件组
group list --available ##列出未安装软件组
group list --hidden ##列出隐藏软件组
group install ##安装软件组
group info ##查看软件组信息
实验步骤:
1)查看软件仓库中所有/已安装/未安装软件包并统计各自数量
2)从软件仓库中安装/重新安装gcc,卸载gcc
3)搜索软件仓库中提供dhcp服务的软件包
4)删除/bin/rm,即删除掉系统的rm命令后,可以通过dnf whatprovides rm
命令,在软件仓库中找到rm命令的软件包,安装后就能够再次使用rm命令
5)查看dnf执行历史及第8条执行历史的详细信息
6)查看软件仓库中所有/已安装/未安装/隐藏软件组并统计各自数量
b)yumdownloader命令:下载软件仓库中的安装包
yumdownloader #下载软件包到本机指定位置
yumdownloader httpd #下载仓库中指定软件的安装包到当前目录
yumdownloader --destdir=/mnt #下载仓库中指定软件的安装包到指定/mnt目录
yumdownloader httpd --destdir=/mnt --resolve
#下载仓库中指定软件安装包和软件依赖性到/mnt目录
实验步骤:
1)想要使用yumdownloader命令下载软件仓库中的安装包,必须先安装提供该命令的软件yum-utils
2)下载仓库中gcc软件安装包和软件依赖性到/mnt目录
c)软件仓库黑白名单设置:修改yum配置文件
实验步骤:
1)dnf list all
查看软件仓库里所有软件,里面包括 .x86_64和 . i686两种架构的软件,其中.x86_64表示该软件适用于64位的操作系统, . i686表示该软件适用于32位的操作系统,修改/etc/yum.conf
配置文件可以设置软件仓库黑白名单
2)添加下图所示语句,该条语句表示将软件仓库中 . i686架构的软件加入黑名单
3)再次dnf list all
查看软件仓库里所有软件,里面只包括 .x86_64架构的软件
6、网络软件仓库的搭建
我们在真实主机中已经搭建好的软件仓库,在另一台主机中是无法访问的。特别是在企业中,我们需要维护的系统数量庞大,当我们需要在每个系统安装软件管理软件时,可以在每个系统中各自搭建软件仓库,但是这样管理软件会浪费大量的资源。为了节省这部分重复的资源,需要把大家都要使用的资源共享到互联网中,这样大家就可以利用网络访问资源,不需要在每一台主机中独立建立软件资源了。具体的网络仓库搭建方法如下:
实验步骤:
1)安装共享软件:我们需要采用http:// 超文本传输协议这种共享方式来搭建网络仓库,提供此协议的软件是Apache,该软件的软件包名称为httpd,可以使用dnf install httpd -y
命令在真实主机中安装httpd,安装完成后访问真实主机IP:172.25.254.33可以看到Apache界面
2)关闭真实主机防火墙,启用共享软件Apache:Apache的共享位置为/var/www/html,即向网络中其他用户共享该目录下的内容,我们可以在这个目录下编写一个html文件,测试Apache软件是否成功启用
3)在共享位置/var/www/html下建立共享目录 /rhel8.2,挂载镜像到该共享目录中,接着编写/etc/rc.d/rc.local
文件,设置镜像在开机时自动挂载并赋予该文件可执行权限,通过df 命令可以看到镜像挂载成功,此时访问172.25.254.33/rhel8.2可以看到共享目录中的内容
4)修改软件仓库指向文件( . repo文件),更改其软件源地址:对于共享主机,其软件源寻址方式有 file:// 和 http:// 两种;对于远程主机,其软件源寻址方式只有 http:// 这一种
7、epel源(仓库)的使用
在我们需要下载本地软件源中没有的第三方软件时,可以使用epel源。epel是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目,即官方的软件仓库。具体使用方法如下:
实验步骤:
1)安装epel-release的软件包,这个软件包会自动为我们配置软件仓库
2)安装完成后列出仓库信息可以看到epel软件源,利用这一软件源可以自动在网络中查找、安装本地软件源中没有的软件包,如kolo、flameshot
3)删除epel仓库,删除后可以看到软件源指向文件配置目录中,epel相关的软件仓库指向文件也会自动删除
8、第三方软件仓库的搭建方法
下载本地软件源中没有的第三方软件后,我们可以使用dnf命令管理这些第三方软件,并使第三方软件在网络中共享,即再搭建一个第三方软件仓库。具体搭建方法如下:
实验步骤:
1)建立共享目录/var/www/html/software,把所有的第三方软件存放到/var/www/html/software中,如Linuxqq。在软件源指向文件/etc/yum.repos.d/xxxx.repo
中指定第三方共享源,此时仍无法安装Linuxqq,这是因为该第三方软件仓库与官方的AppStream、BaseOS不同,dnf会将官方软件仓库中所有软件包的元数据预加载到/var/cache/dnf这个仓库信息目录中,生成repodata数据目录(repod.xml文件),执行dnf命令时,dnf不会去真正搜索这个软件包,而是扫描repodata数据目录中的这些元数据。 而我们建立的第三方软件仓库是没有对应的repodata数据目录的,因此无法所搜到相应的软件包元信息,不能安装第三方软件。
注意: /var/www/html/software中只能存在rpm类型的文件,压缩包是不能使用dnf命令管理的
2)为了解决上述问题,我们需要利用epel软件仓库下载安装一个采集第三方软件数据生成repodate目录的采集工具createrepo,安装完成后进入到共享目录/var/www/html/software,使用命令createrepo .
对共享目录进行扫描生成repodate数据目录
注意: 在扫描时,软件源指向文件/etc/yum.repos.d/xxxx.repo
中第三方软件源语句块中enabled=0
,否则无法成功扫描
3)扫描完成后在主机中指定第三方共享源,令enabled=1
,此时可以成功访问/var/www/html/software这一共享目录,且可以成功安装Linuxqq,第三方软件仓库搭建完成