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 集合一起工作