1. apt 与 dpkg 均为 ubuntu 下面的包管理工具。
2. dpkg 仅用于安装本地的软件包,安装时不会安装依赖包,不解决依赖问题。
sudo dpkg -i <package_name>.deb
3. apt 默认会从远程仓库搜索包的名字,下载并安装,安装时会自动安装依赖包,并解决依赖问题。
sudo apt install <package_name>
如果需要使用apt 从本地安装,需要在包名前指定路径,否则只从远程仓库查找。
sudo apt install <path>/<package_name>.deb
1. 概念
dpkg是一个debian包管理工具。能够对包进行安装、卸载、获取信息等操作。
2. 用法
查看指定包的版本,架构和描述信息
dpkg -l <package_name>
或
dpkg --list <package_name>
列出所有已安装的包,和其版本,架构和描述信息
dpkg -l
dpkg --list
相当于
apt list --installed
# 查看ssh是否安装
dpkg -l | grep ssh
查看包的安装路径
dpkg -L <package_name>
查看包是否安装
dpkg -s <package_name>
或
dpkg --status <package_name>
查找指定文件所属的包名,即这个文件是由哪个包安装产生的
dpkg -S <file_name>
或
dpkg --search <file_name>
安装
dpkg -i package_file
dpkg --install package_file
解包(该命令仅对“package_file“进行解包操作,不会执行包配置工作)
dpkg --unpack package_file
配置包:
dpkg --configure package
卸载包:
dpkg -r package
dpkg --remove package
该命令删除包,但保留配置文件。
dpkg -P package
dpkg --purge package
该命令删除包,且删除配置文件。
获取、设置、清除包的选择状态
dpkg --get-selections [package]
输出到标准输出,可以使用管道或重定向。
dpkg --set-selections
从标准输入获取,可以使用管道或重定向。
dpkg --clear-selections
将所有包都标记为卸载。
其他选项:
-B
--auto-deconfigure
卸载包时,自动把依赖于被卸载的包的所有包也卸载掉。
--no-act
--dry-run
--simulate
仅用于测试,得到输出,不对系统进行任何修改。
还有一些选项指定的任务实际上是交给 dpkg-deb、dpkg-query完成的:
dpkg-deb:
-b | --build
-c | --contents
-e | --control
-x | -extract
-f | --field
-I | --info
-X | --vextract
dpkg-query
-l | --list
-s | --status
-L | --listfiles
-S | --search
-p | --print-avail
最常用的 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-cache 和 apt-config 中最常用命令选项的集合。
apt update
更新软件源中的所有软件列表。因为更新数据库等操作需要管理员的权限,所以在apt命令前要加上sudo命令取得权限。
运行apt update命令会返回三种状态:一是命中,一是获取,一是忽略。
命中表示连接上网站,包的信息没有改变。
获取表示有更新并且下载。
忽略表示无更新或更新无关紧要无需更新。
在命令显示的最后,会提示你有多少软件包可以升级,你可以根据自身的需求立即或稍后进行升级。
apt list
apt list --upgradeable:显示可升级的软件包。
apt list --installed:显示已安装的软件包。
apt upgrade
执行完update命令后,就可以使用apt upgrade来升级软件包了。执行命令后系统会提示有几个软件需要升级。在得到你的同意后,系统即开始自动下载安装软件包。
apt install <软件包名>
安装指定软件。此命令需管理员权限。如果你对名字并不十分清楚,你可以输入软件名的一部分,系统会给出名字相近的软件包名的提示。在老版本中安装程序需要使用sudo apt-get install <软件包名>,现在新版本中已建议直接使用apt替代apt-get命令。
sudo apt install -f
使用此命令可修复依赖关系,假如有软件因依赖关系不满足而无法安装,就可以运行此命令自动修复安装程序包所依赖的包。特别是在使用dpkg命令安装deb软件包时出现依赖问题常需要此命令来修复。
apt install <package name>=<version info>
# 列出包名的所有版本(仅当前系统apt源中包含的)
apt-cache madison PACKAGE
# 安装指定版本
apt install <package name>=<version info>
apt remove <软件包名> 和 apt autoremove
apt remove -y <软件包名>用来卸载指定软件。
apt autoremove 用来自动清理不再使用的依赖和库文件。
-y:在卸载软件包时自动确认所有提示,不需要手动输入确认。即强制卸载软件包而不需要交互式确认。
apt purge <软件包名>
apt purge <软件包名>用来卸载指定软件及清除相关的配置文件。
apt show <软件包名>
显示软件包具体信息。例如:版本号,安装大小,依赖关系,bug报告等等。
aptitude search ssh-server
查看ssh-server是否安装
apt-get,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
参数
-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 dist-upgrade # 发行版升级(如,从10.10到11.04)
apt-mark hold packagename # 将指定的包版本hold住,在upgrade更新时忽略掉这个包
apt-mark unhold packagename # 取消对这个包版本的锁定
apt-get -f install # 修复安装 "-f = --fix-missing"
安装或重装类操作
apt-get install <pkg> # 安装软件包<pkg>,多个软件包用空格隔开
apt-get install --reinstall <pkg> # 重新安装软件包<pkg>
apt-get install -f <pkg> # 修复安装(破损的依赖关系)软件包<pkg>
卸载类操作
apt-get remove <pkg> # 删除软件包<pkg>(不包括配置文件)
apt-get purge <pkg> # 删除软件包<pkg>(包括配置文件)
下载清除类操作
apt-get source <pkg> # 下载pkg包的源代码到当前目录
apt-get download <pkg> # 下载pkg包的二进制包到当前目录
apt-get source -d <pkg> # 下载完源码包后,编译
apt-get build-dep <pkg> # 构建pkg源码包的依赖环境(编译环境?)
apt-get clean # 清除缓存(/var/cache/apt/archives/{,partial}下)中所有已下载的包
apt-get autoclean # 类似于clean,但清除的是缓存中过期的包(即已不能下载或者是无用的包)
apt-get autoremove # 删除因安装软件自动安装的依赖,而现在不需要的依赖包
查询类操作
apt-cache stats # 显示系统软件包的统计信息
apt-cache search <pkg> # 使用关键字pkg搜索软件包
apt-cache show <pkg_name> # 显示软件包pkg_name的详细信息
apt-cache depends <pkg> # 查看pkg所依赖的软件包
apt-cache rdepends <pkg> # 查看pkg被那些软件包所依赖
说明
- 关于软件安装目录的说明:
一般的deb包(包括新立得或者apt-get下载的)都在/usr/share。 自己下载的压缩包或者编译的包,有些可以选择安装目录,一般放在/usr/local/,也有在/opt的。- 关于apt-get的缓存目录:
默认的缓存目录是/var/cache/apt/archives/, 为日后重装系统后安装软件节省下载时间或者将软件包给别人用,可以将该目录下的软件包压缩备份后清理以节省空间。
apt-cache命令 可以用于查询软件源和软件包的相关信息,比如当前软件包的安装状态、当前软件包的依赖关系等。
命令介绍
apt-cache命令可显示 APT 内部数据库里的多种信息。这些信息是从sources.list文件内聚集不同来源的缓存。于运行apt update运作时产生的。
APT包管理器工作在软件包元数据的本地缓存上。通过apt-cache命令,可以查询本地APT缓存并获得相关信息。
APT 缓存的位置是 /var/lib/apt/lists/ 目录。
缓存哪些仓库元数据取决于你的源列表中 /etc/apt/sources.list 文件中添加的仓库,以及位于 /etc/apt/sources.list.d 目录下的额外仓库文件。
apt-cache 并不能清除 APT 缓存。为此,你必须使用 apt-get clean 命令。
缓存
缓存是一种暂存系统,近用方法昂贵 (讲究性能) 时,用于加快常用数据的取用速度。这个概念应用范围极广,从微处理器核心至高端保存系统。
在 APT 的环境,参照软件包名称文件是他们在镜射站的位置。也就是说,近用数据库软件包时,每次都通过网络读取,极无劾率。所以,APT 在其文件内保存一个复本 (在/var/lib/apt/lists/) 每次搜索本地的文件即可。同样的,/var/cache/apt/archives/保存已经下载的软件包避免在移除后又需要时的重复下载行为。
apt-cache命令可以做键词软件包搜索apt-cache search键词。也能显示软件包标头的可用版本apt-cache show软件包名称。这个命令提供软件包说明、其相依性、维护者名称等。apt search、apt show、aptitude search、aptitude show都以同样方式运作。
操作
#搜索软件包:
apt-cache search package_name
# 也可以缩小搜索范围,只在软件包名称中查找搜索词:
apt-cache search --names-only package_name
# 如果想要知道完整细节,可以使用 --full 标志:
apt-cache search --names-only package_name --full
# 获取详细的包装信息:(已经知道确切的软件包名称)
apt-cache show package_name
#获取二进制软件包的常规描述信息,可以显示软件包的名称、版本、正向和反向依赖关系等信息
apt-cache showpkg package_name
#获取源码包的详细描述信息
apt-cache showsrc src_name
# 可以显示软件包的名称、版本、正向和反向依赖关系等信息
apt-cache pkgnames
# 列出包名的所有版本(仅当前系统apt源中包含的)
apt-cache madison PACKAGE
#获取软件包当前的安装状态
如果指定了软件包的名称,它将显示该软件包是否已经安装,在哪个版本的仓库中可用,以及它的优先级。
apt-cache policy package_name
默认情况下,每个已安装的软件包版本的优先级为 100,未安装的软件包的优先级为 500。
同一软件包可能有多个不同优先级的版本。APT 会安装优先级较高的版本,除非安装的版本较新。
#获取当前软件包依赖于哪些软件包
可以在安装之前(甚至在安装之后)检查一个包的依赖关系。它还会显示所有可能满足依赖关系的软件包。
apt-cache depends package
# 获取当前软件包被哪些软件包所依赖
apt-cache rdepends
命令介绍
用于查看和操作Debian-based系统中高级软件包工具(APT)的配置。APT是一个软件包管理系统,用于在基于Debian的Linux发行版上安装、删除和管理软件包
apt-config命令允许用户查看当前的APT配置设置,并更改它们以适应他们的需求。可以使用apt-config设置的一些选项包括APT缓存位置、用于软件包下载的默认版本以及代理服务器。
常用命令
# 查看当前APT配置设置:
apt-config dump
查看特定APT配置选项的值:
apt-config get <option>
设置特定APT配置选项的值:
apt-config set <option> <value>
需要注意的是,更改某些配置选项可能会产生意外后果并可能导致系统出现问题,因此建议在更改APT配置之前咨询APT文档或寻求知识渊博的用户或系统管理员的帮助。
用于查看Debian-based系统中软件包的依赖关系。它基于Advanced Package Tool(APT),可以递归地查找一个或多个软件包所依赖的所有其他软件包,以及这些依赖关系的版本信息。
常见用法
# 查看一个软件包的依赖关系:
apt-rdepends <package>
# 查看多个软件包的依赖关系:
apt-rdepends <package1> <package2> ...
# 以树形结构查看一个软件包的依赖关系:
apt-rdepends -d <package>
# 以逆序的方式查看一个软件包被哪些软件包所依赖:
apt-rdepends -r <package>
需要注意的是,apt-rdepends可以递归地查找依赖关系,因此在处理大型软件包集合时可能需要一些时间。此外,依赖关系可能会因不同的系统配置而有所不同,因此建议在查看依赖关系之前仔细阅读文档并了解相关概念。
apt-cache rdepends 和 apt-rdepends 区别
apt-cache rdepends是apt-cache工具的一部分,它可以列出一个或多个软件包所依赖的其他软件包。与apt-rdepends不同,apt-cache rdepends只会列出直接依赖于指定软件包的其他软件包,不会递归地查找所有依赖关系。此外,apt-cache rdepends可以用于查找一个软件包被哪些其他软件包所依赖。