Linux系统中的软件管理
1 Linux中软件包的类型
类型 | 含义 |
---|---|
DEB | 适用于 UBlinux DEBlinux |
RPM | 适用于 redhat centOS fadora |
bz2/gz/xz | 有两种类型:需要源码安装需要编译;绿色软件,直接可用 |
注意:
- 需要源码安装需要编译类的软件:先对相应的软件进行解压缩,解压后进入该文件生成的目录,可以看到有一个叫Read me 的文件,该文件中记录了该软件的安装方式
1)“./configure”:检测软件的安装环境
2)make
3)make install
4) make uninstall:卸载 - 绿色软件,直接可用类的软件:只需要 相对应的格式进行解压,解压完成后,会产生对应的脚本,直接去输入“./脚本名”,该软件就可以正常运行了
- 在rhel8中只能使用绿色软件,源码编译软件和rpm软件
2 软件包的名称结构
以dhcp-server软件为例:[dhcp-server]-[4.3.6-30].[el8].[x86_64].[rpm]
结构 | 含义 |
---|---|
dhcp-server | 软件名称 |
4.3.6-30 | 软件版本 |
el8 | 软件的授权协议版本 |
x86_64 | 软件架构 |
rpm | 软件类型后缀 |
3 rpm命令管理软件包
rpm命令的参数 | 含义 |
---|---|
-ivh | 安装参数组合 -i install -v verbose -h hash |
-a | 所有 |
-f | 文件;rpm -qf 文件, 查询某文件属于哪个安装包 |
-p | 软件包;在企业七之前的版本里,查询一个安装包时,前面要加p参数, rmp -pq 安装包,现在企业八里面,加不加p都可以 |
-q | 查询 |
-e | 卸载 |
-c | 查看某个软件的配置文件 |
-l | 软件安装文件列表,即软件安装完后,会产生什么样的文件 |
-d | 说明,查看帮助文件 |
- -info | 软件信息;该参数可以在前面写-i,或者在最后加上- -info |
- -force | 软件安装一次后,想再安装一次,系统会提示,已经安装过不能再安装。当软件包里的文件丢失时,想要恢复它,可以使用该参数强制再安装一次 |
–nodeps | 忽略依赖性 |
–script | 查询软件在安装或卸载过程中的运行脚本,可以用于检测软件 |
-Kv | 检测软件md5校验码;使用该参数时,可以看到该软件md5校验玛为ok。篡改:比如说在该软件包里追加了一份文件,此时再用该参数去校验,会失败,表示软件被篡改,不属于原厂软件 |
-V | 检测已安装软件在系统中的文件被修改信息 |
1)查询软件:
查询所有软件:
查询软件包:
查询软件所安装的文件:
查询该文件属于哪个安装包:
查询软件包所安装的文件:
查询该软件的配置文件:
查看该软件的帮助文件:
2)查询软件信息:
查询软件信息:
3)强制安装已安装过的软件:
4)检测软件md5校验码:
检测已安装软件在系统中的文件被修改信息:
注意:
- 当下载软件时,软件是有依赖性的,可以使用上面的–nodeps参数去忽略依赖性,然后进行下载,但是下载完成后,软件是无法使用的,所以必须要解决依赖性的问题
- 依赖性是指下载a软件需要下载b软件,下载b软件需要下载c软件,下载c软件需要下载a软件,形成一个死循环,如下图所示error后面显示的就是软件的依赖性:
- 要解决依赖性,需要dnf命令,在企业八之前也叫yum,在企业八中,既有yum也有dnf命令,但实际上查看 /bin/yum 里面的内容是个链接,直接链接到dnf,所以他们本质上还是一样的,如下图:
4 本地软件仓库的搭建
4.1 系统软件仓库的作用
- 在系统中对软件进行管理
- rpm命令是不能解决依赖关系的,如果需要软件在安装过程中自动解决依赖关系,需要搭建系统软件仓库
- 当有网络时,可以进入阿里云或官方去找软件仓库,以阿里云为例可以www.aliyun.com–>开放者–>镜像战–>centos–>在里面找需要的文件,然后按照其做法即可
- 当无网络时,可以采用镜像文件搭建本地仓库,注意使用镜像文件时系统版本和镜像文件的版本必须相同
- 当镜像文件版本和系统版本不同时,可以选择去官网找到匹配的镜像文件,也可以设置一个和已有镜像版本相同的虚拟机进行实验
- 可以使用u盘,右击选择第一个直接挂载;也可以建立一个目录,把它挂载到该目录下,比如 mkdir /lhy ; mount 镜像文件 /lhy/
- 进入镜像文件,ls查看,其中appstream是应用软件、baseos是基础组件
- 搭建软件仓库必须在该目录下cd /etc/yum.repos.d/
4.2 搭建方法
1)在系统中加载安装系统时使用的安装镜像:
进入镜像文件查看:
2)编写软件仓库文件:
命令 | 含义 |
---|---|
/etc/yum.repos.d/ | 软件源指向文件配置目录,在此目录中不能有无法访问的源指向 |
vim /etc/yum.repos.d/xxxx.repo | 软件仓库指向文件,xxxx处文件名自定义 |
3)编辑文件内容:
注意:
- name=AppStream,存放软件的文件名
- baseurl=要访问的路径,即 file:// (写完该地址后,可以输入 curl +地址,查看地址是否可以访问,不能访问时会显示不能打开,可以时没有报错;或者复制到浏览器也查看)
- gpgcheck=0 表示在发布系统时,要签订协议,如果系统安装完成后,用户安装了未经授权的第三方软件,出现问题后概不负责;如何看软件是否是授权过的,若该值为1,表示安装软件时会做授权检测,没有授权的软件会被拒绝;若该值为0,表示不会去检测该软件是否经过授权
- enabled=1,表示仓库启用,=0表示不启用(默认的值是1,也就是说该值可以不写)
- 可以一次在文件中配置多个仓库,方法一样
3)把之前读取过的信息清理dnf clean all ,实际上清理的是/var/cache/dnf文件:
4)使用dnf从软件仓库里安装gcc软件:
删除该软件:
5)启动开机镜像挂载。手动挂载后,系统重启挂载就会消失。所以可以把挂载命令写道开机自运行脚本里面,即编辑 vim /etc/rc.d/rc.local ,把挂载指令复制到该文件,然后 sh /etc/rc.d/rc.local 执行该文件。最后必须给该文件一个可执行权限,即chmod +x /etc/rc.d/rc.local,这样就可以启动开机镜像挂载:
文件为编辑时的内容:
5 dnf 软件管理命令
5.1 安装包管理
dnf命令的参数 | 含义 |
---|---|
repolist | 列出仓库信息 |
clean all | 清除系统中已经加载的仓库缓存信息。清除的实际文件是/var/cache/dnf里的内容。删除的目的是为了让系统在识别的时后可以识别到新的源 |
list all | 列出所有软件 |
list available | 列出未安装软件 |
list installed | 列出已安装软件 |
install | 安装,安装和卸载时加-y参数可以避免互动 |
remove | 卸载 |
reinstall | 重新安装 。同rpm命令的安装一样也是安装过,再使用install安装会提示已安装,所以可以使用该命令 |
search | 搜索 |
whatprovides | 搜索包含文件的软件包。同rpm 查文件属于哪一个安装包是一样的 ,dnf whatprovides /bin/ls |
history | dnf执行历史 |
history info | dnf执行历史详细信息。后面加history里面显示的数字,还可以 dnf info 软件名 |
group list | 列出软件组 |
group list --installed | 列出已安装软件组 |
group list --available | 列出未安装软件组 |
group list --hidden | 列出隐藏软件案组 |
group install | 安装软件组 。后面加一个组名,用双引号引起来,会安装一个组的所有组件 |
group info | 查看软件组信息。后面加组的名称 |
group remove | 卸载组 |
1)列出仓库信息:
清理系统中已经加载的仓库缓存信息:
列出所有软件:
2)安装软件:
安装已安装的软件,显示不同再次安装:
重新安装:
删除该软件并不交互:
3)搜索:
搜索包含文件的软件包:
4)dnf执行历史:
dnf执行历史第三条的详细信息:
5)列出软件组:
列出已安装软件组:
列出隐藏软件组:
查看软件组信息:
5.1 下载安装包
用dnf install 软件名 这种方式安装一个软件,安装完后,是没有软件包的。当不需要安装,只下载时,用该参数。查找yumdownloader命令软件包的位置等信息可以使用: dnf whatprovides */yumdownloader
命令 | 参数 |
---|---|
yumdownloader | 载软件包到本机指定位置 |
yumdownloader httpd | 下载仓库中指定软件的安装包到当前目录 |
yumdownloader httpd --destdir=/mnt | 下载仓库中指定软件的安装包到指定/mnt目录 |
yumdownloader httpd --destdir=/mnt --resolve | 下载仓库中指定软件安装包和软件依赖性到/mnt目录 |
注意:前面两种方法下载是无法将软件的依赖性也下载的,最后一种方法可以
1)查找yumdownloader命令软件包:
下载该软件包:
2)下载仓库中指定软件的安装包到当前目录:
下载仓库中指定软件的安装包到指定/mnt目录:
下载仓库中指定软件安装包和软件依赖性到/mnt目录:
6 网络软件仓库的搭建
在一台主机中已经搭建好软件仓库,在其他主机中是无法访问的。在企业中,我们维护的系统数量庞大,当我们需要在每个系统安装软件管理软件时,可以在每个系统中各自搭建软件仓库。但是这样管理软件会浪费大量的资源,如何节省这部分重复的资源。需要把大家都要使用的资源共享到互联网中,这样大家就可以利用网络访问资源,不需要在每一台主机中独立建立软件资源了。
1)利用景象搭建本地软件仓库,见前面本地软件仓库搭建
2)安装共享软件,,用于提供超文本传输协议,共享文件:
- 共享方式:http:// 超文本传输协议
- 提供此协议的软件: Apache
- 软件包名称:httpd
- 共享位置:/var/www/html
- 安装命令:在westos_node1: dnf install httpd -y
3)启用共享软件Apache,使用下面前两条任意一个命令关闭防火墙,然后打开httpd,该服务开了的效果是,可以通过网页的形式来访问这台主机:
4)建立共享目录,并非把整个系统共享出去,而是共享特定目录下的文件:
5)挂载镜像到共享目录:
6)在远程主机中访问资源并书写repo文件:
7)开启镜像文件开机自动挂载:
7 第三方软件仓库的搭建方法
之前建立的软件仓库是官方授权了的软件,现在第三方软件仓库是用来存放未授权过的软件。可以使用dnf命令管理第三方软件,并使第三方软件在网络中共享。注意,该仓库中只能存在rpm类型的文件,压缩包是不能使用dnf管理的
1)同本地仓库搭建一样,安装httpd,关火墙,开httpd协议
2)建立共享目录,把第三方软件到考到共享目录里,此时进入网页看到自己的软件。但它还不是一个软件仓库,需要进行数据采集
3)采集第三方软件数据生成repodate目录
- 安装采集工具:dnf install createrepo -y
- 进入到共享目录:cd /var/www/html/software
- 对共享目录中进行扫描生成repodate数据目录:createrepo -v /var/www/html/software
- 扫描完成后,查看,该目录下会生成一个 repodata文件,里面存放数据,可以说生成这个文件就是软件仓库的标识,此时就可使用了
4)在测试主机中指定第三方共享源