linux常见包管理工具
linux下软件安装工具apt、yum、dnf、pkg使用
包管理系统简要概述
大多数包系统都是围绕包文件的集合构建的,包文件通常是一个存档文件,它包含已编译的二进制文件和软件的其他资源,以及安装脚本。包文件同时也包含有价值的元数据,包括它们的依赖项,以及安装和运行它们所需的其他包的列表。
不同系统,不同包管理工具
Debian/Ubuntu
.deb apt, apt-cache, apt-get,dpkg
CentOS/Fedora
.rpm yum,dnf
FreeBD
Ports .txz make, pkg
.deb
Debian及其衍生版: Ubuntu、Linux Mint 和 Raspbian,它们的包格式是 .deb
#功能
- 搜索存储库
- 安装软件包及其依赖项
- 管理升级
#apt
在本地系统中,可以使用dpkg程序来安装单个的deb文件,APT命令作为底层dpkg的前端,有时也会直接调用它。
最近发布的debian衍生版大多数都包含了 apt 命令,它提供了一个简洁统一的接口,可用于通常由apt-get 和 apt-cache 命令处理的常见操作。这个命令是可选的,但使用它可以简化一些任务。
.rpm
#yum
CentOS、Fedora和其它 Red Hat 家族成员使用 RPM 文件。在 CentOS中,通过 yum 来与单独的包文件和存储库进行交互。
在最近的Fedora版本中,yum已经被 dnf 取代,dnf 是它的一个现代化的分支,它保留了大部分 yum的接口。
#pkg
FreeBSD 的二进制包系统由 pkg 命令管理。FreeBSD 还提供了 Ports 集合,这是一个存在于本地的目录结构和工具,它允许用户获取源码后使用Makefile直接从源码编译和安装包。
update(检查更新系统)
Debian/Ubuntu
sudo apt-get update/sudo apt update
CentOS/Fedora
yum check-update,dnf check-update
FreeBSD
Packages sudo pkg update
FreeBSD
Ports sudo portsnap fetch update
upgrade (更新已安装包)
Debian/Ubuntu
sudo apt-get upgrade/sudo apt upgrade 只更新已安装的包
sudo apt-get dist-upgrade/sudo apt full-upgrade 可能会增加或删除包以满足新的依赖项
CentOS/Fedora
sudo dnf upgrade/sudo yum update
FreeBSD
Packages sudo pkg upgrade
FreeBSD Ports
less /usr/ports/UPDATING
cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a
安装 portmaster 然后使用它更新已安装的 ports
search(搜索某个包)
查找包最快和最有效的方法是使用命令行工具进行搜索
Debian/Ubuntu
apt-cache search search_string
apt search search_string
CentOS/Fedora
yum/dnf search search_string
yum/dnf search all search_string
FreeBSD Packages
pkg search search_string
pkg search -f search_string
pkg search -D search_string 搜索描述
FreeBSD Ports
cd /usr/ports && make search name=package 通过名字进行搜索
cd /usr/ports && make search key=search_string 搜索评论、描述和依赖
show(查看某个软件包的信息)
在安装软件包之前,我们可以通过仔细阅读包的描述来获得很多有用的信息
除了人类可读的文本之外,这些内容通常包括像版本号这样的元数据和包的依赖项列表
Debian/Ubuntu
apt-cache show package 显示有关包的本地缓存信息
apt show package
dpkg -s package 显示包的当前安装状态
CentOS
yum info package
yum deplist package 列出包的依赖
Fedora
dnf info package
dnf repoquery --requires package 列出包的依赖
FreeBSD Packages
pkg info package 显示已安装的包的信息
FreeBSD Ports
cd /usr/ports/category/port && cat pkg-descr 从存储库安装包
install(安装包及依赖)
Debian/Ubuntu
sudo apt-get install package
sudo apt-get install package1 package2 ... 安装所有列出来的包
sudo apt-get install -y package 在 apt 提示是否继续的地方直接默认 yes
sudo apt install package 显示一个彩色的进度条
CentOS/Fedora
sudo yum/dnf install package
sudo yum/dnf install package1 package2 ... 安装所有列出来的包
sudo yum/dnf install -y package 在 yum 提示是否继续的地方直接默认 yes
FreeBSD Packages
sudo pkg install package
sudo pkg install package1 package2 ... 安装所有列出来的包
FreeBSD Ports
cd /usr/ports/category/port && sudo make install 从源码构建安装一个 port
local install (本地文件系统安装一个包)
Debian/Ubuntu
sudo dpkg -i package.deb
sudo apt-get install -y gdebi && sudo gdebi package.deb //自动处理依赖包
CentOS/Fedora
sudo yum/dnf install package.rpm
sudo yum/dnf localinstall -y package.rpm //安装rpm自动安装依赖从本地yum仓库
FreeBSD Packages
sudo pkg add package.txz
sudo pkg add -f package.txz
remove(删除一个或多个已安装的包)
Debian/Ubuntu
sudo apt-get remove package
sudo apt remove package
sudo apt-get autoremove 删除不需要的包
CentOS/Fedora
sudo yum remove package
sudo dnf erase package
FreeBSD Packages
sudo pkg delete package
sudo pkg autoremove 删除不需要的包
FreeBSD Ports
sudo pkg delete package
cd /usr/ports/path_to_port && make deinstall
#apt-get/apt-cache传统命令等价apt命令
apt-get update
apt update
apt-get dist-upgrade
apt full-upgrade
apt-cache search string
apt search string
apt-get install package
apt install package
apt-get remove package
apt remove package
apt-get purge package
apt purge package
shell管道中使用包管理命令,建议使用apt-get、apt-cache
help(获取帮助)
通常称为man页面中获得大多数的命令
Debian/Ubuntu
man apt-get 更新本地包数据库以及与包一起工作
man apt-cache 在本地的包数据库中搜索
man dpkg 单独的包文件一起工作以及能查询已安装的包
man apt 通过更简洁,用户友好的接口进行最基本的操作
CentOS/Fedora
man yum
man dnf
FreeBSD
Packages man pkg 预先编译的二进制包一起工作
Ports man ports Ports 集合一起工作