Linux基础学习(十三)之软件管理

news/2024/12/29 6:13:04/

软件管理

  • 1、Linux中软件包的类型
  • 2、安装包的名称含义
  • 3、管理软件包命令rpm
  • 4、本地软件仓库的搭建
  • 5、软件管理命令dnf
  • 6、网络软件仓库的搭建
  • 6、epel源
  • 7、第三方软件仓库的搭建方法

1、Linux中软件包的类型

一般软件包的类型有三种:
1、DEB格式,支持优班图系统的
2、RPM格式,支持红帽系统的
3、压缩格式(gz/bz2/xz),压缩格式又分为两种,一种是绿色软件,即解压安装好后,可以直接使用;另一种是源码安装需要编译才可以使用。

2、安装包的名称含义

比如这个安装包dhcp-server-4.3.6-40.el8.x86_64.rpm,它表达什么含义呢?
分为五个部分,第一部分表示软件的名称叫dhcp-server,第二部分表示软件的版本为4.3.6-40,第三部分表示软件的授权协议版本为el8,第四部分表示软件的架构为x86_64,即64位的,第五部分表示软件后缀类型为rpm。

3、管理软件包命令rpm

(1)rpm -ivh 安装参数组合 -i (install) -v (verbose) -h (hash)
(2)rpm -a 所有
(3)rpm -f 文件
(4)rpm -p 软件包
(5)rpm -q 查询
(6)rpm -l 软件安装文件列表
(7)rpm -e 卸载
(8)rpm -c 配置文件
(9)rpm -d 说明
(10)rpm --info 软件信息
(11)rpm --force 强制
(12)rpm --nodeps 忽略依赖性
(13)rpm --script 查询软件在安装或卸载过程中的运行脚本
(14)rpm -Kv 检测软件md5校验码
(15)rpm -V 检测已安装软件在系统中的文件被修改信息
实验测试如下面一系列图:安装软件(我这里已经安装过了,所以显示已安装)、查询软件名字、查询所有并抓取dhcp、查询软件安装的文件列表
在这里插入图片描述
查询某一个文件属于哪个软件、查询配置文件、查询说明、卸载软件
在这里插入图片描述
--info需要和-q一起使用,可以查看软件的完整信息
在这里插入图片描述
假如不小心把某个软件的配置文件误删了,这时软件无法使用,想重新安装,会提示已经安装过了,无法安装,现在就需要--force强制安装
在这里插入图片描述
如下图,安装kolourpaint时提示依赖性失败,要先安装libs这个软件,但是安装libs这个软件时,提示依赖性失败,要先安装kolourpaint这个软件,这就很难受了,死循环。这时我们只能先--nodeps忽略依赖性先安装一个,才能安装另外一个。
在这里插入图片描述--scripts-q一起使用,可以查询软件在安装或卸载过程中的运行脚本,来判断是否是流氓软件。
在这里插入图片描述
假如6这个安装包是原本的,我们复制他改名字为7,并追加东西进去,这时7这个安装包就被篡改过了,使用-Kv时,原本6的安装包会显示校验通过,而改过的7安装包会显示BAD校验不通过。
在这里插入图片描述
假如安装好软件后,我们更改了某些配置文件,使用-V就可以查看被更改的地方。
在这里插入图片描述

4、本地软件仓库的搭建

上面学习了rpm来安装软件,我们发现软件有很多依赖性,安装A需要B,然而安装B又需要A,如果我们一个一个手动去把依赖性全下载下来,很累。那有没有一个办法下载某一个软件时,自动下载全部的依赖性呢?有的,我们需要安装软件仓库,就类似于手机的应用商店,直接在他里面下载软件,可以把依赖性一起安装。下面介绍搭建软件仓库的办法。
首先我们需要先把安装系统的镜像文件放在电脑里,如图,这里放在了/isos/,然后在根下创建一个新的目录叫westos,把镜像文件挂载到/westos上,现在westos里就有许多的软件包了。但是,系统不知道,那我们需要让系统知道,编写软件仓库的文件/etc/yum.repos.d/westos.repo来让系统知道软件仓库的指向文件来源。
在这里插入图片描述如图,编写的具体内容如下:由于有两个仓库AppStream和BaseOS,所以写了两个模块。先介绍第一个模块,第一行写的是仓库名称,第二行写的是描述,第三行写的是地址,第四行写的是授权认证(1代表开启,0代表关闭),如果授权认证开启了,那么就要多写认证的密钥,一般都在/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release,如果是没有开启,就不用写第五行的gpgkey了,第六行写的是该模块是否生效(1代表生效,0代表不生效),下一个模块同理。
在这里插入图片描述
编写完成后,如下图,使用dnf repolist查看软件仓库已经搭建成功。使用dnf install gcc -y 下载gcc来测试是否成功,显示成功,可以看到不仅下载了gcc,还把gcc的六个依赖性安装了。
在这里插入图片描述

