【Linux操作系统基础】第八章 Linux中的软件管理

目录

一、linux中软件包的类型

软件包类型:

二、软件包的名称结构

三、 rpm命令管理软件包

-ivh安装

-qa查看所有已安装软件

 -ql查看软件安装文件列表​编辑

 -qf查看/mnt/在哪个软件里​编辑

 -qc查看软件的配置文件​编辑

 -qd查看软件说明​编辑

 --info查看软件相关信息​编辑

-qp 查询软件包 -qpl 查询该软件包如果在系统安装之后会产生哪些文件

--scripts 查询软件在安装或卸载过程中的运行脚本

-Kv检测软件md5校验码

四、本地软件仓库的搭建

挂载镜像到自建的目录上

westos.repo文件编写

dnf install命令测试

五、构建共享型网络软件仓库

安装httpd软件

共享本机镜像

修改westos.repo文件内容

测试

开机自动挂载镜像

六、软件仓库管理命令dnf的使用

dnf repolist列出仓库信息

 dnf clean all清除系统已经识别的信息

dnf list 重新加载系统已识别的信息

dnf list all 列出所有软件

dnf list installed 列出已经安装的软件 

dnf list available 列出未安装的软件

dnf install 安装软件  -y强制安装不提示

 dnf reinstall 重新安装

dnf remove 卸载

dnf search 搜索

 dnf whatprovides 查找包含文件的软件包

 dnf history 查看软件安装或卸载历史

dnf history info 查看特定历史的详细信息

dnf group list 查看所有未隐藏的软件组

dnf group list  “ ”  查看特定未隐藏的软件组

dnf group install “ ”  安装软件组

dnf group list --hidden  查看隐藏软件组

--downloadonly 下载软件包

--destdir 指定下载的软件包存放的位置

七、epel拓展源的安装及使用

阿里云下载epel镜像

测试

 删除epel源

八、手动解决软件仓库中的依赖性缺失

九、 第三方软件仓库的搭建

将ansible的安装包下载到ansible目录中

将手动解决依赖性sshpass也放进ansible目录中

 可以在浏览器访问该目录

将主机变为内部主机

指定该主机从内网寻找ansible软件

由于ansible仓库不可用,暂时停用

安装createrepo软件

 开启ansible仓库

ansible仓库搭建完毕

总结:构建ansible共享软件仓库的步骤


一、linux中软件包的类型

首先要保证能够与外界网络通信ping www.baidu.com:

 cat /proc/cpuinfo 查看cpu类型

hostnamectl 查看linux版本

软件包类型:

DEB

RPM:可以直接用rpm命令管理

bz2、gz、xz(分为绿色版和编译版,绿色版 直接解压可用,编译版需要源码编译)

在rhel8中只能使用绿色软件,源码编译软件和RPM软件


二、软件包的名称结构

kolourpaint 软件名称

4.10.5-4 软件版本

el7 软件的授权协议版本

x86_64 软件架构

rpm 软件类型后缀


三、 rpm命令管理软件包

-ivh安装参数组合 -i install -v verbose -h hash
-a所有
-f文件
-p软件包
-q查询
-l软件安装文件列表
-e卸载
-c配置文件
-d说明
--info软件信息
--force强制,当有文件损坏时可强制重新安装
--nodeps忽略依赖性,但是不保证软件下载后可以用 但是当两个软件互相依赖时可以强制先下载一个
--scripts查询软件在安装或卸载时的运行脚本
-Kv检查软件md5校验码,如果查询到校验码是bad,说明软件包不是原版,被篡改过
-V检测已安装软件在系统中的文件被修改信息

-ivh安装

qq没有依赖性,可以直接安装,但有些软件有依赖性,例如wps在直接安装时显示缺失文件,此时必须手动解决依赖性,否则即使安装好也无法正常使用软件。

-qa查看所有已安装软件

 

 -ql查看软件安装文件列表

 -qf查看/mnt/在哪个软件里

 -qc查看软件的配置文件

 -qd查看软件说明

 --info查看软件相关信息

-qp 查询软件包 -qpl 查询该软件包如果在系统安装之后会产生哪些文件

--scripts 查询软件在安装或卸载过程中的运行脚本

 postinstall 安装后运行的东西

postuninstall 卸载后运行的东西

可以看出A不可装(安装时窃取权限,卸载时删根)

-Kv检测软件md5校验码

修改b3安装包,可以看见b3校验码是错误(BAD)的,说明该软件包是被篡改过的


四、本地软件仓库的搭建

本地软件仓库类似于手机的软件商店。

大多数软件都有依赖性,搭建软件仓库可以避免安装软件时手动解决依赖性的问题,由系统自动检测并安装。

操作系统的供应商提供了安装软件的镜像,类似于u盘,需要将其插入到某一个目录中才可以看到其中的内容。

挂载镜像到自建的目录上

创建目录,名字任意,将镜像插入该目录中:

软件安装包存放在AppStream和BaseOS中,均为系统厂商提供的软件

AppStream中存放所有的应用软件,BaseOS中存放系统基本环境软件

