Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)

本篇博客主要介绍的就是rpmyum命令

软件安装包格式类型

  • rpm: redhat linux(suse centos redhat)
    rpm不能指定路径
  • deb: ub deb
  • tar:
    绿色软件(不用安装,调用脚本直接就可以用的)
    源码编译(要编译以后才能运行的)

rpm包名称分析

在这里插入图片描述
1:软件名称
2.软件版本
3.软件授权
4.软件多少位
5.软件后缀表示软件包是rpm类型的
在管理rpm软件包时用rpm命令

rpm命令

一.rpm常用命令

参数 作用
-ivh 解压文件包
-v 显示过程
-h hash 检测查看软件中的hash值是否有变化
-i install 安装
-e 卸载
-q 查看
-a 所有
-qa 查看所有安装过的软件
-l 列出安装然后在系统中生成的文件
-p 操作对象为软件包
–scripts 查看软件在安装或卸载时在系统中执行的脚本
–force 强制安装
-nodeps 忽略软件依赖性安装
-K 检测软件是否为原版软件

二.实际练习

1.设定实验环境:

如何在系统里面找到我们的光盘资源

  • 1.mkdir /westos
  • 2.在虚拟机光驱中添加系统匹配景象
  • 3.挂载景象到/westos【mount是临时挂载】
mount /dev/cdrom /westos    在windows下面直接挂载(挂载光驱,其前提是光驱下必须有镜像)
mount /xxx/xxxxxxx.iso /westos  在企业7或者企业8版本的时候,挂载在镜像下

Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第1张图片
镜像文件只读,不属于报错

  • 4.ls /westos Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第2张图片
  • 5 .cd Packages切换好路径后就可以开使下面的练习了
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第3张图片

2.实际练习

  • -q -a -l -p
    1.查看所有-qa
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第4张图片
    2.-qp查询的软件包,-qlp查询在安装后在系统中会生成什么文件
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第5张图片

  • -i -v -h
    安装ivh,可以直接rpm -ivh dhcp-4后直接用Tab键补齐,此时就不需要我们一点一点把全程敲上去
    注意:rpm包使我们的使用变得非常便捷,但是其缺点是不能指定安装路径
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第6张图片
    只使用-ih,做hash检测。对比可以看出-v是显示详细的过程
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第7张图片

  • -e
    删除,后面只是添加名称,注意不要添加”.rpm“后缀
    在这里插入图片描述

  • --scripts
    以 Fluffy(A)与 Fluffy(B)为例,由postuninstall scriptlet //卸载时的安装动作我们发现时B能安装,
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第8张图片
    useradd -d /usr/local/bin -u 0 -o FluffyMcAwesome 表示设定该用户id为0,相当于窃取了我们超级用户的身份。除此以外,在卸载的过程中,它还会将我们的根删掉

  • --force
    不小心将他的配置目录删除了,但是此时会告诉我们这个软件已经被安装过了。此时我们就可以使用–force强制安装
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第9张图片

  • --nodeps
    以安装kolourpaint为例
    会报出很多依赖软件,此时不可使用–force,因为这样做并不能忽略我们的依赖性。
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第10张图片
    但是安装成功之后,也没有什么用,因为这个软件的依赖性问题还是存在的
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第11张图片

  • -K
    追加信息篡改
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第12张图片
    key ID fd431d51: BAD //说明被篡改过

三.如何拆解软件包

rpm2cpio dhcp-4.2.5-68.el7_5.1.x86_64.rpm |cpio -id

Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第13张图片

yum软件仓库

经过上述练习我们可以发现:rpm不能自动解决软件依赖关系

所以我们可以使用:yum仓库,因为yum仓库可以解决此问题

搭建步骤

1.得到与当前系统匹配的系统的安装镜像文件(7对应7,8对应8,不可混用)

2.建立系统安装镜像挂载点
mkdir /software(名字随便起)