5、软件管理命令dnf

(1)dnf repolist列出仓库信息
(2)dnf clean all清除系统中已经加载的仓库缓存信息
(3)dnf list all列出所有软件
(4)dnf list available列出未安装的软件
(5)dnf list installed列出已安装的软件
(6)dnf install安装
(7)dnf remove卸载
(8)dnf reinstall重新安装
(9)dnf search搜索
(10)dnf whatprovides搜索包含文件的软件包
(11)dnf historydnf 执行的历史
(12)dnf history info 9dnf执行历史中9的详细信息
(13)dnf group list列出软件组
(14)dnf group list --installed列出已安装软件组
(15)dnf group list --available列出未安装软件组
(16)dnf group list --hidden列出隐藏软件案组
(17)dnf group install安装软件组
(18)dnf group info查看软件组信息

实验如下图,软件仓库搭建好后,会缓存在/var/cache/dnf/里,如果dnf clean all就会清除系统中已经加载的仓库缓存信息。
在这里插入图片描述
安装或卸载软件时加-y,就会不提示直接执行。
在这里插入图片描述
使用dnf history查看dnf 执行的历史,如果想看具体的某一个,比如查看第九条,使用dnf history info 9查看详细信息。
在这里插入图片描述
dnf使用时会直接把软件下载好,假如我们想下载软件包怎么办呢?首先要dnf install yum-utils安装这个工具,使用yumdownloader gcc命令就可以把仓库中gcc的软件安装包下载到当前目录,使用yumdownloader gcc --destdir=/media命令就可以把仓库中gcc的软件安装包下载到指定的media这个目录,使用yumdownloader gcc --destdir=/media --resolve命令就可以把仓库中gcc的软件安装包和软件依赖性都下载到指定的media这个目录。
在这里插入图片描述

6、网络软件仓库的搭建

在企业中,我们维护的系统数量很庞大,当我们需要在每个系统安装软件管理软件时,可以在每个系统中各自搭建软件仓库,但是这样管理软件会浪费大量的资源。如何节省这部分重复的资源?需要在一个共用的主机里搭建可以共享的软件仓库,然后共享到网络上,这样大家就可以利用网络访问资源,不需要在每一台主机中独立建立软件资源了。
这个共享软件的名字叫Apache,提供的协议叫超文本传输协议http://,软件包的名称叫httpd,共享时不可能把主机的所有东西都共享,只是共享一部分,那么共享文件的位置在/var/www/html
搭建实验,首先在共用的主机里使用命令dnf install httpd -y安装httpd软件,然后如下图,关闭防火墙,开启httpd服务,我们建立一个目录名字叫rhel8.2,里面放要共享的镜像文件,把之前挂载到/westos的卸掉,重新挂载镜像到/var/www/html/rhel8.2/下,现在httpd服务就搭建好了,但是这个共享的主机每次关机再开机,挂载就掉了,我们需要每次开机都挂载吗?太麻烦了,我们可以在开机文件里/etc/rc.d/rc.local写入挂载语句,并给这个目录执行权限,那么就可以开机自动挂载了。
在这里插入图片描述
httpd是配置好了,现在共用的这个主机能下载软件吗?不可以!因为我们之前配置的软件源指向文件/etc/yum.repos.d/westos.repo里写的指向是/westos,而现在应该更改路径为/var/www/html/rhel8.2/,如下图。
在这里插入图片描述
那么共用的主机以外的其他没安装软件仓库的主机呢?现在用虚拟机a代表没安装软件仓库的主机,他们需要修改/etc/yum.repos.d/westos.repo这个配置文件,把file://(本地用这个)改为http://(网络用这个),并输入共用主机的ip下的路径,如下图。现在虚拟机a就可以使用共用主机的软件仓库来安装软件了!
在这里插入图片描述

6、epel源

如果想安装一些镜像里没有的软件,可以在网上下载epel包并安装,安装完成后,可以看到/etc/yum.repos.d目录下多了很多repo结尾的文件,这些文件的本质是指向一些网址,下载的时候去这个网址找资源下载,现在我们就可以安装想要的截图工具flameshot了。
在这里插入图片描述

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

