Linux 中的软件管理

Linux 中的软件管理

1. Linux中软件包的类型

  1. DEB #UBlinux DEBlinux ;

  2. RPM #redhat centOS fadora ;可以直接安装,但是不能更改安装目录;

  3. bz2 | gz | xz # 压缩包格式的

    1. 需要源码安装需要编译;
    1. 绿色软件,直接可用;
  • 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 表示查寻这个服务;

Linux 中的软件管理
当输入命令 rpm -qpd dhcpd-server-4.3.6-40.el8.x86_64.rpm 表示查询这个软件包的说明;
当输入命令 rpm -qpc dhcpd-server-4.3.6-40.el8.x86_64.rpm 表示查询这个软件包的配置文件;

Linux 中的软件管理

当系统已经安装一个软件时,但是这个软件的部分信息被误删除时,此时要是再安装会提示该软件已经被安装过;除了删除再安装之外还可以通过强制安装的方式安装;
如输入 rpm -ivh dhcpd-server-4.3.6-40.el8.x86_64.rpm --force 表示强制安装 dhcpd-server 这个软件;

Linux 中的软件管理

输入命令 rpm -Kv dhcpd-server-4.3.6-40.el8.x86_64.rpm 时表示检测 dhcpd-server 这个软件的 md5 校验码;

Linux 中的软件管理
输入命令 rpm -V dhcpd-server-4.3.6-40.el8.x86_64.rpm 时表示检测 dhcpd-server 这个软件在系统中的文件被修改信息;

Linux 中的软件管理
如输入命令 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 表示忽略依赖性安装,这中方法虽然可以安装,但是安装成功之后并没有解决依赖性的问题,使用起来还是有问题。
Linux 中的软件管理

4. 本地软件仓库的搭建

上述在一台主机中安装软件时需要先将安装包下载到本地主机中,如果当前有很多台主机都需要安装,每台都下载就显得浪费ie资源浪费ie时间。因此有本地软件库的搭建来解决这个问题。

  • 系统软件仓库的作用
    1. 在系统中对软件进行管理;
    2. rpm 命令是不能解决依赖关系的;
    3. 如果需要软件在安装过程中自动解决依赖关系,需要搭建系统软件仓库。

搭建方法

  1. 在系统中加载安装系统时使用的安装镜像;先查看当前主机所使用的版本,然后找到相同版本的镜像;
    在系统中新建一个目录,然后将系统中的镜像挂载到新建的目录中;如图中所示,新建的目录为 / westos ,将镜像挂载到这个目录上;

Linux 中的软件管理
挂载完成之后可以输入命令 df 来查看挂载是否成功,如图中最后一行所示,表示已经挂载成功。

Linux 中的软件管理

  1. 编写软件仓库文件
    在企业 8 的版本中 /bin/yum 和 /bin/dnf 是一样的,最终指向一致。
    Linux 中的软件管理
    编写配置文件,告诉系统镜像挂那里。
  • 输入命令 cd /etc/yum.repos.d/ ,进入到该目录中;该目录为软件源指向文件配置目录,在此目录中不能有无法访问的源指向,如果有需要删除;
  • 输入命令 vim westos.repo ,在该目录中编辑一个名称为 westos.repo 的文件,文件后缀名必须为 .repo ,否则不能识别;编写内容如图所示:

Linux 中的软件管理
表示设置了两个软件仓库,第一个软件仓库名称为 [App] , name = AppStream 描述仓库; baseurl=file:///westos/AppStream ,表示访问软件库的地址,在 /westos /AppStream 中; gpgcheck=0 表示不检测 gpgkey, 其中参数 0 表示跳过授权检测;1 表示跳过授权检测; enabled=1 ,1 表示启用软件仓库,如果是 0 表示不启用。其中绿色的名称为为固定的写法。

  • 在建立好本地软件仓库之后,安装 gcc 来测试本地软件库是否安装正确。

Linux 中的软件管理

输入命令 dfn repolist 来查看仓库信息。

Linux 中的软件管理

  • 以上的 mount 挂载是临时的,重启之后就没有挂载。就需要设置开机启动挂载镜像。
    输入命令 vim /etc/rc.d/rc.local 编辑配置文件,文件内容如图所示:

Linux 中的软件管理

输入命令 sh /etc//rc.d/rc.local 运行编辑的文件,如图所示表示所编写的内容是正确的;
输入命令 chmod +x /etc//rc.d/rc.local 为该文件加上执行权限。

Linux 中的软件管理

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 的信息;

Linux 中的软件管理
输入命令 dfn repolist 来查看仓库信息;

Linux 中的软件管理
输入命令 dnf history 查看 dnf 执行历史;

Linux 中的软件管理
输入命令 dnf history info 6 来查看 dnf 执行历史信息的第 6 命令的信息;

