Linux 中的软件管理
1. Linux中软件包的类型
-
DEB #UBlinux DEBlinux ;
-
RPM #redhat centOS fadora ;可以直接安装,但是不能更改安装目录;
-
bz2 | gz | xz # 压缩包格式的
-
- 需要源码安装需要编译;
-
- 绿色软件,直接可用;
- ntfs-3g_ntfsprogs-2017.3.23.tgz 需要编译 "configure,检测环境,然后才能安装;
- Firefox-latest-x86_64.tar.bz2 绿色直接可以用,不用安装。
注意:在 rhel8 中只能使用绿色软件,源码编译软件和 rpm 软件。
2. 软件包的名称结构
[dhcp-server]-[4.3.6-30].[el8].[x86_64].[rpm]
1 2 3 4 5
1.软件名称
2.软件版本
3.软件的授权协议版本
4.软件架构
5.软件类型后缀
3. rpm命令管理软件包
命令 | 含义 |
---|---|
rpm -ivh | 安装参数组合 -i install -v verbose -h hash |
参数 | 含义 |
---|---|
-a | 所有 |
-f | 文件 |
-p | 软件包 |
-q | 查询 |
-l | 软件安装文件列表 |
-e | 卸载 |
-c | 配置文件 |
-d | 说明 |
–info | 软件信息 |
–force | 强制 |
–nodeps | 忽略依赖性 |
–scripts | 查询软件在安装或卸载过程中的运行脚本 |
-Kv | 检测软件md5校验码 |
-V | 检测已安装软件在系统中的文件被修改信息 |
如:
当输入命令 rpm -ivh dhcpd-server-4.3.6-40.el8.x86_64.rpm 时表示安装 dhcpd-server 这个软件;
输入命令 rpm -q dhcpd-server 表示查寻这个服务;
当输入命令 rpm -qpd dhcpd-server-4.3.6-40.el8.x86_64.rpm 表示查询这个软件包的说明;
当输入命令 rpm -qpc dhcpd-server-4.3.6-40.el8.x86_64.rpm 表示查询这个软件包的配置文件;
当系统已经安装一个软件时,但是这个软件的部分信息被误删除时,此时要是再安装会提示该软件已经被安装过;除了删除再安装之外还可以通过强制安装的方式安装;
如输入 rpm -ivh dhcpd-server-4.3.6-40.el8.x86_64.rpm --force 表示强制安装 dhcpd-server 这个软件;
输入命令 rpm -Kv dhcpd-server-4.3.6-40.el8.x86_64.rpm 时表示检测 dhcpd-server 这个软件的 md5 校验码;
输入命令 rpm -V dhcpd-server-4.3.6-40.el8.x86_64.rpm 时表示检测 dhcpd-server 这个软件在系统中的文件被修改信息;
如输入命令 rpm -ivh wps-office-11.1.0.10161-1.x86_64.rpm 时,由于这个软件有依赖性,不能直接安装;当输入 rpm -ivh wps-office-11.1.0.10161-1.x86_64.rpm --nodeps 表示忽略依赖性安装,这中方法虽然可以安装,但是安装成功之后并没有解决依赖性的问题,使用起来还是有问题。
4. 本地软件仓库的搭建
上述在一台主机中安装软件时需要先将安装包下载到本地主机中,如果当前有很多台主机都需要安装,每台都下载就显得浪费ie资源浪费ie时间。因此有本地软件库的搭建来解决这个问题。
- 系统软件仓库的作用
- 在系统中对软件进行管理;
- rpm 命令是不能解决依赖关系的;
- 如果需要软件在安装过程中自动解决依赖关系,需要搭建系统软件仓库。
搭建方法
- 在系统中加载安装系统时使用的安装镜像;先查看当前主机所使用的版本,然后找到相同版本的镜像;
在系统中新建一个目录,然后将系统中的镜像挂载到新建的目录中;如图中所示,新建的目录为 / westos ,将镜像挂载到这个目录上;
挂载完成之后可以输入命令 df 来查看挂载是否成功,如图中最后一行所示,表示已经挂载成功。
- 编写软件仓库文件
在企业 8 的版本中 /bin/yum 和 /bin/dnf 是一样的,最终指向一致。
编写配置文件,告诉系统镜像挂那里。
- 输入命令 cd /etc/yum.repos.d/ ,进入到该目录中;该目录为软件源指向文件配置目录,在此目录中不能有无法访问的源指向,如果有需要删除;
- 输入命令 vim westos.repo ,在该目录中编辑一个名称为 westos.repo 的文件,文件后缀名必须为 .repo ,否则不能识别;编写内容如图所示:
表示设置了两个软件仓库,第一个软件仓库名称为 [App] , name = AppStream 描述仓库; baseurl=file:///westos/AppStream ,表示访问软件库的地址,在 /westos /AppStream 中; gpgcheck=0 表示不检测 gpgkey, 其中参数 0 表示跳过授权检测;1 表示跳过授权检测; enabled=1 ,1 表示启用软件仓库,如果是 0 表示不启用。其中绿色的名称为为固定的写法。
- 在建立好本地软件仓库之后,安装 gcc 来测试本地软件库是否安装正确。
输入命令 dfn repolist 来查看仓库信息。
- 以上的 mount 挂载是临时的,重启之后就没有挂载。就需要设置开机启动挂载镜像。
输入命令 vim /etc/rc.d/rc.local 编辑配置文件,文件内容如图所示:
输入命令 sh /etc//rc.d/rc.local 运行编辑的文件,如图所示表示所编写的内容是正确的;
输入命令 chmod +x /etc//rc.d/rc.local 为该文件加上执行权限。
5. dnf 软件管理命令
在用 rpm 安装软件时,不能解决软件的依赖性问题;而 dnf 可以解决了安装软件时的软件依赖性的问题。
安装管理包
命令 | 含义 |
---|---|
dnf repolist | 列出仓库信息 |
dnf clean all | 清除系统中已经加载的仓库缓存信息 |
dnf list all | 列出所有软件 |
dnf list available | 列出未安装软件 |
dnf list installed | 列出已安装软件 |
dnf install | 安装 |
dnf remove | 卸载 |
dnf reinstall | 重新安装 |
dnf search | 搜索 |
dnf whatprovides | 搜索包含文件的软件包 |
dnf history | dnf执行历史 |
dnf history info | dnf执行历史信息 |
对于软件组不能进行管理,不能删除也不能增加。
命令 | 含义 |
---|---|
dnf group list | 列出软件组 |
dnf group list --installed | 列出已安装软件组 |
dnf group list --available | 列出未安装软件组 |
dnf group list --hidden | 列出隐藏软件案组 |
dnf group install | 安装软件组 |
dnf group info | 查看软件组信息 |
输入命令 dnf list httpd 列出 httpd 的信息;
输入命令 dfn repolist 来查看仓库信息;
输入命令 dnf history 查看 dnf 执行历史;
输入命令 dnf history info 6 来查看 dnf 执行历史信息的第 6 命令的信息;
输入命令 dnf whatprovides /bin/ls 查看包含该文件的软件包;
输入命令 dnf info httpd 查看 httpd 的信息;
输入命令 dnf group list 列出软件组;
下载安装包
在本地软件库大减号之后,在用本地软件库安装软件的时候,虽然可以安装,但是安装之后没有安装包;那么接下来的设置就是为了能够下载安装包。
先用命令 dnf whatprovides */yumdownloader 查看这个软件的位置,然后输入命令 dnf install yum-utils-4.0.12-3.el8.noarch 将其安装在当前主机上。
yumdownloader 命令的用法
命令 | 含义 |
---|---|
yumdownloader httpd | 下载仓库中指定软件的安装包到当前目录 |
yumdownloader --destdir=/mnt | 下载仓库中指定软件的安装包到指定/mnt目录 |
yumdownloader httpd --destdir=/mnt --resolve | 下载仓库中指定软件安装包和软件依赖性到/mnt目录 |
在 /mnt/ 中输入命令 yumdownloader httpd 即可下载 httpd 软件包到当前目录;
输入命令 yumdownloader httpd --destdir=/opt ,即可下载 httpd 到指定的目录 /opt;
6. 网络软件仓库的搭建
上面虽然已经搭建好软件仓库,但是别人是无法访问的,因此我们需要将软件库共享出来,也就是网络软件库的搭建。
在企业中,我们维护的系统数量庞大,当我们需要在每个系统安装软件管理软件时,可以在每个系统中各自搭建软件仓库,但是这样管理软件会浪费大量的资源。
如何节省这部分重复的资源, 需要把大家都要使用的资源共享到互联网中,这样大家就可以利用网络访问资源,不需要在每一台主机中独立建立软件资源了。
搭建方法
-
利用镜像搭建本地软件仓库,在上面的实验中已经搭建好了,此处便不在赘述;
-
安装共享软件,在系统中输入命令 dnf install httpd -y 来安装共享软件;
#共享方式http:// 超文本传输协议
#提供此协议的软件 Apache
#软件包名称 httpd
#共享位置 /var/www/html
#安装命令 dnf install httpd -y
- 启用共享软件Apache,输入以下命令来开启 httpd;
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl enable --now httpd
- 建立共享目录
# mkdir /var/www/html/westos-zxk
- 挂在景象到共享目录
# umount /westos
# mount /var/lib/libvirt/images/rhel-8.2-x86_64-dvd.iso /var/www/html/westos-zxk
# vim /etc/rc.d/rc.local ,编辑配置文件如下,开机自动挂载
#chmod +x /etc/rc.d/rc.local ,给配置文件以执行的权限
- 在远程主机中编辑配置文件如图所示, 192.168.122.1 为共享软件的 ip
设置好之后,便可在远程主机中访问共享的软件库。
7. 第三方软件仓库的搭建方法
以上的虽然搭建了本地软件库,也共享了本地软件库,但是共享的都是针对官方授权的软件进行管理;而在工作中肯定不会只应用官方授权的软件,第三方软件就需要以下的方式来共享。
可以使用dnf命令管理第三方软件
并使第三方软件在网络*享
步骤
-
启用共享软件Apache,输入以下命令来开启 httpd;
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl enable --now httpd -
建立共享目录
# mkdir /var/www/html/software -
把需要共享的所有的第三方软件存放到 /var/www/html/software 中
# /var/www/html/software中只能存在rpm类型的文件,压缩包是不能使用dnf管理的 -
采集第三方软件数据生成 repodate 目录
#dnf install createrepo -y 安装采集工具
#cd /var/www/html/software 进入到共享目录
#createrepo -v 对共享目录中进行扫描生成repodate数据目录
如图所示,里面有压缩包格式,将其删除之后; 安装 createrepo 数据采集工具,然后对共享目录中进行扫描生成 repodate 数据目录;如下图所示,当蓝色的 repodate 生成时,就表明数据目录已经设置成功;
- 在测试主机中指定第三方共享源,编辑配置文件 vim /etc/yum.repos.d/westos.repo ,配置内容如下:
在做好以上操作之后,在远程主机中便可以安装第三方软件;还可以根据前面的操作来下载第三方软件的安装包。
如在远程主机中安装 linuxqq 时,如下所示:
表示第三方软件库搭载成功,软件安装也可以了。