大多数现代类 Unix 操作系统都提供了一个集中的软件包管理机制,以帮助用户搜索、安装和管理软件。而软件通常以「包」的形式存储在仓库「repository」中,对软件包的使用、管理、升级被称为包管理。而 Linux 包的基本组成部分通常有:共享库、应用程序、服务和文档。
软件包管理系统
大多数包管理系统是建立在包文件上的集合,包文件通常包含编译好的二进制文件和其它资源组成的:软件、安装脚本、元数据及其所需的依赖列表。
常用 Linux 发行版的包管理工具:
系统 | 格式 | 工具 |
---|---|---|
Debian | .deb | apt,apt-cache,apt-get,dpkg |
Ubuntu | .deb | apt,apt-cache,apt-get,dpkg |
CentOS | .rpm | yum |
Fedora | .rpm | dnf |
- 对于 Debian 及其衍生产品:Ubuntu、Linux Mint 的包格式为 .deb 文件,APT 为最常见包的操作命令,直接安装 .deb 包时需要使用 dpkg 命令
- CentOS、Fedora、Red Hat 系列 Linux 使用 RPM 包文件,并使用 yum 命令管理包文件与软件库交互,在最新的 Fedora 版本中,yum 已经被 dnf 取代
更换远程仓库源
CentOS
1、CentOS 常用软件源:
- 阿里源:https://mirrors.aliyun.com/centos/
- 网易源:http://mirrors.163.com/centos/
- 华为源:https://mirrors.huaweicloud.com/centos/
- 腾讯源:https://mirrors.cloud.tencent.com/centos/
2、备份配置文件:
$ sudo cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
3、两种配置方案:
方案一:下载新的 CentOS-Base.repo 文件到 /etc/yum.repos.d/ 目录下:根据系统版本修改链接中的数字
- 阿里源:https://mirrors.aliyun.com/repo/Centos-6.repo
- 华为源:https://repo.huaweicloud.com/repository/conf/CentOS-8-reg.repo
- 网易源:http://mirrors.163.com/.help/CentOS6-Base-163.repo
- 腾讯源:http://mirrors.cloud.tencent.com/repo/centos5_base.repo
$ wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-8-reg.repo
方案二:修改CentOS-Base.repo文件,取消 baseurl 开头的行的注释,并增加 mirrorlist 开头的行的注释。将文件中的 http://mirror.centos.org 替换成 https://repo.huaweicloud.com ,可以参考如下命令:
sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i "s/mirrorlist=http/#mirrorlist=http/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i "s@http://mirror.centos.org@https://repo.huaweicloud.com@g" /etc/yum.repos.d/CentOS-Base.repo
4、清楚原有 yum 缓存:yum clean all
5、刷新缓存:yum makecache 或 yum repolist all(查看所有配置可以使用的文件,会自动刷新缓存)
Ubuntu
1、Ubuntu 常用软件源:
- 阿里源:https://mirrors.aliyun.com/ubuntu/
- 网易源:http://mirrors.163.com/ubuntu/
- 华为源:https://mirrors.huaweicloud.com/ubuntu/
- 腾讯源:https://mirrors.cloud.tencent.com/ubuntu/
2、备份配置文件:
$ sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
3、两种配置方案:
方案一:下载配置文件进行替换:根据系统版本进行切换
$ wget -O /etc/apt/sources.list wget -O /etc/apt/sources.list http://mirrors.cloud.tencent.com/repo/ubuntu14_sources.list
方案二:修改 sources.list 文件,将 http://archive.ubuntu.com 和 http://security.ubuntu.com 替换成 http://repo.huaweicloud.com ,可以参考如下命令:
$ sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
$ sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
4、更新索引:apt-get update
更新本地包数据库列表
系统 | 命令 |
---|---|
Debian、Ubuntu | sudo apt-get update |
CentOS | yum check-update |
Fedora | dnf check-update |
升级已经安装的包
系统 | 命令 | 备注 |
---|---|---|
Debian、Ubuntu | sudo apt-get upgrade | 仅升级已安装的软件包 |
sudo apt-get disk-upgrade | 可添加或删除程序包,以满足新的依赖 | |
CentOS | sudo yum update | 仅升级已安装的软件包(建议使用) |
sudo yum upgrade | 升级软件包并删除旧的依赖 | |
Fedora | sudo dnf upgrade |
查找、搜索软件包
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | apt-cache search 搜索内容 | |
CentOS | yum search 搜索内容 | |
yum search all 搜索内容 | 搜索所有内容,包括包描述。 | |
Fedora | dnf search 搜索内容 | |
dnf search all 搜索内容 | 搜索所有内容,包括包描述。 |
查看软件包信息
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | apt-cache show 包名 | 显示有关软件包的本地缓存信息 |
dpkg -s 包名 | 显示包的当前安装状态 | |
CentOS | yum info 包名 | |
yum deplist 包名 | 列出包的以来 | |
Fedora | dnf info 包名 | |
dnf repoquery –requires 包名 | 列出包的以来 |
从软件仓库安装包
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | sudo apt-get install 包名 | |
sudo apt-get install 包1 包2 … | 安装所有列出的包 | |
sudo apt-get install -y 包名 | 无需提示直接安装 | |
CentOS | sudo yum install 包名 | |
sudo yum install 包1 包2 … | 安装所有列出的包 | |
sudo yum install -y 包名 | 无需提示直接安装 | |
Fedora | sudo dnf install 包名 | |
sudo dnf install 包1 包2 … | 安装所有列出的包 | |
sudo dnf install -y 包名 | 无需提示直接安装 |
从本地文件系统直接安装包
| 系统 | 命令 | 备注 | | Debian / Ubuntu | sudo dpkg -i 包名.deb | | | —- | —- | —- | | | sudo apt-get install -y gdebi && sudo gdebi 包名.deb | 使用gdebi检索缺少的依赖关系 | | CentOS | sudo yum install 包名.rpm | | | Fedora | sudo dnf install 包名.rpm | |
移除已安装的包
由于包管理器知道哪些文件是由哪个包提供的,所以在卸载不需要的软件包之后通常可以获得一个干净的系统。
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | sudo apt-get remove 包名 | |
sudo apt-get autoremove | 自动移除已知不需要的包 | |
CentOS | sudo yum remove 包名 | |
Fedora | sudo dnf erase 包名 |