【Linux】RPM软件包和Yum软件仓库、apt

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包的一般安装位置(分散)
在这里插入图片描述

查询已安装 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:以#号显示安装进度

  • 安装软件包 vsftpd:
[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包齐全但比较多,可以使用通配符*

忽略依赖关系(不推荐)

  • 可能导致软件运行异常
  • 辅助选项 --nodeps

安装失败:

[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仓库构建(既做服务端又做客户端)

在这里插入图片描述
在这里插入图片描述

影响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:挂载操作时,需要确保虚拟机连接好镜像文件
具体操作如下:

  1. 在这里插入图片描述

  2. 设置

  3. 在这里插入图片描述

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 [软件名]...

在这里插入图片描述

检索软件及相关信息

-yum search 关键词 查询关键字

-yum info [软件包]... 查看软件的描述

-yum provides 文档路径...

在这里插入图片描述

安装、卸载软件包

软件包基本操作
  • 格式:yum [-y] 指令 [软件名] ...
常用指令
  • install :安装指定软件包,类似于rpm -i
    在这里插入图片描述

  • remove:卸载指定软件包,类似于rpm -e
    在这里插入图片描述
    在这里插入图片描述

清空本地yum缓存

适用于yum缓存存在错误时
再次查询或更新时,会自动重建缓存

在这里插入图片描述

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相关命令下载安装。

实例

在这里插入图片描述

升级
升级软件包,升级前先删除需要更新软件包
sudo apt full-upgrade
实例

在这里插入图片描述

升级单个程序包

格式: sudo apt upgrade package_name

自动升级
sudo apt install unattended-upgrades

安装完成后自动升级服务将自行启动,可以通过systemctl status unattended-upgrades来验证这一点。

安装软件包

格式:sudo apt install <package_name>

  • 在线安装单个或多个软件包
sudo apt install package1 package2...
  • 或是安装本地deb包
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
实例

在这里插入图片描述

由于前面都更新了,所以没有可更新包了

搜索包
apt search package_name
查看包信息
apt show package_name
列出所有已安装的包的版本信息
apt list --all-versions
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LenckCuak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值