一、Linux中软件安装包的类型
软件安装包可以大致分为三类
rpm包 | 是Redhat Linux提供的一种包封装格式,包的管理工具yum |
---|---|
dpkg包 | 是Debain Linux提供的一种包封装格式,包的管理工具apt-get |
tar包 | 是使用UNIX系统的打包工具tar打包的 |
按照安装类型的不同,软件安装包可以分为两种类型:
1、绿色软件:解压后可以直接运行
2、源码编译:解压后还需要使用编译器将其编译成为可执行文件
- rpm软件安装包
例如在浏览器中下载wps办公软件,会提醒下载哪一种类型的安装包,我们当前所使用到的是红帽Linux,所以选择rpm格式安装包,这种安装包是可以通过命令直接进行安装的 - tar包
当我们使用的U盘是ntfs格式时,需要在系统中安装ntfs-3g的软件,才能够识别这种格式的U盘,我们从浏览器上下载的这个软件是压缩包的格式,可以看到里面包含一个名为configure的文件,这个文件是用来检测系统环境的。这样的安装包就很有可能是一个源码包,需要对它进行编译以后再安装查看源码包中包含的内容:将压缩包解压并查看其中包含的内容
读取其中文件README中包含的内容
其中
./configure :检测系统环境
make :编译
make install :用编译后的规则进行安装
执行第一步./configure
检测系统环境出现错误,缺少C的编辑器
二、rpm安装包名称分析
例如dhcp软件的安装包名称为
名称中主要包含5部分的信息,但是并不是所有的rpm软件包都包含这5部分,有可能授权被隐藏了,或者此处的软件名称和安装后的软件名称不一致
dhcp | 软件名称 |
---|---|
4.2.5.-68 | 软件的版本 |
el7_5.1 | 软件的授权/协议 |
x86_64 | 标明软件位数 |
rpm | 后缀,表明软件是rpm类型 |
三、rpm命令
在管理rpm软件包时需要用到rpm命令,包含的主要参数如下表:
-ivh | 安装 |
---|---|
-ivh中的-i | 安装 |
-ivh中的-v | 显示过程 |
-ivh中的-h | 做哈希校验,查看软件中的hash值是否有改变 |
-e | 卸载 |
-qa | 查看所有 |
-l | 列出安装后在系统中生成的文件 |
-p | 查看安装包 |
- -scripts | 查看软件在安装或者卸载时系统中执行的脚本 |
- -force | 强制安装(不能忽略依赖性) |
- -nodeps | 忽略依赖性安装 |
-K | 检测软件是否为原版软件 |
找到镜像中包含的系统资源示例1:安装dhcp软件
示例2:查看系统中所有已经安装过的安装包
示例3:查看系统中所有已经安装好的安装包数量
示例4:查看dhcp是否已经安装完成
示例6:卸载rpm软件,注意:此处卸载软件的名称是用grep过滤得到的名称示例7:安装过程中只添加参数-i,没有校验过程
示例7:安装过程中添加参数-ih,有校验过程,可以查看软件中的内容有没有被篡改
示例8:查询软件包在安装后的名称
示例9:查询软件包在安装后会生成什么文件
示例10:查看软件在安装或者卸载时在系统中执行的脚本
示例11:明确查看系统在安装或者卸载时在系统中执行脚本的重要性,安装FluffyMcAwesome-A-6.4.0-11.r19335.x86_64.rpm时,会在系统中添加一个用户ID为0的用户FluffyMcAwesome,也就是窃取了超级用户的身份,并且卸载时会将/下的所有东西清空,对系统造成损害,所以这个软件不能安装
示例12:强制安装
当我们在系统安装完成了一个软件后不小心删除了这个软件配置文件所在目录或者软件受损后不能正常使用,就需要重新安装软件,但是重新安装时会提示这个软件已经安装过了,所以就需要强制安装一次
示例13:忽略依赖性安装
当安装软件kolourpaint-4.10.5-4.el7.x86_64.rpm 时,直接安装会出现下图所示情况,会提示很多软件依赖性条目忽略依赖性安装
但是,安装后的软件是不能用的,因为忽略了很多软件安装依赖性
示例14:检测软件MD5是否正确。在安装包dhcp-4.2.5-68.el7_5.1.x86_64.rpm 中追加内容改变安装包中的内容,检测安装包结果为MD5 NOT OK
四、yum软件仓库
搭建yum仓库的目的:rpm不能解决软件的依赖关系,而yum仓库可以解决此问题
搭建步骤(在rhel7中):
1、得到与当前系统匹配的系统安装镜像文件
2、建立系统安装镜像挂载点
3、挂载镜像到挂载点
4、配置系统访问软件路径
在文件zhuang.repo中写入内容
[zhuangrhel7] | 指定仓库名称 |
---|---|
name=zhaung rhel7 source | 仓库描述 |
baseurl=file:///softwaresource | 资源路径 |
gpgcheck=0 | 不检测软件是否授权 |
gpgcheck=1 | 检测软件是否被授权 |
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release | 软件包授权码 |
enabled=1 | 软件仓库被启用(默认值为1) |
enabled=0 | 软件仓库不被启用 |
5、对原仓库清空并且加载新的yum软件仓库当不启用软件仓库时
检测软件是否被授权,在安装过程中会出现是否检测授权码的询问
6、安装之前存在依赖性问题的httpd软件,能够安装成功
搭建步骤(在rhel8中):
1、得到与当前系统匹配的系统安装镜像文件
2、建立系统安装镜像挂载点
3、挂载镜像到挂载点
4、配置系统访问软件路径
在文件zhuang.repo中写入内容5、对原仓库清空并且加载新的yum软件仓库
五、yum命令
yum后可以接的参数
install | 安装 |
---|---|
remove | 卸载 |
reinstall | 重新安装 |
list | 列出 |
update | 更新 |
repolist | 列出仓库信息 |
history | 查看yum历史 |
info | 查看软件包信息 |
clean all | 清楚yum缓存 |
search | 根据软件信息搜索 |
whatprovides | 根据软件包含文件搜索 |
groups install | 组安装 |
groups remove | 组卸载 |
groups info | 组信息 |
示例1:安装示例2:卸载
示例3:重新安装
示例4:列出所有已经安装的软件
示例5:列出所有可以安装的软件
示例6:列出指定软件的信息
示例7:列出所有已经安装过和可以安装的
示例8:列出仓库信息示例8:列出仓库历史:只显示更新,安装和卸载
示例9:查看历史详细信息
示例10:根据软件信息搜索
示例11:根据软件包含文件搜索
当删掉/bin/date时不能通过date查看时间,通过搜索文件名称找到对应软件名称重新安装软件
执行date命令
示例12:列出所有的组
五、第三方软件仓库
步骤1:把所有要安装的以rpm结尾的软件包存放到一个目录中。这个目录中的文件只能以rpm结尾步骤2:在yum仓库指向文件中写入内容
步骤3:在系统中搜索软件发现软件还是不存在在系统资源中有一个非常重要的目录repodata,其中包含xml文件
查看文件中的内容,其中包含软件安装包的详细内容。由于光盘镜像中存在这样的文件而我们指定的第三方软件的目录中没有这样的文件,所以不能称之为第三方软件仓库,需要把这样的文件建立出来步骤4:对目录中的所有软件包进行扫描,生成上述所需文件
步骤5:重新加载新的yum软件仓库,查找kolourpaint