apt
-
最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令当中。
-
apt 命令的引入就是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。
-
在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。
apt和apt-get命令之间的区别
apt 命令 | 取代的命令 | 命令的功能 |
---|---|---|
apt install | apt-get install | 安装软件包 |
apt remove | apt-get remove | 移除软件包 |
apt purge | apt-get purge | 移除软件包及配置文件 |
apt update | apt-get update | 刷新存储库索引 |
apt upgrade | apt-get upgrade | 升级所有可升级的软件包 |
apt autoremove | apt-get autoremove | 自动删除不需要的包 |
apt full-upgrade | apt-get dist-upgrade | 在升级软件包时自动处理依赖关系 |
apt search | apt-cache search | 搜索应用程序 |
apt show | apt-cache show | 显示装细节 |
apt 还有一些自己的命令:
- apt list 列出包含条件的包(已安装,可升级等)
- apt edit-sources 编辑源列表
yum和apt-get用法及区别
一般来说著名的linux系统基本上分两大类:
-
RedHat系列:Redhat、Centos、Fedora等
-
Debian系列:Debian、Ubuntu等
RedHat系列
1 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”
2 包管理工具 yum
3 支持tar包
Debian系列
1 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”
2 包管理工具 apt-get
3 支持tar包
apt-get
参数
-h 帮助文件。
-q 输出到日志 - 无进展指示
-qq 不输出信息,错误除外
-d 仅下载 - 不安装或解压归档文件
-s 不实际安装。模拟执行命令
-y 在需要确认的场景中回应 yes
-f 尝试修正系统依赖损坏处
-m 如果归档无法定位,尝试继续
-u 同时显示更新软件包的列表
-b 获取源码包后编译
-V 显示详细的版本号
-c=? 阅读此配置文件
-o=? 设置自定的配置选项,如 -o dir::cache=/tmp
升级 & 安装
apt-get update // 更新源文件,并不会做任何安装升级操作
apt-get upgrade // 升级所有已安装的包
apt-get install packagename // 安装指定的包
apt-get install packagename --only-upgrade // 仅升级指定的包
apt-get install packagename --reinstall // 重新安装包
apt-get -f install // 修复安装
apt-get build-dep packagename // 安装相关的编译环境
apt-get source packagename // 下载该包的源代码
apt-get dist-upgrade // 升级系统
apt-get dselect-upgrade
查询 & 显示
apt-cache search packagename // 查询指定的包
apt-cache show packagename // 显示包的相关信息,如说明、大小、版本等
apt-cache depends packagename // 了解使用该包依赖哪些包
apt-cache rdepends packagename // 查看该包被哪些包依赖
删除 & 清理
apt-get remove packagename // 删除包
apt-get remove packagename -- purge // 删除包,包括删除配置文件等
apt-get autoremove packagename --purge // 删除包及其依赖的软件包+配置文件等(只对6.10有效,推荐使用)
apt-get clean // 清理无用的包
apt-get autoclean // 清理无用的包
apt-get check // 检查是否有损坏的依赖
yum
参数
-h:显示帮助信息;
-y:对所有的提问都回答“[yes](http://man.linuxde.net/yes)”;
-c:指定配置文件;
-q:安静模式;
-v:详细模式;
-d:设置调试等级(0-10);
-e:设置错误等级(0-10);
-R:设置yum处理一个命令的最大等待时间;
-C:完全从缓存中运行,而不去下载或者更新任何头文件。
更新 & 升级
yum update // 更新所有的包
yum upgrade // 升级所有的包
yum check-update // 检查所有可更新的包
yum update package1 // 更新指定程序包package1
yum upgrade package1 // 升级指定程序包package1
yum groupupdate group1 // 升级程序组group1
yum --exclude=python* update // 升级的时候不升级python相关的包
安装
yum install // 全部安装
yum install package1 // 安装指定的安装包package1
yum localinstall ~ // 从硬盘安装rpm包并使用yum解决依赖
yum groupinsall group1 // 安装程序组group1
查找 & 显示
um list // 显示所有已经安装和可以安装的程序包
yum list python // 显示出名为python的包
yum list python* // 显示出名为python开头的所有的包
yum list updates // 显示出所有可以更新的包
yum list installed // 显示出所有已经安装的包
yum list extras // 显示出所有已安装但是不在yum仓库里的包
yum grouplist // 查看系统中已经安装的和可用的软件组,可用的可以安装
yum info // 显示所有已经安装和可以安装的程序包的信息
yum info python // 显示出名为python的包的信息
yum info python* // 显示出名为python开头的所有的包的信息
yum info updates // 显示出所有可以更新的包的信息
yum info installed // 显示出所有已经安装的包的信息
yum info extras // 显示出所有已安装但是不在yum仓库里的包的信息
yum groupinfo group1 // 显示程序组group1信息
yum search python // 根据关键字python查找相关的包
yum deplist python // 查看程序python依赖情况
yum provides python // 检测python包中包含的文件以及软件提供的功能。
删除 & 清除缓存
yum remove package1 // 删除程序包package1
yum groupremove group1 // 删除程序组group1
yum clean packages // 清除缓存目录下的软件包
yum clean headers // 清除缓存目录下的 headers
yum clean oldheaders // 清除缓存目录下旧的 headers
yum update和yum upgrade的区别
yum update和yum upgrade的功能是一样的,都是将需要更新的package更新至软件源中的最新版。区别是 yum upgrade会删除旧版本的package,而yum update则会保留。因此如果软件依赖旧版本的package,最好是使用 yum update,确保不会出现兼容问题。
换源操作
在使用 yum
进行软件包管理时,可能需要更改软件源(也称为镜像源),例如切换到更快的镜像或使用特定的源来获得更新的软件包。以下是更改 yum
源的步骤:
1. 备份原有的 yum
源配置
在更改之前,建议备份原有的 yum
源配置文件,以防万一需要恢复。
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup
2. 查找新的镜像源
首先,找到适合你 Linux 发行版的镜像源地址。对于 CentOS 和 RHEL,有许多官方和第三方镜像源可以选择。例如,CentOS 官方镜像、阿里云镜像等。选择合适的镜像源并获取其地址。
3. 更新 yum
源配置
yum
源配置文件通常位于 /etc/yum.repos.d/
目录下,文件以 .repo
为后缀名。每个 .repo
文件代表一个或多个软件源。
以 CentOS 为例:
-
删除或禁用现有的
.repo
文件:
可以选择删除现有的.repo
文件或禁用其中的某些源。在/etc/yum.repos.d/
目录下,所有.repo
文件都可以被编辑。sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
-
添加新的镜像源文件:
创建新的.repo
文件并添加新的镜像源。可以使用文本编辑器创建并编辑一个新的.repo
文件。例如:sudo nano /etc/yum.repos.d/CentOS-Mirror.repo
在文件中添加新的镜像源配置,例如:
[base] name=CentOS-$releasever - Base baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [updates] name=CentOS-$releasever - Updates baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [extras] name=CentOS-$releasever - Extras baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
将
baseurl
替换为你选择的镜像源地址。保存并关闭文件。
4. 清理 yum
缓存
在更改源后,清理 yum
缓存以确保使用新的源进行操作:
sudo yum clean all
5. 更新 yum
源列表
重新生成源列表并确保可以访问新的镜像源:
sudo yum repolist
6. 安装和更新软件包
使用 yum
命令安装或更新软件包,检查是否能从新的镜像源成功下载:
sudo yum update
示例:使用阿里云镜像
以下是一个示例,展示如何将 CentOS 的 yum
源切换到阿里云镜像:
-
备份原有配置:
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
-
添加阿里云镜像源配置:
sudo nano /etc/yum.repos.d/CentOS-Base.repo
添加以下内容:
[base] name=CentOS-$releasever - Base baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-7 [updates] name=CentOS-$releasever - Updates baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/RPM-GPG-KEY-CentOS-7 [extras] name=CentOS-$releasever - Extras baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/RPM-GPG-KEY-CentOS-7
-
清理缓存并更新:
sudo yum clean all sudo yum repolist sudo yum update
在使用 yum
进行软件包管理时,yum makecache
、yum clean all
、yum repolist
和 yum update
是常用的命令,各自有不同的作用。下面详细介绍它们的区别和用途:
yum makecache
作用:
yum makecache
命令用于生成和更新yum
的缓存文件。- 它会从配置的仓库中下载元数据(如包的列表和元数据),并将其保存在本地缓存中,以加快后续的包安装和更新操作。
使用场景:
- 当你添加或更改了软件源后,运行
yum makecache
可以快速获取和更新缓存,以便yum
可以使用最新的源信息。
示例:
sudo yum makecache
yum clean all
作用:
yum clean all
命令用于清除yum
的所有缓存,包括元数据缓存、软件包缓存和临时缓存文件。- 它会删除所有已经下载的包和元数据,从而释放磁盘空间,并确保
yum
不使用任何过时的缓存信息。
使用场景:
- 当遇到软件源配置问题或需要确保
yum
从源服务器重新获取所有信息时,可以使用yum clean all
清除缓存。 - 在切换软件源或更改源配置后,清理缓存以确保不会使用旧的或不准确的缓存数据。
示例:
sudo yum clean all
yum repolist
作用:
yum repolist
命令用于列出当前启用的yum
仓库(软件源)的列表。- 它显示所有可用的仓库及其状态,帮助你确认
yum
正在使用哪些软件源。
使用场景:
- 当你需要查看和确认启用的仓库,确保
yum
连接到正确的软件源时,可以使用yum repolist
。
示例:
sudo yum repolist
yum update
作用:
yum update
命令用于更新系统中已安装的所有软件包到最新版本。- 它会检查所有启用的仓库,下载并安装可用的更新包。
使用场景:
- 定期更新系统软件包以获取最新的功能和安全修复。
- 在添加或更改软件源后,运行
yum update
以确保系统中的所有软件包都是最新版本。
示例:
sudo yum update
总结
yum makecache
:生成或更新yum
的缓存,以便加快包管理操作。yum clean all
:清除所有缓存,以释放空间并确保从源服务器获取最新信息。yum repolist
:列出所有启用的仓库,以确认当前使用的软件源。yum update
:更新所有已安装的软件包到最新版本。
这些命令结合使用,可以帮助你管理和维护 yum
软件包的缓存和更新状态。
FQA
yum安装软件时检索密钥问题
该错误信息提示在使用 YUM
安装或更新软件包时,YUM 试图从阿里云镜像站点获取 GPG 公钥,但无法找到相应的公钥文件,导致出现 404 错误。GPG 公钥用于验证软件包的完整性和来源,因此无法获取公钥可能会阻止软件包的安装或更新。
解决方法:
1. 手动导入正确的 GPG 公钥
可以手动导入 CentOS 7 的 GPG 公钥,以下是步骤:
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
此命令会直接从系统的本地文件导入 CentOS 7 的 GPG 公钥,避免从外部站点获取。
2. 检查并更新 YUM 源配置
可能当前配置的 YUM 仓库的源文件指向了错误的 GPG 公钥地址。可以通过以下步骤更新源配置:
-
编辑相关的
.repo
文件(通常是/etc/yum.repos.d/CentOS-Base.repo
或阿里云的.repo
文件):sudo vim /etc/yum.repos.d/CentOS-Base.repo
-
确保
gpgkey
配置指向正确的 GPG 公钥地址,例如:gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
如果文件中有不正确的 GPG 公钥路径(如404的链接),你可以手动修改为上述正确的阿里云 GPG 公钥地址。
3. 清理本地缓存并重新生成缓存
在更正 YUM 源配置后,建议清理本地缓存并重新生成:
sudo yum clean all
sudo yum makecache
这将清除旧的缓存和元数据,并重新获取最新的软件包信息。
4. 尝试重新安装或更新
在完成公钥导入和源配置后,再次尝试安装或更新软件包:
sudo yum update