RPM
简介
- RPM Package Manager,RPM 包管理器
由红帽公司提出,Redhat、SUSE 等系列采用
建立集中数据库,记录软件包安装/卸载等变化信息,分析软件包依赖关系
- RPM 包 文件名特征
软件名-版本信息.操作系统.硬件架构.rpm
bash-4.2.46-30.el7.x86_64.rpm
操作系统:e 代表企业版,l 代表 linux
常见的软件封包类型
封包类型 |
说明 |
rpm 软件包 |
扩展名.rpm ,适用于RedHat系列 |
deb软件包 |
拓展名.deb,适用于Debian系列 |
源代码软件包 |
以.tar.gz,.tar.bz2格式的压缩包提供包含程序的原始代码啊文件 |
其他 |
提供install.sh,setup, *.bin, *.pl等安装文件,绿色免安装、提供一边一号的程序及文件 |
常见安装位置
RPM包的一般安装位置(分散)
![在这里插入图片描述](https://img-blog.csdnimg.cn/6ed8fb4fc36546a6baf3b11a44792bf9.png)
查询已安装 RPM 包软件信息
格式:rpm -q[子选项] 软件名
#查询软件当前系统是否安装
常用的子选项
-a
:列出已安装所有软件包
-i
:查看指定软件的详细信息
-l
:查看指定软件的文件安装清单
# csdn @ edu in ~ [21:18:42]
$ rpm -q firefox
package firefox is not installed
# csdn @ edu in ~ [21:19:22] C:1
$ rpm -q zip
package zip is not installed
# csdn @ edu in ~ [21:19:29] C:1
$ rpm -qi firefox
package firefox is not installed
# csdn @ edu in ~ [21:19:35] C:1
$ rpm -ql firefox
package firefox is not installed
# csdn @ edu in ~ [21:20:06]
$ rpm -qa | wc -l
210
# csdn @ edu in ~ [21:20:17]
$ rpm -qa | grep vim
vim-minimal-7.4.629-6.el7.x86_64
– rpm -qf [文件路径]...
查询某个文件、目录是哪个RPM包带来的,即便目录文件被删除,也可以查询
[root@localhost ~]# rpm -qf /bin/bash /etc/inittab
bash-4.4.19-10.el8.x86_64
systemd-239-29.el8.x86_64
查询未安装的 RPM 安装软件
格式:rpm -q[子选项] [RPM 包文件(包名必须打完整)]
常用的子选项
-pi
:查看指定软件的详细信息
-pl
:查看指定软件的文件安装清单
[root@localhost ~]# ls /mnt/Packages/vsftpd-*
[root@localhost ~]# rpm -qpi /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm #详细信息
[root@localhost ~]# rpm -qpl /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm #安装清单
安装/卸载 RPM 包软件
安装:
格式:rpm -i rpm 包文件
选项:
-v
:显示安装细节
-h
:以#号显示安装进度
[root@localhost ~]# rpm -q vsftpd #查看,未安装 vsftpd
[root@localhost ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm #安装 vsftpd 软件
包,会有警告,忽略即可
[root@localhost ~]# rpm -q vsftpd #再次查看已经安装
[root@localhost ~]# rpm --import /mnt/RPM-GPG-KEY-CentOS-7 #导入签名信息
[root@localhost ~]# rpm -e vsftpd #卸载 vsftpd 软件包
[root@localhost ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm #重新安装
卸载
格式:rpm -e 软件名 ...
[root@localhost ~]# rpm -e lynx iptraf
error: package lynx is not installed
error: package iptraf is not installed
[root@localhost ~]# rpm -q lynx iptraf
package lynx is not installed
package iptraf is not installed
查询已安装的软件包某个目录/文件是哪个 RPM 带来的
格式:rpm -qf [文件路径]...(即使目标文件被删除也可以查询)
[root@localhost ~]# rm -rf /usr/bin/hostname
[root@localhost ~]# ls /usr/bin/hostname
ls: 无法访问/usr/bin/hostname: 没有那个文件或目录
[root@localhost ~]# rpm -qf /usr/bin/hostname
[root@localhost ~]# rpm -ivh /mnt/Packages/hostname-3.13-3.el7.x86_64.rpm
[root@localhost ~]# ls /usr/bin/hostname
ls: 无法访问/usr/bin/hostname: 没有那个文件或目录
[root@localhost ~]# rpm -ivh --force /mnt/Packages/hostname-3.13-3.el7.x86_64.rpm
#--force: 强制安装
[root@localhost ~]# ls /usr/bin/hostname #有程序文件
软件依赖关系
解决依赖关系
- 先安装/卸载要求的包
- 如果RPM包齐全但比较多,可以使用通配符*
忽略依赖关系(不推荐)
安装失败:
[root@localhost ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-61.el7.x86_64.rpm
错误:依赖检测失败:
bind = 32:9.9.4-61.el7 被 bind-chroot-32:9.9.4-61.el7.x86_64 需要
安装成功:
[root@localhost ~]# rpm -ivh /mnt/Packages/bind-9.9.4-61.el7.x86_64.rpm
准备中… ################################# [100%]
正在升级/安装…
1:bind-32:9.9.4-61.el7 ################################# [100%]
[root@localhost ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-61.el7.x86_64.rpm
Yum仓库
简介
YUM,yellowdog updater modified
- 基于RPM包构建的软件更新机制
- 自动解决软件包依赖关系
- 所有软件包由集中的YUM软件仓库提供
准备本地YUM仓库
软件仓库的提供方法
- 本地目录:file://…
- FTP或HTTP服务:ftp://…、http://…
RPM软件包的来源
- Red Hat 发布的RPM包集合
- 第三方、用户定义的RPM包集合
Yum仓库构建(既做服务端又做客户端)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4bfaefb1fc864a39a419b6cf90119166.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/41ddecd82e3f41dc9644df486e45ebc3.png)
影响yum使用的主要文件
- 基本设置:/etc/yum.conf
- 仓库配置:
/etc/yum.repos.d/*.repo
- 日志文件:/var/log/yum.log
.repo 基本配置项
- [源名称]:自定义名称,具有唯一性
- name:本软件源的描述字串
-
baseurl
:指定YUM服务端的URL地址
- enabled:是否启用此频道
- gpgcheck:是否验证待安装的RPM包
- gpgkey:用于RPM软件包验证的密钥文件
Red Hat 具体搭建代码
tips
:挂载操作时,需要确保虚拟机连接好镜像文件
具体操作如下:
-
![在这里插入图片描述](https://img-blog.csdnimg.cn/a2ef2fc8e08f4fa3a0928b1d40491322.png)
-
设置
-
![在这里插入图片描述](https://img-blog.csdnimg.cn/19b33b9b207f4b6d89bda9884d264965.png)
1、部署yum仓库,并设置成开机自动挂载
[root@localhost ~]# mkdir /dvd
[root@localhost ~]# mount /dev/cdrom /dvd
mount: /dvd: WARNING: device write-protected, mounted read-only.
[root@localhost ~]# ls /dvd
AppStream EULA images RPM-GPG-KEY-redhat-beta
BaseOS extra_files.json isolinux RPM-GPG-KEY-redhat-release
EFI GPL media.repo TRANS.TBL
[root@localhost ~]# ls /dvd/AppStream/
Packages repodata
[root@localhost ~]# ls /dvd/BaseOS/
Packages repodata
[root@localhost ~]# ls /etc/yum.repos.d/
[root@localhost ~]# vim /etc/yum.repos.d/dvd.repo
[AppStream] ##第一个软件仓库
name=rhel8.2
baseurl=file:///dvd/AppStream
enabled=1
gpgcheck=0
[BaseOS] ##第二个软件仓库
name=rhel8.2
baseurl=file:///dvd/BaseOS
enabled=1
gpgcheck=0
:wq
[root@localhost ~]# yum clean all
[root@localhost ~]# yum repolist -v
... ....
仓库标识 仓库名称
AppStream rhel8.2
BaseOS rhel8.2
[root@localhost ~]# yum list | wc -l ##查看软件包数量
6606
Yum仓库使用
查询软件信息
查看软件列表
yum list [软件名]...
![在这里插入图片描述](https://img-blog.csdnimg.cn/1679f44c95bd449c8a8137de2d50ffe9.png)
检索软件及相关信息
-yum search 关键词
查询关键字
-yum info [软件包]...
查看软件的描述
-yum provides 文档路径...
![在这里插入图片描述](https://img-blog.csdnimg.cn/493cf31521ae4fabae556540b8cdb69e.png)
安装、卸载软件包
软件包基本操作
常用指令
清空本地yum缓存
适用于yum缓存存在错误时
再次查询或更新时,会自动重建缓存
![在这里插入图片描述](https://img-blog.csdnimg.cn/f76d78149d254199887103af93b525ea.png)
apt
引言
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令。
学习apt的原因是因为做一份作业centos和Ubuntu同时死机!!!!于是安装了kali,没想到kali居然无法用rpm,但其实Ubuntu也没有rpm的内核,kali属于Ubuntu的一种,与Ubuntu一样,拥有apt这样类似于rpm的包管理工具。
apt的权限
一些apt命令需要对/etc/apt
, /etc/cache
, /var/cache/apt
, /var/lib/apt
进行读写操作,这些命令需要sudo
权限。
而对于下载包、显示包信息、检索包等,则无需sudo权限。
格式
apt [options] [command] [package ...]
options:可选,选项包括 -h
(帮助),-y
(当安装过程提示选择全部为"yes"),-q
(不显示安装的过程)等等。
command:要进行的操作。
package:安装的包名。
apt 常用命令
需要sudo权限的操作
列出所有可更新的软件清单命令
sudo apt update
软件包索引是一个保存了deb
包的版本(这是与rpm不同的地方)、资源地址等信息的文件。如果长久不更新,那么新版本的软件包将不会被其他apt相关命令下载安装。
实例
![在这里插入图片描述](https://img-blog.csdnimg.cn/0fe8f6611359489b9f91adf9a2d952e6.png)
升级
升级软件包,升级前先删除需要更新软件包
sudo apt full-upgrade
实例
![在这里插入图片描述](https://img-blog.csdnimg.cn/79aa1c1948344a0093ffa6711f4fa35f.png)
升级单个程序包
格式: sudo apt upgrade package_name
自动升级
sudo apt install unattended-upgrades
安装完成后自动升级服务将自行启动,可以通过systemctl status unattended-upgrades
来验证这一点。
安装软件包
格式:sudo apt install <package_name>
sudo apt install package1 package2...
sudo apt install /path_to_deb/file.deb/
安装指定版本号
sudo apt install <package_name>=<version_number>
移除软件包
remove
删除软件包
apt remove
格式
sudo apt remove package1 package2 ...
purge
移除软件包及配置文件
sudo apt purge package_name
自动移除未使用的包apt autoremove
每安装一个包,其依赖也会被安装。移除此包时会保留这些依赖包,因此需要自动移除未使用的包
sudo apt autoremove
显示已安装的所有软件包清单
sudo apt list
无需sudo权限的apt命令
下载软件包
格式
apt download package_name
查看某个包是否可用:使用grep命令
sudo apt list | grep package_name
查看已安装包
apt list --installed
查看可升级的包
apt list --upgradeable
实例
![在这里插入图片描述](https://img-blog.csdnimg.cn/4ef8ffccd4cf445381fce58c3e3d1838.png)
由于前面都更新了,所以没有可更新包了
搜索包
apt search package_name
查看包信息
apt show package_name
列出所有已安装的包的版本信息
apt list --all-versions