这些软件在默认情况下有些已经安装,有些是没有安装的

 到目前为止,/westos已经可以看做一个软件仓库,但由于/westos是用户自己建立的,因此需要在westos.repo文件中告知系统。


westos.repo文件编写

在别的目录下设置也可以,但需要大量配置。默认情况下yum.repos.d中是有内容的,在企业中不能乱删除

 实验环境中可以清空该目录,编写westos.repo文件:

文件名字任意,但必须以repo会后缀,且必须在yum.repos.d目录下编写,否则系统不识别。yum.repos.d目录下的所有文件中的所有仓库都必须真实可用,否则将导致软件安装失败。

 

 [AppStream]  仓库名字,可以任意取,但不能出现空格

name=local AppStram 介绍仓库名字

baseurl=file://  仓库访问地址

浏览器中如何访问本机文件? file://目录路径 例如访问/mnt下的文件

gpgcheck=0  不检测软件是否授权

pgp是gpg的反商业码,用来做签证,商业版意味着厂商在提供操作系统的同时也承担了相应的责任,如果用户安装了厂商没有授权的第三方软件,厂商将不再保证系统的稳定性。gpgcheck=0 意味着当用户在这个软件仓库中安装软件时,系统不检验该软件是否授权;gpgcheck=1意味着安装软件前,系统将检测该软件是否有授权。系统将在以下秘钥中存放了签证的信息。

如果文件中编写的是gpgcheck=1,则下面需要补充秘钥的位置,软件在下载前会在秘钥中进行签证对比,如果对比成功说明软件是授权的,如果对比不成功则会拒绝用户的下载请求。

enabled=1  默认为1,该句可以不写。等于1说明仓库是启动的,如果enabled=0,说明仓库停用

[BaseOS]  仓库名字,可以任意取,但不能出现空格

name=local BaseOS  介绍仓库名字

baseurl=file://  仓库访问地址

gpgcheck=0  不检测软件是否授权

enabled=1  默认为1,该句可以不写。等于1说明仓库是启动的,如果enabled=0,说明仓库停用

至此本地软件仓库搭建完毕,接下来进行测试


dnf install命令测试

普通安装wps时报错,因为缺少依赖性软件

使用dnf install从本地软件仓库中安装wps,系统将自动下载缺失的依赖性软件,按y确定安装,wps安装成功


五、构建共享型网络软件仓库

构建共享网络软件仓库,可以避免重复在多个主机上安装镜像,浪费企业资源。通过网络(超文本传输协议http)将一台主机的镜像共享出去,其他主机将不需要再安装镜像。

安装httpd软件

目的是使本机能对外共享系统中的文件

 关闭系统火墙后打开httpd软件

查看本机ip,在浏览器中可以访问本机

 


共享本机镜像

由于httpd不会将系统中的所有文件共享出去,而是只共享系统中/var/www/html/位置存放的文件,因此可以在/var/www/html/中新建一个目录westos,将原本挂载在/westos中的镜像卸掉,重新挂载在/var/www/html/westos中,就可以在浏览器中访问到westos中的内容


修改westos.repo文件内容

修改软件仓库的访问地址

 

 至此共享网络软件仓库搭建完毕,只要其他主机可以与本机进行通信,就可以通过访问本机ip下的westos目录从而查看镜像中的内容,即进入共享软件仓库,接下来进行测试


测试

可以正常访问仓库中的软件列表

但此时仍存在问题,由于mount命令在开机时不会自动运行,因此当系统重启后,镜像不会再挂载在httpd可以访问的/var/www/html/目录下,因此需要编写/etc/rc.d/rc.local文件(rc.local是开机自动运行脚本),使mount可以在开机时自动运行,自动将镜像挂载在/var/www/html/westos下


开机自动挂载镜像

进入/etc/rc.d/rc.local,将mount命令的内容放进去,并根据提示为其赋予权限


六、软件仓库管理命令dnf的使用

软件仓库中的所有软件都由dnf命令进行管理

dnf repolist列出仓库信息

 这些数据存放在/var/cache/dnf/下

 dnf clean all清除系统已经识别的信息

dnf list 重新加载系统已识别的信息

dnf list all 列出所有软件

dnf list installed 列出已经安装的软件 

dnf list available 列出未安装的软件

dnf install 安装软件  -y强制安装不提示

 dnf reinstall 重新安装

当软件中包含的文件有损坏时,可以重新安装软件包恢复损坏文件

dnf remove 卸载

dnf search 搜索

根据软件名字搜索

根据内容搜索

 dnf whatprovides 查找包含文件的软件包

 dnf history 查看软件安装或卸载历史

dnf history info 查看特定历史的详细信息

dnf group list 查看所有未隐藏的软件组

dnf group list  “ ”  查看特定未隐藏的软件组

dnf group install “ ”  安装软件组

dnf group list --hidden  查看隐藏软件组


--downloadonly 下载软件包

下载软件,但不安装软件

--destdir 指定下载的软件包存放的位置

例如指定下载到/mnt目录下