3.挂在镜像到镜像挂载点
mount /rhel7-xxxxxxxxxxx-xxxxxx-iso /software
mount /dev/cdrom /softwaresource
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第14张图片
此处我遇到了一个小问题:之前实验环境的搭建是是挂载在/westos下的,此时重新挂载的时候,我当时没有记忆清楚应该怎么改变,然后就遇到了问题。monut命令输入完毕之后,挂载点却没有改变,后来才发现应该先使用umount /westos。之后就能正常进行挂载了。Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第15张图片

4.配置系统访问软件路径(yum仓库指向文件)

cd /etc/yum.repos.d
rm -fr *  //此处删除完是因为要给一个纯净的实验环境,但是在企业中!!只用添加自己需要的内容即可
vim westos.repo

Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第16张图片
当enbaled=1(仓库功能开启,会被识别);yum clean all ;yum repolist
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第17张图片
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第18张图片
当enabled=0(仓库功能关闭,不会被识别)
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第19张图片

5.清空yum缓存识别新文件内容

rhel7:
yum clean all
rhel8
dnf clean all

注意:

  • 本地的资源是“file://” 网络上超文本传输协议“http://”
  • rhel7与rhel8的区别
#在rhel7中
vim westos.repo   要以.repo结尾
[westosrhel7] #仓库名称
name=westos rhel7 source #仓库描述
baseurl=file:///softwaresource #资源路径(前面的//表示访问的方式,最后一个/表示根)
gpgcheck=0|1 #软件包授权检测开关(1表示检测授权码gpgkey)  【0未检测,1有检测机会】
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release #软件包授权码
enabled=1 #仓库启用开关
#在rhel8中
vim westos.repo

[westosAppStream] #仓库名称
name=westos rhel8 source AppStream #仓库描述
baseurl=file:///softwaresource/AppStream #资源路径
gpgcheck=0|1 #软件包授权检测开关
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release #软件包授权码
enabled=1 #仓库启用开关
[westosBaseOS] #仓库名 称
name=westos rhel7 source BaseOS #仓库描述
baseurl=file:///softwaresource/BaseOS #资源路径
gpgcheck=0|1 #软件包授权检测开关
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release #软件包授权码
enabled=1 #仓库启用开关
  • 企业8中
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第20张图片dnf whatprovides */createrepo
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第21张图片

yum命令

命令 作用
yum install 安装
yum remove 卸载
yum reinstall 重新安装
yum list 列出
yum update 更新
yum repolist 列出仓库信息
yum history 查看yum历史
yum info 查看yum历史
yum clean all 查看软件包信息
yum search 根据软件信息搜索
yum whatprovides 根据软件包含文件搜索
yum groups install 组安装
yum groups remove 组卸载
yum groups info 组信息
  • yum list installed|available|all|软件名称
    告诉我们可以安装
  • yum history
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第22张图片
  • yum history info 3
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第23张图片
  • yum whatprovides /bin/date
    使用search和whatprovides的区别:search查找的是信息,whatprovides搜索的四软件包含的文件
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第24张图片

第三方软件仓库

1.把所有rpm结尾的软件包存放到一个目录/software中
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第25张图片
2.createrepo -v /software ##生成软件数据库存放软件属性,搭建好本地yum源之后出现的repodata目录里面存放的是官方软件安装的依赖性关系
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第26张图片
3.vim /etc/yum.repos.d/westos.repo

[software]
name=software
baseurl=file:///software
gpgcheck=0

Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第27张图片
4.此处忘记截图了,将以命令的方式完成

//将“primary.xml”移动到/mnt下,并切换目录
cp 4d0938db671acfe638326f8b7e5c7504bd5bb89b9a07e68e7b42c34bc762092b-primary.xml.gz /mnt       
cd /mnt
ls

