apt 与 dpkg 命令详解

目录

一. apt & dpkg 异同点  

二. dpkg 常用命令

三. apt 常用命令 

1. apt命令

2. apt-get

2. apt-cache

3. apt-config

4. apt-rdepends


一. apt & dpkg 异同点  

1. apt 与 dpkg 均为 ubuntu 下面的包管理工具。
2. dpkg 仅用于安装本地的软件包,安装时不会安装依赖包,不解决依赖问题。

sudo dpkg -i .deb

3. apt 默认会从远程仓库搜索包的名字,下载并安装,安装时会自动安装依赖包,并解决依赖问题。

sudo apt install

  如果需要使用apt 从本地安装,需要在包名前指定路径,否则只从远程仓库查找。

sudo apt install /.deb

二. dpkg 常用命令

1. 概念

dpkg是一个debian包管理工具。能够对包进行安装、卸载、获取信息等操作。 

2. 用法
查看指定包的版本,架构和描述信息

dpkg -l

dpkg --list

列出所有已安装的包,和其版本,架构和描述信息

dpkg -l
dpkg --list

相当于

apt list --installed

# 查看ssh是否安装
dpkg -l | grep ssh

查看包的安装路径

dpkg -L

查看包是否安装

dpkg -s

dpkg --status

查找指定文件所属的包名,即这个文件是由哪个包安装产生的

dpkg -S

dpkg --search

安装

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    

三. 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-cache 和 apt-config 中最常用命令选项的集合。

1. apt命令

  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 =

# 列出包名的所有版本(仅当前系统apt源中包含的)

apt-cache madison PACKAGE

# 安装指定版本

apt install =

  apt remove <软件包名> 和 apt autoremove

apt remove  -y <软件包名>用来卸载指定软件。
apt autoremove 用来自动清理不再使用的依赖和库文件。

-y:在卸载软件包时自动确认所有提示,不需要手动输入确认。即强制卸载软件包而不需要交互式确认。

  apt purge <软件包名>

  apt purge <软件包名>用来卸载指定软件及清除相关的配置文件。

  apt show <软件包名>

显示软件包具体信息。例如:版本号,安装大小,依赖关系,bug报告等等。

  aptitude search ssh-server

 查看ssh-server是否安装

2. apt-get

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             # 安装软件包,多个软件包用空格隔开  
apt-get install --reinstall # 重新安装软件包  
apt-get install -f          # 修复安装(破损的依赖关系)软件包  

卸载类操作

apt-get remove          # 删除软件包(不包括配置文件)  
apt-get purge           # 删除软件包(包括配置文件)  

下载清除类操作

apt-get source              # 下载pkg包的源代码到当前目录  
apt-get download            # 下载pkg包的二进制包到当前目录  
apt-get source -d           # 下载完源码包后,编译  
apt-get build-dep           # 构建pkg源码包的依赖环境(编译环境?)  
apt-get clean                     # 清除缓存(/var/cache/apt/archives/{,partial}下)中所有已下载的包  
apt-get autoclean                 # 类似于clean,但清除的是缓存中过期的包(即已不能下载或者是无用的包)  
apt-get autoremove                # 删除因安装软件自动安装的依赖,而现在不需要的依赖包  

查询类操作

apt-cache stats             # 显示系统软件包的统计信息  
apt-cache search            # 使用关键字pkg搜索软件包  
apt-cache show     # 显示软件包pkg_name的详细信息  
apt-cache depends       # 查看pkg所依赖的软件包  
apt-cache rdepends      # 查看pkg被那些软件包所依赖  

说明 

  1. 关于软件安装目录的说明:

    一般的deb包(包括新立得或者apt-get下载的)都在/usr/share。 自己下载的压缩包或者编译的包,有些可以选择安装目录,一般放在/usr/local/,也有在/opt的。

  2. 关于apt-get的缓存目录:

    默认的缓存目录是/var/cache/apt/archives/, 为日后重装系统后安装软件节省下载时间或者将软件包给别人用,可以将该目录下的软件包压缩备份后清理以节省空间。

2. apt-cache

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 searchapt showaptitude searchaptitude 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 

3. apt-config

命令介绍

用于查看和操作Debian-based系统中高级软件包工具(APT)的配置。APT是一个软件包管理系统,用于在基于Debian的Linux发行版上安装、删除和管理软件包

apt-config命令允许用户查看当前的APT配置设置,并更改它们以适应他们的需求。可以使用apt-config设置的一些选项包括APT缓存位置、用于软件包下载的默认版本以及代理服务器。

常用命令

# 查看当前APT配置设置:

apt-config dump

查看特定APT配置选项的值:

apt-config get

设置特定APT配置选项的值:

apt-config set

需要注意的是,更改某些配置选项可能会产生意外后果并可能导致系统出现问题,因此建议在更改APT配置之前咨询APT文档或寻求知识渊博的用户或系统管理员的帮助。

4. apt-rdepends

用于查看Debian-based系统中软件包的依赖关系。它基于Advanced Package Tool (APT),可以递归地查找一个或多个软件包所依赖的所有其他软件包,以及这些依赖关系的版本信息。

常见用法

# 查看一个软件包的依赖关系:

apt-rdepends

# 查看多个软件包的依赖关系:

apt-rdepends ...

# 以树形结构查看一个软件包的依赖关系:

apt-rdepends -d

# 以逆序的方式查看一个软件包被哪些软件包所依赖:

apt-rdepends -r

需要注意的是,apt-rdepends可以递归地查找依赖关系,因此在处理大型软件包集合时可能需要一些时间。此外,依赖关系可能会因不同的系统配置而有所不同,因此建议在查看依赖关系之前仔细阅读文档并了解相关概念。 

apt-cache rdepends 和 apt-rdepends 区别

apt-cache rdepends 是 apt-cache 工具的一部分,它可以列出一个或多个软件包所依赖的其他软件包。与 apt-rdepends 不同,apt-cache rdepends 只会列出直接依赖于指定软件包的其他软件包,不会递归地查找所有依赖关系。此外,apt-cache rdepends 可以用于查找一个软件包被哪些其他软件包所依赖。

你可能感兴趣的:(linux,#,ubuntu,linux,ubuntu,服务器,运维)