软件安装包格式类型
rpm
软件后缀为.rpm,redhat linux (suse centos redhat)
可以使用在红帽的Linux系统中,但是不能指定安装路径
类似这种文件,是由官方提供的安装包,有认证可以直接使用
deb
后缀为.deb是Debain Linux提供的一种包封装格式,对于我们当前的红帽系统是不适用的
tar
可以指定安装路径
-
绿色软件
直接使用安装命令就可以完成安装程序,并且可以打开使用
我们进入这个安装包,里面有一个README文件vim 进入查看内容,在How to Run描述里可以看到
并且这个软件就在我们拆解开的目录包里,直接找到双击就可以运行
这样的软件我们就成为绿色软件 -
源码编译
我们这里用ntfs-3g这个软件来看,这是U盘读取的软件
可以看到这里面也存在README文件,我们来查看
这里描述了安装的步骤,"./configure" 检测系统环境要先去看符不符合要求,然后才可以编译、安装
检测的结果报错,是缺少acceptable C compiler这个环境,所以我们先去安装这个环境,这个安装我们在下面的yum软件仓库搭建会讲到,这里只看效果,安装完后再进行检测
检测完后会多出一个Makefile文件,表明我们检测成功了,然后再执行上面安装步骤说的 “make” 命令,最后执行 “make install” 命令完成安装。
rpm软件包分析
我们找一个安装包来做解析,dhcp安装包,上面我们展示了在系统中显示为红色,并且是系统镜像带的
< dhcp >-<4.2.5-68>.<el7_5.1>.<x86_64>.< rpm >
< dhcp >:软件名称
<4.2.5-68>:软件版本
<el7_5.1>:软件授权
<x86_64>:软件多少位
< rpm >:软件后缀表示软件包是rpm类型的
管理rpm软件包时用rpm命令
rpm
参数 | 说明 |
---|---|
-ivh | 安装 |
-v | 显示过程 |
-h | hash 检测查看软件中的hash值是否有改变 |
-i | install 安装 |
-e | 卸载 |
-q | 查看 |
-a | #所有 |
-qa | 查看所有安装过的软件 |
-l | 列出安装然后在系统中生成的文件 |
-p | 操作对象为软件包 |
- -scripts | 查看软件在安装或卸载时在系统中执行的脚本 |
- -force | 强制安装 |
-nodeps | 忽略软件依赖性安装 |
-K | 检测软件是否是原版软件 |
实验演示
首先我们将镜像重新挂载到我们新建立的目录上
- mkdir /test
- 在虚拟机光驱中添加系统匹配景象
- 挂载景象到/westos
在vm虚拟机中:“mount /dev/cdrom /test”
注意:在linux 系统中的虚拟机执行 :“mount /xxx/xxxxxxx.iso /test”
完成挂载后,我们来演示参数现象
-
-ivh
-
-qa
也可以用管道符过滤出我们刚安装的dhcp软件
-
-e
上面查看到安装的dhcp软件,我们可以用-e命令删除
-
-l
-
-p
-
–scripts
这里我们用两个脚本来做实验
可以看到A软件在安装是会添加用户并且设置用户id为0,0是我们超级用户的id,而且还会删除我们的 “/” 目录
所以可以得到–scripts命令可以查看软件预安装的一个情况 -
–force
强制安装可以应用于我们在某个rpm类型的软件有损坏无法使用使,我们使用来覆盖安装时文件回复使用
可以看到第一遍我们安装时检测显示我们已经安装过了,所以我们加–force来强制安装 -
-nodeps
在安装软件时有的软件是存在依赖性的,需要安装其他的软件后才可以安装,如果要跳过这个阻拦,-nodeps
但是因为软件本身存在依赖性,所以即使安装了也是不能够使用的 -
-K
检测软件,加参数v显示过程
MD5显示OK,表示没有问题,然后我们篡改这个软件包再检测
然后看到MD5显示的是BAD,就是软件包有问题不可用
软件包如何拆解
命令:rpm2cpio dhcp-4.2.5-68.el7_5.1.x86_64.rpm | cpio -id
因为软件包使用cpio方式压缩的,所以用来解压缩,参数-id,i表示input,d表示解压到当前目录
yum软件仓库
软件仓库搭建
因为rpm不能自动解决软件依赖关系
所以搭建yum仓库可以解决此问题
搭建软件仓库的步骤
- 得到与当前系统匹配的系统安装景象文件
用光驱载入镜像 - 建立系统安装景象挂载点:
mkdir /softwaresource - 挂载景象到景象挂载点:
linux系统中虚拟机
mount /rhel*-xxxxxx.xxxxxx.iso /softwaresource
Windows系统中虚拟机
mount /dev/cdrom /softwaresource - 配置系统访问软件路径(yum仓库指向文件)
切换路径 “cd /etc/yum.repos.d”
删除原本存在的所有文件 “rm -fr *”
在rhel7中:
vim test.repo
解释:
配置 | 说明 |
---|---|
[testrhel7] | #仓库名 |
name=test rhel7 source | 仓库描述 |
baseurl=file:///softwaresource | 资源路径 |
gpgcheck=0\1 | 软件包授权检测开关,0表示关,1表示开 |
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release | 如果检测开关时1,软件包授权码路径 |
enabled=1\0 | 仓库启用开关,0表示关,1表示开 |
完成后 “yum clean all”,重新加载
在rhel8中:
也是编辑vim test.repo
编辑配置文件里分别写AppSteam和BaseOS的配置,其他的内容类似
注意的是,命令yum在rhel8中被设置为了dnf的链接,所以可以用 “dnf clean all”
- 完成配置后,我们再去安装软件就会自动去安装所有需要的依赖性然后安装软件
yum命令
命令介绍
命令 | 说明 |
---|---|
yum install | 安装 |
yum remove | 卸载 |
yum reinstall | 重新安装 |
yum list installed\available\all\软件名称 | 列出 |
yum update | 更新 |
yum repolist | 列出仓库信息 |
yum history | 查看yum历史 |
yum info | 查看软件包信息 |
yum clean all | 清除yum缓存 |
yum search | 根据软件信息搜索 |
yum whatprovides | 根据软件包含文件搜索 |
yum groups install | 组安装 |
yum groups remove | 组卸载 |
yum groups info | 组信息 |
实验演示
- yum install
上面安装httpd是演示的样子 - yum remove
- yum list
yum list all 列出所有软件包
yum list httpd
- yum ropolist
- yum info
yum info dhcp-server
- yum search
搜索dhcp信息,会列出所有dhcp 的软件包
第三方软件仓库
操作步骤
-
把所有rpm结尾的软件包存放到一个目录/software中
-
vim /etc/yum.repos.d/test.repo
清空缓存:yum clean all / dnf clean all -
createrepo -v /sorftware ##生成软件数据库存放软件属性
-
完成后我们就可以安装第三方软件了,如果添加新的软件到第三方软件仓库里,那就需要重新执行createrepo -v /sorftware 命令,生成数据库
-
还有要注意的是,因为rhel8系统是新出的,所以和它配套的第三方软件并没有被大量开发出来,我们上面演示的第三方软件仓库操作是在rhel8中操作的,但是演示的kolourpaint-4.10.5-4.el7.x86.rpm软件包是rhel7的版本,并不能够在rhel8中安装,这里演示的只是第三方软件搭建的方式
共享软件安装仓库
本节内容我们会在rhel7版本中演示,因为第三方软件是rhel7版本的,但是操作方式在rhel8中还是一样的,
搭建共享软件仓库的目的是为了方便我们在企业中用其他服务端的主机直接可以访问我们客户端中的资源,并安装在自己的主机中。
软件仓库支持的访问方式
格式 | 说明 |
---|---|
file:// | 本地文件 |
ftp:// | 文本传输协议 |
http:// | 超文本传输协议 |
nfs: | 网络文件系统 |
而此处我们因为是公司里的都是内网,所以我们用到ftp:// 文本传输协议来进行
搭建共享软件仓库
实验环境:
主机rhel7-work:IP:192.168.0.10,作为客户端搭建
主机rhel7-sever1:IP:192.168.0.30,作为获取共享服务端
-
在含有软件资源的主机中安装共享软件
yum install vsftpd -y
安装完后,还需要去开启服务:“systemctl start vsftpd”
并且设定服务开启自动启动:“systemctl enable vsftpd”
-
关闭selinux和firewalld
关闭这两个的原因是:selinux属于内核的安全服务会阻止外部访问,
firewalld是火墙,也会组织访问,
在当前我们不去管这两个服务如何设定直接关闭就好
关闭selinux:
首先用命令 getenforce 查看状态
Enforcing 表示开启,要关闭需要在配置文件里去设定关闭 “vim /etc/sysconfig/selinux”
更改完后,因为是内核更改所以需要重启reboot
关闭firewalld:
关闭服务:systemctl stop firewalld
关闭开机启动:systemctl disable firewalld -
建立共享目录
服务vsftpd的共享目录的路径是 “/var/ftp”
我们在里面建立镜像挂载和地方软件存放的目录
mkdir /var/ftp/rhel7
mkdir /var/ftp/software
-
在共享目录中存放软件资源
目录建立完成后我们去存放和挂载
把所有第三方软件放入 “/var/ftp/sorftware” 并执行 “createrepo -v /var/ftp/sorftware”
挂载系统安装景象资源到 “/var/ftp/rhel7.6”
mount /dev/cdrom /var/ftp/rhel7.6 使用此命令挂载为临时挂载
因为挂载命令是临时的,随着系统重启之前的挂载会失效,所以设定永久挂载系统安装景象资源到/var/ftp/rhel7.6
编辑配置文件:“vim /etc/rc.d/rc.local”
写入需要执行的命令:“mount /dev/cdrom /var/ftp/rhel7”
另外还需要添加权限是这个配置文件可执行:“chmod +x /etc/rc.d/rc.local”
完成上述操作后,我们的共享软件仓库就搭建好了,然后去用另一台主机测试
测试
-
在主机rhel7-sever1中,我们先去打开浏览器,访问共享的主机文件
-
去写yum的配置文件,使它支持yum软件仓库的使用vim /etc/yum.repos.d/sever1.repo
注意这里写的文件路径就是用ftp去访问到的路径 -
yum clean all
-
配置完成后我们尝试去安装软件
可以看到安装的过程中是下载再安装
再尝试安装第三方软件
这样就完成第三方软件的安装了