包管理
rpm
平台 noarch
就是没有任何硬件等级上的限制。一般来说,这种类型的 RPM 档案,里面应该没有 binary program 存在, 较常出现的就是属亍 shell script 方面的软件。
MD5校验
[root@kvm-docker ~]# md5sum anaconda-ks.cfg
bb6e974d74a51b24d0576edca461a03b anaconda-ks.cf
# 校验码会随着内容的改变而改变
rpm包的安装
rpm 包安装工具,无法解析软件包的依赖性
rpm -ivh 软件包名
-i install安装的意思 -v 查看的意思 -h 查看进度条
rpm包的管理
rpm -qa |grep 软件包名 查询系统安装的软件
rpm -qi 查询已安装软件包的信息
rpm -ql 软件包名 列出所有的已安装文件
rpm -qc 软件包名 列出配置文档
rpm -qf 查看这个软件包是哪个安装的
rpm -V 校验已安装到系统中的文件的改动情况
丢失一个文件侯如何查找
rpm2cpio 命令可以从一个rpm包中提取处文件
如果不小心将一个文件的一个配置文件给删或者是其他文件给删了 不要着急卸载和重新安装 可以按一下步骤来进行但仅限于linux中
rpm -ql 软件名|grep 软件包里的文件
查询这个软件已安装的文件
[root@localhost ~]# rpm -ql tree |grep /usr/bin/tree
/usr/bin/tree
[root@localhost ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
看到这个软件包下面的文件有哪些
步骤 查询这个文件时哪个软件包安装得 #一定要记得这个绝对路径地址 不然只能把这个软件包卸载了重新安装了
rpm -qf 绝对路径得完整文件名
之后 将这个文件提取到当前得工作目录中去
rpm2cpio 软件包名.rpm | cpio -idv ./要提取得文件路径
注:这个./必须有的 不能丢
要提取的文件路径 需要时 这个软件包安装到系统中后,这个文件的路径
比如/usr/bin/tree命令
rpm2cpio tree-1.6.0-10.e17.x86_64.rpm | cpio -idv ./usr/bin/tree
YUM源
yum源相当于一个仓库,里面已经从网路上下载好了一些东西,联机到这个yum源的主机可以从上面下载自己所需的软件,节省好多时间而且下载速度快,无需再去访问网络
YUM源配置文件
pid文件
/var/run/yum.pid
这个文件在每次使用 yum 命令时被创建,正常安装软件结束后被删除。
有时候非正常退出 yum install 命令时,这个文件会保留,并且里面写入了本次 yum install 命令的进程号。
因为 YUM 是单进程的,就是每次只能运行一个 yum install 命令, 所以假如上次的命令没有正常结束,本次的命令就无法执行,此时就会报错,解决方法就是删除 /var/run/yum.pid 文件后,重新执行 yum install 命令即可。
/etc/yum.repos.d
ls /etc/yum.repos.d
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo docker-ce.repo
CentOS-Debuginfo.repo CentOS-Sources.repo
这个目录下存放了可以使用软件包仓库的地址等信息,都是以.repo结尾的文件
文件内容
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[base] 代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称
name 为库的名称,自定义但不需要太长
mirrorlist=:列出这个软件库可以使用的软件仓库的URL列表,如果不想使用,可以注解到这行;
baseurl=:这个最重要,因为后面接的就是软件库的实际网址! mirrorlist 是由 yum 程序自行去查找仓库URL, baseurl 则是指定固定的一个软件库URL!
baseurl 支持的传输协议,可以为
file://
ftp://
http://
https://
enabled 为是否启用库 1 代表启用;0 代表关了
gpgcheck 为检查软件包的签名,1 为检查;0 为不检查
gpgkey 数字签名的公钥位置
基本用法
# 安装软件
[root@localhost ~]# yum -y install httpd # -y表示后面的交互式询问默认选为yes
# 更新所有软件(包括内核)
[root@localhost ~]# yum update
# 升级指定软件
[root@localhost ~]# yum update httpd
# 列出所有可更新的软件
[root@localhost ~]# yum check-update
# 列出所有可安装的软件清单
[root@localhost ~]# yum list
# 查找软件包
[root@localhost ~]# yum search httpd
# 删除软件包
[root@localhost ~]# yum remove httpd
# 清理yum的缓存
[root@localhost ~]# yum clean all
# 生成yum的缓存
[root@localhost ~]# yum makecache
// 查询 pstree 文件由那个软件包安装
yum provides pstree
// 查询本地仓库 没有的话直接去网络上去找
yum localinstall 软件名
自建YUM源(仓库)
基于光盘镜像的YUM源
节省硬盘空间,但是不可扩展
CentOS_BuildTag :制作标签
EFI :EFI启动方式文件
EULA :最终用户许可协议
GPL :GPL授权协议
images :网络PXE启动文件
isolinux :挽救模式文件
LiveOS :微型系统镜像
Packages :自带RPM包 # 重点
repodata :YUM源数据库 # 重点
RPM-GPG-KEY-CentOS-7 :公钥信息文件
RPM-GPG-KEY-CentOS-Testing-7 :公钥信息文件
TRANS.TBL :光盘目录
在光盘镜像中还存放着一个repodata目录,这个目录下存放的yum源的数据库文件,也可以理解为这里记录了软件包的互相依赖关系。只要把光盘镜像挂载到服务器上,然后配好yum源为挂载的镜像,当使用yum安装软件的时候yum就会到这个目录下面去查询数据库,然后再到Packages目录下去拿rpm包进行安装,所以简单理解可以说repodata是记录Packages目录下所有 rpm 包的数据库。
有了这个repodata 就相当于下载软件的时候不需要依赖关系可以直接下载 但是只能下载不能在扩展其他库
1 先在/目录下创建一个iso的空目录(不要在目录下放东西)
1. [root@localhost ~]# mkdir /iso
2 将光盘镜像挂载到刚刚创建的/iso目录
[root@localhost ~]# mount /dev/cdrom /iso/
mount: /dev/sr0 写保护,将以只读方式挂载
3 将原有的yum源文件移走备份
[root@shark ~]# mkdir /etc/yum.repos.d/back
[root@shark ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back/
4 配置yum源
[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Local-ISO.repo
[cdrpm]
name=cdrpm
baseurl=file:///iso
enabled=1
gpgcheck=0
5 清理缓存并缓存新的数据
[root@localhost ~]# yum clean all && yum makecache
基于本地磁盘配置yum源
可扩展性强,就是可以向本地的仓库添加其他的rpm软件包
会占用本地的磁盘空间,只可对本机提供YUM服务
1 先安装createrpo工具
[root@shark ~]# yum -y install createrepo
2 先把光盘镜像里的Packages目录拷贝到本地磁盘(目录名称自取,后面保持一致)
[root@localhost ~]# mkdir /localYum 创建一个本地yum源目录
[root@localhost ~]# cp -a /iso/Packages/ /localYum/
3 生成元数据
createrepo /localYum/Packages
查看生成的repodata目录
ll /locaYum/Packages/repodata/
4 配置yum源
进入/etc/yum.repos.d
vim /etc/yum.repos.d/CentOS-local.repo
[localrpm]
name=localYum
baseurl=file:///locaYum/Packages
enabled=1
gpgcheck=0
5 清理缓存并缓存新的数据
基于ftp文件传输协议的YUM源
可扩展性强,可以向互联网上的任意主机提供可扩展性强,可以向互联网上的任意主机提供 YUM 服务,前提是 互联网上的主机可以访问到 FTP Server
会占用 FTP Server 的磁盘空间
安装FTP Server软件 ——vsftpd
yum install vsftpd -y
修改配置文件保证这个服务端口是一直打开的
配置文件 /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
启动服务,并检查监听端口
systemctl start vsftpd
[root@shark ftp]# ss -ntal |grep 21
LISTEN 0 1024 127.0.0.1:9121 *:*
LISTEN 0 32 :::21 :::*
拷贝数据到指定的文件夹下
mkdir /var/ftp/ftpYum
mount /dev/cdrom /media
cp -a /media/Packages/ /var/ftp/ftpYum/
创建源数据
cd /var/ftp
createrepo -o ftpYum --baseurl=ftpYum/Packages ftpYum/Packages
-o 源数据存放在这个目录下 查找软件包的时候这个作为基础 url 对这个目录下的软件包创建源数据
计划把创建的源数据目录repodata放在/var/ftp/ftoYum下这个可以使用-o选项实现
具体配置操作
开启ftp服务
[root@localhost ~]# yum install -y vsftpd #下载ftp包
[root@localhost ~]# sysytemctl start vsftpd #开启vsftpd端口
[root@localhost ~]# ss -ntal |grep 21 #监听一下21端口是否开启
[root@localhost ~]# systemctl stop firewalld #关闭防火墙
这时就可以从物理机上访问本虚拟机的/var/ftp/
创建ftpYum源
[root@localhost ~]#cd /var/ftp 先进入ftp目录
[root@localhost ~]#mkdir ftpYum 创建ftpYum目录
[root@localhost ~]#cp -a /media/Packages/ /var/ftp/ftpYum/ 将光盘中的packages复制到ftpYum下
[root@localhost ~]#creatrepo -o ftpYum --baseurl=ftpYum/Packages ftpYum/packages 创建源数据到这个ftpYum下
查看会这个目录下会有一个Packages和repodata的文件
[root@localhost ~]# vim /etc/yum.repos.d/localyum.repo
[localyum]
name=local yum repo
baseurl=ftp://127.0.0.1/ftpYum/Packages
enabled=1
[root@localhost ~]#yum remove tree
[root@localhost ~]#yum clean all && yum makecache
这个就可以在Yum源上面进行下载软件包和卸载软件包
注意 安装虚拟机进行分盘时一定把/var分区分大点 里面会存放Yum源 小的话会影响虚拟机性能
网友评论