//解压缩,vim后就可看见里面Kolourpaint已经存在
gunzip 4d0938db671acfe638326f8b7e5c7504bd5bb89b9a07e68e7b42c34bc762092b-primary.xml.gz
vim 4d0938db671acfe638326f8b7e5c7504bd5bb89b9a07e68e7b42c34bc762092b-primary.xml

//安装
yum clean all
yum search kolourpaint
yum install kolourpaint

此时 yum install kolourpaint会执行,表示直接利用yum命令安装存在官方软件不需要处理依赖性关系,即为忽略依赖性。
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第28张图片
注意:当我们想在/software想再次添加新的软件时repodata这个数据库里面时没有数据的,我们要再次使用createrepo -v /software进行扫描,他会重新生成

共享软件仓库

1.软件仓库支持的访问方式

file:// ##本地文件
ftp:// ##文本传输协议
http:// ##超文本传输协议
nfs: ##网络文件系统

2.搭建共享软件仓库的方式

1.在含有软件资源的主机中安装共享软件
此时显示安装成功,但是也可能存在一种报错的情况,显示软件不存在,ls /softwaresource会发现没有东西,这是因为重启系统后他会将我们原来挂载上去的东西卸掉,所以我们使用的mount 是临时挂载

yum install vsftpd.x86_64 -y    
systemctl start vsftpd
systemctl enable vsftpd   开机启动

Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第29张图片
2.关闭selinux和firewalld

selinux:
[root@rhel7_node1 ~]# getenforce 
Enforcing                    ##由getenforce可以查看出:selinux是开启状态

关闭selinux:
vim /etc/sysconfig/selinux
SELINUX=disabled         ##设置为disabled
reboot						##然后重启一下

firewalld:
关闭firewalld
systemctl stop firewalld 
systemctl disable firewalld

Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第30张图片
打开xixi_clone,在浏览器中输入ftp:
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第31张图片
此时不能正常打开,是因为没有开启vsftpd
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第32张图片
此时就好了,注意一定要把火墙关闭了,不然ftp://172.25.254.24/还是会失败,因为火墙默认情况下是不允许别人访问的
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第33张图片
3.建立共享目录
mkdir /var/ftp/rhel7.6 /var/ftp/software
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第34张图片

4.在共享目录中存放软件资源

  • 有关第三方软件的设置
把所有第三方软件放入/var/ftp/software
ls /software
cp /software/* /var/ftp/software  ///此时会提示repodate这个目录没复制过去
createrepo -v /var/ftp/software

Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第35张图片

  • 有关挂载镜像的设置
挂载系统安装镜像资源到/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.6
chmod +x /etc/rc.d/rc.local    ##一定要添加权限,否则不生效

临时
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第36张图片
永久
使用永久设定的时候,要重启后,或直接/etc/rc.d/rc.local(接的要先把之前的挂载通过umount卸载下来)
在这里插入图片描述
在vim里面写入
Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第37张图片

在xixi_clone里面测试:

  • 在直接在浏览器输入
    firefox ftp://172.25.254.24/software //显示资源
    firefox ftp://172.25.254.24/rhel7.6 //显示资源
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第38张图片
    Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第39张图片
  • 使用命令的方式
vim  /etc/yum.repos.d/westos.repo
[rhel7.6]
name=rhel7.6
baseurl=ftp://172.25.254.24/rhel7.6 
gpgcheck=0

[software]
name=software
baseurl=ftp://172.25.254.24/software 
gpgcheck=0

Linux下的软件管理(包括rpm命令,yum软件仓库,第三方软件仓库,共享软件仓库)_第40张图片

  • yum clean all后,yum repolist进行查看,之后就可以直接安装了

相当于用一台主机搭建好了软件商店,所有的主机都可以通过网络的方式来访问这个软件方式,比如说:安装画图软件:(此时也不用考虑其依赖性了)

如果yum repolist的时候出现了FTP Error 550 - Server denied you to XXX错误,可点击解决办法

你可能感兴趣的:(rhcsa,linux)