Linux 中的软件管理
输入命令 dnf whatprovides /bin/ls 查看包含该文件的软件包;

Linux 中的软件管理
输入命令 dnf info httpd 查看 httpd 的信息;

Linux 中的软件管理
输入命令 dnf group list 列出软件组;

Linux 中的软件管理

下载安装包

在本地软件库大减号之后,在用本地软件库安装软件的时候,虽然可以安装,但是安装之后没有安装包;那么接下来的设置就是为了能够下载安装包。

先用命令 dnf whatprovides */yumdownloader 查看这个软件的位置,然后输入命令 dnf install yum-utils-4.0.12-3.el8.noarch 将其安装在当前主机上。

Linux 中的软件管理
yumdownloader 命令的用法

命令 含义
yumdownloader httpd 下载仓库中指定软件的安装包到当前目录
yumdownloader --destdir=/mnt 下载仓库中指定软件的安装包到指定/mnt目录
yumdownloader httpd --destdir=/mnt --resolve 下载仓库中指定软件安装包和软件依赖性到/mnt目录

在 /mnt/ 中输入命令 yumdownloader httpd 即可下载 httpd 软件包到当前目录;
输入命令 yumdownloader httpd --destdir=/opt ,即可下载 httpd 到指定的目录 /opt;

Linux 中的软件管理

6. 网络软件仓库的搭建

上面虽然已经搭建好软件仓库,但是别人是无法访问的,因此我们需要将软件库共享出来,也就是网络软件库的搭建。

在企业中,我们维护的系统数量庞大,当我们需要在每个系统安装软件管理软件时,可以在每个系统中各自搭建软件仓库,但是这样管理软件会浪费大量的资源。
如何节省这部分重复的资源, 需要把大家都要使用的资源共享到互联网中,这样大家就可以利用网络访问资源,不需要在每一台主机中独立建立软件资源了。

搭建方法

  1. 利用镜像搭建本地软件仓库,在上面的实验中已经搭建好了,此处便不在赘述;

  2. 安装共享软件,在系统中输入命令 dnf install httpd -y 来安装共享软件;

    #共享方式http:// 超文本传输协议
    #提供此协议的软件 Apache
    #软件包名称 httpd
    #共享位置 /var/www/html
    #安装命令 dnf install httpd -y

Linux 中的软件管理

  1. 启用共享软件Apache,输入以下命令来开启 httpd;
    # systemctl stop firewalld
    # systemctl disable firewalld
    # systemctl enable --now httpd

Linux 中的软件管理

  1. 建立共享目录
    # mkdir /var/www/html/westos-zxk

Linux 中的软件管理

  1. 挂在景象到共享目录
    # 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 ,编辑配置文件如下,开机自动挂载

Linux 中的软件管理

#chmod +x /etc/rc.d/rc.local ,给配置文件以执行的权限

  1. 在远程主机中编辑配置文件如图所示, 192.168.122.1 为共享软件的 ip

Linux 中的软件管理
设置好之后,便可在远程主机中访问共享的软件库。

Linux 中的软件管理

7. 第三方软件仓库的搭建方法

以上的虽然搭建了本地软件库,也共享了本地软件库,但是共享的都是针对官方授权的软件进行管理;而在工作中肯定不会只应用官方授权的软件,第三方软件就需要以下的方式来共享。

可以使用dnf命令管理第三方软件
并使第三方软件在网络*享

步骤

  1. 启用共享软件Apache,输入以下命令来开启 httpd;
    # systemctl stop firewalld
    # systemctl disable firewalld
    # systemctl enable --now httpd

  2. 建立共享目录
    # mkdir /var/www/html/software

  3. 把需要共享的所有的第三方软件存放到 /var/www/html/software 中
    # /var/www/html/software中只能存在rpm类型的文件,压缩包是不能使用dnf管理的

  4. 采集第三方软件数据生成 repodate 目录
    #dnf install createrepo -y 安装采集工具
    #cd /var/www/html/software 进入到共享目录
    #createrepo -v 对共享目录中进行扫描生成repodate数据目录

Linux 中的软件管理
Linux 中的软件管理

如图所示,里面有压缩包格式,将其删除之后; 安装 createrepo 数据采集工具,然后对共享目录中进行扫描生成 repodate 数据目录;如下图所示,当蓝色的 repodate 生成时,就表明数据目录已经设置成功;

Linux 中的软件管理

  1. 在测试主机中指定第三方共享源,编辑配置文件 vim /etc/yum.repos.d/westos.repo ,配置内容如下:

Linux 中的软件管理
在做好以上操作之后,在远程主机中便可以安装第三方软件;还可以根据前面的操作来下载第三方软件的安装包。

如在远程主机中安装 linuxqq 时,如下所示:

Linux 中的软件管理
表示第三方软件库搭载成功,软件安装也可以了。

上一篇:centos7:dnf学习


下一篇:hexo博客搭建