七、epel拓展源的安装及使用

有些拓展软件是收费的,系统中没有,可以借助epel源安装这些软件

阿里云下载epel镜像

进入网址,按步骤下载epel镜像

epel镜像-epel下载地址-epel安装教程-阿里巴巴开源镜像站

1)下载epel配置包

2)将官方地址更换为阿里云地址

配置完成


测试

可以找到收费软件ansible


 删除epel源

如果不再使用epel,可以删除epel源配置包,并清除残余文件


八、手动解决软件仓库中的依赖性缺失

当epel源和系统提供的镜像中都没有所需要的包时,就需要自己搜索并安装该包

例如,当安装ansible软件时,提示缺失sshpass,进入浏览器搜索该包

 

 下载时注意版本

 

wget 下载sshpass包

 软件仓库中没有该包,因此手动安装该sshpass包,此时可以安装成功ansible


九、 第三方软件仓库的搭建

为避免多台主机重复ansible的安装步骤,可以从扩展源中将软件下载下来,在本地构建一个ansible仓库(第三方软件仓库),通过网络共享出去

在/var/www/html/创建ansible目录

在此处建目录是因为httpd可以将其共享出去

将ansible的安装包下载到ansible目录中

将手动解决依赖性sshpass也放进ansible目录中

 可以在浏览器访问该目录


将主机变为内部主机

删除epel源,清除系统之前加载的信息,该主机变为内部主机,无法再从外部网络寻找ansible

指定该主机从内网寻找ansible软件

编写westos.repo文件

dnf 命令执行的原理并不是看软件是否存在,而是去读取repodate中的数据,这些数据中包含了软件的基本信息,例如依赖性等。这些数据会被加载到/var/cache/dnf中。而我们在/var/www/html/下创建ansible目录里缺少这些数据,因此需要让软件自动扫描并生成这些数据。

由于ansible仓库不可用,暂时停用

安装createrepo软件

createrepo软件用来扫描并生成dnf执行所需的数据,安装好后进行扫描,扫描成功后进入ansible下的repodata目录可以看到已经出现所需的数据

 开启ansible仓库

ansible仓库搭建完毕

可以查看ansible仓库列表

软件仓库和软件存放目录有本质区别,软件仓库中必须有所需的数据。

总结:构建ansible共享软件仓库的步骤

 1、部署用镜像搭建的软件源并完成本地仓库的配置

2、安装epel源

3、dnf install httpd createrepo -y (httpd用来共享,createrepo用来扫描数据)

4、手动解决sshpass依赖性(浏览器搜索sshpass for rpm并下载rhel8版本的rpm包)

5、rpm -ivh sshpass-xxx.el8.rpm

6、mkdir /var/www/html/ansible

7、dnf install ansible --downloadonly --destdir=/var/www/html/ansible -y

8、cp sshpass-xxx.el8.rpm  /var/www/html/ansible

9、createrepo -v /var/www/html/ansible

(若之后ansible目录中有软件新加入,则需要再次执行扫描createrepo -v /var/www/html/ansible)

测试:

删除epel包及其残留文件(此时dnf无法搜索到ansible软件)

vim /etc/yum.repos.d/westos.repo 编写 [ansible] 的内容

此时若可以dnf install ansible -y安装ansible软件,说明ansible仓库搭建成功

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《深度探索linux操作系统:系统构建和原理解析》是探索linux操作系统原理的里程碑之作,在众多的同类书独树一帜。它颠覆和摒弃了传统的从阅读linux内核源代码着手学习linux操作系统原理的方式,而是基于实践,以从零开始构建一个完整的linux操作系统的过程为依托,指引读者在实践去探索操作系统的本质。这种方式的妙处在于,让读者先从宏观上全面认清一个完整的操作系统都包含哪些组件,各个组件的作用,以及各个组件间的关系,从微观上深入理解系统各个组件的原理,帮助读者达到事半功倍的学习效果,这是作者潜心研究linux操作系统10几年的心得和经验,能避免后来者在学习再走弯路。此外,本书还对编译链接技术(尤其是动态加载和链接技术)和图形系统进行了原理性的探讨,这部分内容非常珍贵。 全书一共8章:第1章介绍了如何准备工作环境。在第2章构建了编译工具链,这是后面构建操作系统各个组件的基础。在这一章,不仅详细讲解了工具链的构建过程,而且还通过对编译链接过程的探讨,深入讨论了工具链的组成及各个组件的作用,理解工具链的工作原理对理解操作系统至关重要。第3~4章,从零开始构建了一个具备用户字符界面的最小操作系统,详细讲解了构建的过程以及涉及的技术细节。第5章从理论的角度探讨了这一过程,从内核的加载、解压一直讨论到用户进程的加载,包括用户空间的动态链接器为加载程序所作的努力。第6~7章首先构建了操作系统基础图形系统,然后在此基础上构建了桌面环境。第8章深入探讨了计算机图形的基础原理,包含2d和3d程序的渲染、软件渲染、硬件渲染等内容,同时也从操作系统的角度审视了pipeline。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值