文章目录
软件安装包格式类型
在linux中,支持安装的软件格式有:rpm格式,deb格式,tar(压缩包)格式。
其中,rpm格式适用于红帽系列Linux,deb格式适用于ubuntu,tar格式的基本都适用,它分为绿色软件:不用安装(直接解压运行脚本)就可以使用。源码编译:是需要进行编译才能够运行。
在下载第三方软件时,For Linux版的分为rpm和deb格式:
以wps办公软件为例:
点击下载后,可以看到会让我们选择软件格式下载:
rpm格式的特点为:直接可以通过命令进行安装(开发者已经封装好)。
再以ntfs-3g软件为例:
我们可以看到,下载的为一个tar格式的软件安装包
打开下载好的tar包可以看到里面有一个名为configure文件:
这个文件一般是检测系统环境的文件。所以这个压缩包一般为源码包。使用前我们需要进行编译。
我们这里使用的是rhel7Linux,所以就不能安装deb包。
下来我们尝试安装:
将下载好的tar包解压缩。可以看到有一个READMEWEN文件:
打开后:
这就是源码编译软件安装。
首先使用./configure检测环境:
可以看到当前系统没有c的编译器。所以,我们下来需要安装c编辑器。
.rpm包名称分析
以dhcp服务的.rpm安装包为例:
<dhcp>-<4.2.5-68>.<el7_5.1>.<x86_64>.<rpm>
[1] [2] [3] [4] [5]
1:软件名称
2.软件版本
3.软件授权
4.软件多少位
5.软件后缀表示软件包是rpm类型的
在管理.rpm包时需要用到rpm命令。
rpm命令
rpm常用参数:
参数 | 作用 |
---|---|
-i | 安装一个新的软件包 |
-ivh | 显示进度进行安装 |
-v | 显示过程,详细信息 |
-h | hash检验 |
-i | install 安装 |
-e | 卸载 |
-q | 查看 |
-a | 所有 |
-qa | 查看所有安装过的软件 |
-l | 列出安装然后在系统中生成的文件 |
-p | 操作对象为软件包 |
- -scripts | 查看软件在安装或卸载时在系统中执行的脚本 |
- -force | 强制安装 |
-nodpes | 忽略软件依赖性安装 |
-K | 检测软件是否是原版软件 |
设定实验环境:
1.mkdir /westos
2.在虚拟机光驱里添加匹配镜像
3.挂载镜像到/westos
mount /dev/cdrom /westos
4.查看内容:ls /westos
进入Packages,使用rpm -qa
查看全部安装过的软件:
可以看到共有1365个软件安装包。
使用 rpm -ivh rpm软件包
可以安装:
使用rpm -e 指定的软件安装包(注意:没有.rpm后缀)
可以卸载指定软件
使用rpm -ih rpm软件包
安装一个新软件
使用rpm -ih rpm软件包
可以无进度条安装
使用rpm -iv rpm软件包不使用hash校验无法安装(hash校验的作用时校验软件包是否被篡改)
使用rpm -ivh rpm软件包
可以使用hash校验显示进度安装一个新软件
使用rpm -qp 软件
查看相应软件包
使用rpm -qlp 软件
查看相应软件包安装生成的文件:
使用rpm -qp 软件--scripts
查看相应软件包安装或卸载时生成的脚本:
当系统中已经安装过该软件时,再次安装时不能直接安装上的。这个时候就可以使用–force参数进行强制安装
–force的使用场景:当不小心将软件的配置目录删掉,软件不能正常运行。当使用rpm -ivh进行安装是不能够直接安装(提示已经安装)这个时候,使用–force就能强制安装,恢复,解决此问题。
使用rpm -ivh 软件 --nodeps
可以忽略软件依赖性安装。
虽然可以安装成功,但是不能正常使用。
使用rpm -Kv 安装包
检测软件是否是原版软件:
我们将dhcp的安装包复制到别的地方,对其进行更改。使用rpm -Kv 安装包
对其进行检测:
软件包的拆解:
使用命令:
rpm2cpio dhcp-4.2.5-68.el7_5.1.x86_64.rpm
用数据的方式将软件包的所有数据显示出来:
并使用命令:rpm2cpio dhcp-4.2.5-68.el7_5.1.x86_64.rpm | cpio -id
将数据解压成目录:
yum软件仓库
尽管RPM能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决,而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会是非常痛苦的。Yum软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。
yum软件仓库的搭建
在rhel7中的搭建方法:
步骤:
-
1,得到与当前系统匹配的系统安装镜像文件
-
2,.建立系统安装景象挂载点
-
3,挂载景象到景象挂载点
-
4,配置系统访问软件路径(yum仓库指向文件)
配置目录:/etc/yum.repos.d/
配置文件:xxxx.repo(后缀必须为.repo。要不然系统识别不到。)
如果将gpgchek=0修改为gpgceck=1,系统会校验是否为系统授权软件,如果不是,不允许安装。
- 5,清空yum缓存识别新文件案内容
配置文件编辑好后,使用yum -clean all
命令清空yum缓存识别新文件案内容
检验:使用yum repolist
命令列出仓库信息:
若我们将westosrel7仓库不启用:
再次列出仓库信息:
没有可用仓库。
若我们将gpg检验打开,我们需指定官方的gpgkey位置:
官方gpgkey位置:/etc/pki/rpm-GPG-KEY-redhat-release
这个时候,我们安装软件的时候会自动检验:若gpgkey相同,则可以安装,否则,不能安装。
在我们搭建yum仓库时,rhel7和rhel8中是有区别的,下边我们来说说在rhel8中的yum仓库搭建方法。
在rhel8中的搭建方法:
在rhel7和rhel8中搭建的最大区别是:
在rhel7中的资源安装包在都在Packages里:
而rhel8中的软件资源分别在AppStream(应用软件)目录和BaseOS(系统的基础软件)目录下:
所以我们写配置文件(目录与rhel7相同)是需要写两次,分别为AppStream和sBaseOS:
配置好后清空yum缓存识别新文件案内容 :
yum clean al
l或者dnf clean al
(在rhel8中yum是dnf的软连接)
常用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 search dhcp搜索有关dhcp的信息:
使用yum install dhcp.x86_64安装dhcp服务:
yum reinstall dhcp.x86_64 :重新安装dhcp:
yum remove dhcp.x86_64 卸载dhcp:
yum list all 列出所有安装包(包括已安装和未安装):
yum list available列出没有安装但是可以安装的安装包:
yum list installd 列出已经安装过的软件:
yum list dhcp:查看dhcp是否能够安装
yum repolist 列出软件仓库信息:
yum hstory 查看yum的历史操作(安装,更新,卸载)
yum hstory info 4 查看yum历史中第四条的重装信息:
yum info dhcp 查看dhcp的信息:
yum clean all 清空yum缓存识别新文件案内容。
yum whatprovides 文件 根据软件包含文件搜索
yum whatprovides /bin/date 查找含有date的软件:
yum groups list 查看系统中已经安装的软件包组
yum groups install软件包组 安装指定的软件包组:
安装虚拟化的软件包组:
yum groups info Virtualization\ Tools 查看虚拟化组里的软件:
yum groups remove 组卸载
卸载虚拟化组:
第三方软件仓库
如图为新下载的两个软件安装包:
这两个包是系统镜像资源里没有的。要想安装这两个第三方软件,可以这么做:
1 ,首先新建一个目录,将我们下载好的包(后缀为.rpm)放进去:
2 ,在/etc/yum.repos.d/下的软件仓库配置文件里添加第三方软件仓库信息:
清空yum缓存后使用yum search搜索一下我们第三方软件仓库的软件:
所以我们可以知道,我们只是将第三方软件放到新建的目录里,推测这个目录并没有被系统识别到。
可以看到:在系统的yun源里,会有一个 repodata文件
这个文件为yum软件仓库的描述文件。我们的第三方的软件仓库指定目录没有这一文件。所以我们放第三方软件安装包的目录就不能成为第三方软件仓库。
这里我们可以使用creatrepo -v /路径
这个命令来生成yum数据库
createrepo -v /software
可以看到,第三方软件仓库与有了repodata这个文件
repodata里产生了我们需要的文件:
再次使用yum search linuxqq
搜索,可以看到能正常搜索搜索到。
接下来使用yun install进行安装:
可以看到成功按装。
共享软件仓库
软件仓库支持的访问方式
file:// 本地文件
ftp:// 文本传输协议
http:// 超文本传输协议
nfs:网络文件系统
实验环境说明及整体方法:
rhel7_node1 ip:192.168.0.70
rhel7 localhost ip:192.168.0.40
在rhel7localhost里的所有软件仓库搭建完毕。
此时在rhel7_node1里没用可以用的软件仓库。所以不能直接安装软件。
若使rhel7主机中也有仓库资源,我们可以使用上边提到的方法。但是,在企业中,会有成百上千台主机,如果每一台主机都按照上述方法,则效率极低且不现实。
所以我们可以在一台主机中将所用的软件仓库搭建好,其他主机通过访问这台主机的软件仓库也可以直接安装软件。
所以在rhel7localhost里需要做的事情为将自己的软件仓库共享出去。
我们这里选择使用ftp的访问方式访问软件仓库。
共享软件仓库的搭建
在含有软件资源的主机中安装共享软件
含有软件资源的主机为rhel7localhost
首先我们搜索ftp,可以搜索到yum软件仓库中的有关ftp的所有东西:
安装vsftp:
为了保证实验效果,避免客户主机访问主机被拒绝,我们在含有软件资源的主机中关闭SElinux(内核级的加强型火墙)和火墙firewalld
关闭selinux和firewalld
使用getenforce
查看selinux状态,可以看到selinux状态为开启状态为开启:
编辑配置文件关闭selinux:
vim /etc/sysconfig/selinux
编辑好保存退出。因为对内核的配置进行了修改,我们需要重启系统进行初始化,待重启完成后,使用getenforce命令查看selinux状态:
关闭火墙:
使用systemctl start vsftp来打开ftp服务:
而我们使用共享软件时,不能将系统中的所有资源共享,所以vsftp软件默认只共享/var/ftp这个目录
我们在rhel7_node1中进行验证:
在rhel7_node1中打开浏览器,使用ftp方式访问rhel7localhost:
可以看到,只有一个pub的目录。这与rhel7localhost中的/var/ftp中内容相同!所以我们能通过在rhel7localhost的/var/ftp中建立资源文件即可。
建立共享目录
因为默认将/var/ftp目录共享,所以在/var/ftp中建立共享目录:
我们这里新建两个共享目录,rhel7.6中共享系统镜像资源;在software中共享第三方软件资源。
在共享目录中存放软件资源
将第三方软件包移到/var/ftp/software/
使用createrepo -v /var/ftp/software
这个命令来生成yum数据库:
将系统镜像光驱挂载到/var/ftp/rhel7.6:
注意:使用mount挂载命令为临时挂载,当系统重启后会失效。
永久挂载系统安装景象资源到/var/ftp/rhel7.6 :
编辑配置文件:vim /etc/rc.d/rc.local
(开机自动运行脚本)
编辑完成之后,保存退出。
注意:在此文件上添加执行权,否则不生效。
这样就能永久将光驱挂载在/var/ftp/rhel7.6
我们的共享软件仓库就搭建好了。
下来进行验证:
在rhel7_node1中的firefox访问: ftp://192.168.0.40来显示第三方软件资源:
资源可用。
ftp://192.168.0.40/rhel7.6 显示镜像资源
两个资源都可以正常显示后,在客户主机rhel7_node1中编辑软件仓库配置文件:
vim /etc/yum.repos.d/westos.repo
接下来使用yum clean all来清空yum缓存。
使yum repolist查看可用软件仓库:
可以看到有两个软件仓库可用。
在客户主机rhel7_node1中安装dhcp试试:
可以看到,dhcp成功安装。这也说明,共享软件仓库的搭建是没有问题的!