假如上面的方法还是不够用,有些软件没有,我们在网上找到了他的rpm包,下载下来,想把他变成软件仓库,以后使用dnf管理方便,该怎么办呢?
实验如下,如下图,建立共享目录/var/www/html/software,这里第三方软件以linuxqq为例,放到了共享目录里,现在想用dnf管理他还是不可以的,为什么呢?因为建立的目录并不会直接是软件仓库,我们需要下载一个createrepo软件,使用createrepo -v .扫描当前的第三方软件,生成一个repodata的目录,该目录的作用就是读取数据时,直接找他里面的指引,这样速度快(如果读取一个一个的软件就很慢),现在software这个目录就是软件仓库了。
在这里插入图片描述在这里插入图片描述
想要dnf能读取到第三方软件仓库,需要编写配置文件/etc/yum.repos.d/westos.repo,内容如下图,增加了第三个模块。
在这里插入图片描述
补充1:当我们把原始的软件包删除了,dnf list去查看这个软件时,还是可以查到的,这是因为repodata这个文件还在,即软件的数据还在,可以查到。也就是说list这个查看根本不管软件在不在,只是看数据。但是install安装的时候就会报错了。
补充2:dnf为什么能解决依赖性,就是因为他已经提前把所有的依赖性加载到数据库了,需要的时候直接读取就可以。


http://www.ppmy.cn/news/402165.html

相关文章

第十二章:磁盘管理

管理交换分区 命令、功能 mkswap 分区设备名 将指定的分区格式化为swap交换文件系统 swapon 交换分区设备名 | -a 启用(或激活)指定的交换分区或所有交换分区 swapoff 交换分区设备名 | -a 禁用指定的交换分区或所有交换分区 swapon -s 查看交换分区的使用情况 fr…

27 日志服务管理

文章目录 27 日志服务管理本章内容日志介绍日志管理日志管理工具journalctl基于MYSQL的日志loganalyzer展示日志:php程序logrotate日志存储 1 系统日志管理1.1 系统日志介绍将系统和应用发生的事件记录至日志中,以助于排错和分析使用:日志记录…

Linux联网,自用

我怀疑是DHCP的问题,我的连接方式不是static,是DHCP 的方式,我主机的dhcp一直是开着的,我怀疑是虚机的dhcp没有打开导致的, 也有可以是主机dhcp需要重新启动,但是这种概率不大,我下周试试 能连…

Linux系统下,修改用户名、主机名、配置静态IP地址

1.修改用户名:将CentOS7系统中的“ third ”用户修改为“ csdn ”用户 1.1 进入root 用户下 ,修改 /etc/passwd 用户信息文件,将third 替换成 csdn vim /etc/passwd 1.2 修改 /etc/group 组信息文件,将third 替换成 csdn vim /e…

记录:CentOS安装配置MySQL8

目录 1、安装 MySQL81.1、安装 mysql 和 mysql-devel1.2、安装 mysql-server1.3、安装完成查看已安装的包1.4、重启mysql服务1.5 、查看初始化的密码1.6、登录MYSQL 2、安装完成后的配置2.1、修改密码2.2、修改密码规则2.3、开启用户远程访问2.4、Navicat测试连接 3、忘记密码怎…

基于Centos7系统搭建Redis集群之主从复制(新手教程)

最近没多少事,就想着搭建个redis集群玩玩,毕竟听起来也是很高大上的东西,但是经过自己的断断续续的搭建,也感觉不是那么难,肯定也只是刚刚入门,搭建的东西也比较简单,并没有触及到里面更深入的内…

【genius_platform软件平台开发】第七十二讲:linux系统驱动开发之-patchelf修改动态库链接器的方法

linux系统驱动开发之-patchelf修改动态库链接器的方法 1. patchelf 命令熟悉1.1 安装1.2 运行1.3 应用-使用自定义的动态库目录1.4 查看rpath信息1.5 设置rpath信息 2. 同名动态库修改应用2.1 第一个动态库文件2.2 应用程序2.3 第二个动态库文件2.4 使用patchelf 工具修改 1. p…

VMware启动时提示我已移动或我已复制该虚拟机

一、VMware启动时提示“我已移动该虚拟机”或“我已复制该虚拟机”,选择“我已复制该虚拟机” 1、如果选择 我已移动该虚拟机 的话网卡的MAC地址会保持不变: 因为始终只有一个MAC地址,不会造成冲突,所以虚拟机间通信没问题。 2、…