一、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的编辑器
安装yum源仓库并下载gcc
安装完成后再次执行./configure
检测环境后目录中多了一个文件
再执行make
进行编译
最后make install
进行安装
在系统中插入一个ntfs格式的移动硬盘,默认情况下系统不能够识别
通过命令可以将这个设备挂载到/mnt中
这样系统就能够设别ntfs设备了
二、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
六、共享软件安装仓库
一、软件安装仓库支持的访问方式
file:// | 本地文件 |
---|---|
ftp:// | ftp(File Transfer Protocol)文件传输协议 |
http:// | 超文本传输协议 |
nfs: | 网络文件系统 |
在企业中,ftp文件传输协议使用的非常多。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
二、搭建共享软件安装仓库
步骤1:在含有软件资源的主机中安装共享资源软件vsftpd
步骤2:关闭selinux以及firewalld
SELinux「Security-Enhanced Linux」是强制访问控制安全系统,当我们搭建共享软件仓库时需要将此功能关闭,否则会阻止资源共享行为。同时系统中的火墙也需要关闭
可以用getenforce
来查看当前系统中selinux的状态,默认情况下是开启的,更改配置文件并重新启动系统,使得selinux关闭
关闭火墙并设置为开机不启动
步骤3:建立共享目录
当含有软件资源的服务端安装了共享软件后并不会将服务器中所有的资源全部共享出去,默认客户端只能够访问/var/ftp中的内容,所以需要在此路径中建立共享目录
步骤4:挂载系统安装镜像资源到/var/ftp/rhel7
步骤5:将所有的第三方软件放在/var/ftp/software中
步骤6:在客户端测试
在服务端中打开共享资源vsftpd
在客户端浏览器中通过文件传输协议可以看到服务端的资源
设置服务端访问资源方式路径
完成上述步骤以后在客户端也有了yum软件仓库以及第三方软件仓库