“Linux包管理:dpkg与apt”的版本间差异

来自Wikioe
跳到导航 跳到搜索
(建立内容为“category:Linux”的新页面)
 
无编辑摘要
第1行: 第1行:
[[category:Linux]]
[[category:Linux]]
== dpkg ==
dpkg,即package manager for Debian(debian系统的包管理工具)。“dpkg is a tool to install, build, remove and manage Debian packages”,dpkg是Debian的一个底层包管理工具,主要用于对已下载到本地和已安装的软件包进行管理。<br/>
这个机制最早由Debian Linux社区所开发出来的,通过dpkg的机制,Debian提供的软件就能够简单的安装起来,同时能提供安装后的软件信息。派生于Debian的其它Linux distributions大多使用dpkg这个机制来管理,包括B2D,Ubuntu等。
=== deb软件包名规则 ===
格式:“Package_Version-Build_Architecture.deb”。<br/>
如:nano_1.3.10-2_i386.deb
# 软件包名称(Package Name): nano
# 版本(Version Number):1.3.10
# 修订号(Build Number):2
# 平台(Architecture):i386
=== 相关文件 ===
{| class="wikitable"
! 文件 !! 说明
|-
| /etc/dpkg/dpkg.cfg
| dpkg的配置文件
|-
| /var/log/dpkg.log
| dpkg的日志文件
|-
| /var/lib/dpkg/available
| 存放系统所有安装过的软件包信息
|-
| /var/lib/dpkg/status
| 存放系统现在所有安装软件的状态信息
|-
| /var/lib/dpkg/info
| 存放安装软件包控制目录的控制信息文件
|}
=== dpkg数据库 ===
* dpkg 使用文本文件作为数据库来维护系统中软件,包括文件清单、依赖关系、软件状态等详细的内容;
相关文本文件通常在“/var/lib/dpkg 目录下,通常在:
# “status”文件中存储软件状态和控制信息
# “info/”目录下备份控制文件,并在其下的;
#: “.list”文件中记录安装文件清单;
#: “.md5sums”保存文件的 MD5 编码。
[[File:dpkg数据库文本.png|800px]]
==== 查询dpkg数据库 ====
显示所有已安装的Deb包“dpkg -l”:
[[File:dpkg查看数据库.png|800px]]
每条记录的前三个字符为软件包的状态标识(Desired|Status|Err),后边依此是软件包名称、版本号、硬件平台和简单描述,其中
# 第一字符,为期望值(Desired=Unknown/Install/Remove/Purge/Hold),它包括:
#: u Unknown状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
#: i Install用户请求安装软件包.
#: r Remove用户请求卸载软件包.
#: p Purge用户请求清除软件包.
#: h Hold用户请求保持软件包版本锁定.
# 第二列,为软件包的当前状态(Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend):
#: n Not软件包未安装.
#: i Inst软件包安装并完成配置.
#: c Conf-files软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
#: u Unpacked软件包被解包,但还未配置.
#: f halF-conf试图配置软件包,但是失败了.
#: h Half-inst软件包安装,但是但是没有成功.
#: w trig-aWait触发器等待
#: t Trig-pend触发器未决
# 第三列标识错误状态,第一种状态标识“(none)”表示没有问题,其它符号则标识相应问题(Err?=(none)/Reinst-required (Status,Err: uppercase=bad))
#: h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.
#: r Reinst-required,软件包被破坏,可能需要重新安装才能正常使用(包括删除).
#: x 软包件被破坏,并且被强制保持.
=== dpkg 子命令 ===
为了方便用户使用,dpkg不仅提供了大量的参数选项,同时也提供了许多子命令。比如:
<syntaxhighlight lang="bash">
dpkg-deb、dpkg-divert、dpkg-query、dpkg-split、dpkg-statoverride、start-stop-daemon
</syntaxhighlight>
=== dpkg 使用 ===
==== 安装 ====
命令:
# dpkg -i package-name.deb:安装软件包,必须是deb包的完整名称(软件的安装可被拆分为两个对立的过程“解包”和“配置”);
#: dpkg --unpack package-name.deb:解开软件包到系统目录但不配置;(“解包”)
#: dpkg --configure package-name.deb:配置软件包;(“配置”)
# dpkg -c package-name.deb:列出 deb 包的内容
选项:
# -R,--recursive:递归地处理在指定目录中的指向特定目录中所匹配的所有安装包;
#: 可以和 -i, -A, --install, --unpack 与--avail一起使用
==== 移除 ====
# dpkg -r package-name:移除软件包,但保留其配置文件
# dpkg -P package-name:清除软件包的所有文件
==== 查询 ====
# dpkg -l package-name-pattern:查看系统中软件包名符合pattern模式的软件包
# dpkg -L package-name:查看package-name对应的软件包安装的文件及目录
# dpkg -p package-name:显示包的具体信息
# dpkg -s package-name:查看package-name(已安装)对应的软件包信息
# dpkg -S filename-search-pattern:从已经安装的软件包中查找包含filename的软件包名称
*(也可使用子命令dpkg-query来进行查询操作)
== apt ==

2020年10月16日 (五) 02:12的版本


dpkg

dpkg,即package manager for Debian(debian系统的包管理工具)。“dpkg is a tool to install, build, remove and manage Debian packages”,dpkg是Debian的一个底层包管理工具,主要用于对已下载到本地和已安装的软件包进行管理。

这个机制最早由Debian Linux社区所开发出来的,通过dpkg的机制,Debian提供的软件就能够简单的安装起来,同时能提供安装后的软件信息。派生于Debian的其它Linux distributions大多使用dpkg这个机制来管理,包括B2D,Ubuntu等。

deb软件包名规则

格式:“Package_Version-Build_Architecture.deb”。
如:nano_1.3.10-2_i386.deb

  1. 软件包名称(Package Name): nano
  2. 版本(Version Number):1.3.10
  3. 修订号(Build Number):2
  4. 平台(Architecture):i386

相关文件

文件 说明
/etc/dpkg/dpkg.cfg dpkg的配置文件
/var/log/dpkg.log dpkg的日志文件
/var/lib/dpkg/available 存放系统所有安装过的软件包信息
/var/lib/dpkg/status 存放系统现在所有安装软件的状态信息
/var/lib/dpkg/info 存放安装软件包控制目录的控制信息文件

dpkg数据库

  • dpkg 使用文本文件作为数据库来维护系统中软件,包括文件清单、依赖关系、软件状态等详细的内容;

相关文本文件通常在“/var/lib/dpkg 目录下,通常在:

  1. “status”文件中存储软件状态和控制信息
  2. “info/”目录下备份控制文件,并在其下的;
    “.list”文件中记录安装文件清单;
    “.md5sums”保存文件的 MD5 编码。

Dpkg数据库文本.png

查询dpkg数据库

显示所有已安装的Deb包“dpkg -l”: Dpkg查看数据库.png 每条记录的前三个字符为软件包的状态标识(Desired|Status|Err),后边依此是软件包名称、版本号、硬件平台和简单描述,其中

  1. 第一字符,为期望值(Desired=Unknown/Install/Remove/Purge/Hold),它包括:
    u Unknown状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
    i Install用户请求安装软件包.
    r Remove用户请求卸载软件包.
    p Purge用户请求清除软件包.
    h Hold用户请求保持软件包版本锁定.
  2. 第二列,为软件包的当前状态(Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend):
    n Not软件包未安装.
    i Inst软件包安装并完成配置.
    c Conf-files软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
    u Unpacked软件包被解包,但还未配置.
    f halF-conf试图配置软件包,但是失败了.
    h Half-inst软件包安装,但是但是没有成功.
    w trig-aWait触发器等待
    t Trig-pend触发器未决
  3. 第三列标识错误状态,第一种状态标识“(none)”表示没有问题,其它符号则标识相应问题(Err?=(none)/Reinst-required (Status,Err: uppercase=bad))
    h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.
    r Reinst-required,软件包被破坏,可能需要重新安装才能正常使用(包括删除).
    x 软包件被破坏,并且被强制保持.

dpkg 子命令

为了方便用户使用,dpkg不仅提供了大量的参数选项,同时也提供了许多子命令。比如:

dpkg-deb、dpkg-divert、dpkg-query、dpkg-split、dpkg-statoverride、start-stop-daemon

dpkg 使用

安装

命令:

  1. dpkg -i package-name.deb:安装软件包,必须是deb包的完整名称(软件的安装可被拆分为两个对立的过程“解包”和“配置”);
    dpkg --unpack package-name.deb:解开软件包到系统目录但不配置;(“解包”)
    dpkg --configure package-name.deb:配置软件包;(“配置”)
  2. dpkg -c package-name.deb:列出 deb 包的内容

选项:

  1. -R,--recursive:递归地处理在指定目录中的指向特定目录中所匹配的所有安装包;
    可以和 -i, -A, --install, --unpack 与--avail一起使用

移除

  1. dpkg -r package-name:移除软件包,但保留其配置文件
  2. dpkg -P package-name:清除软件包的所有文件

查询

  1. dpkg -l package-name-pattern:查看系统中软件包名符合pattern模式的软件包
  2. dpkg -L package-name:查看package-name对应的软件包安装的文件及目录
  3. dpkg -p package-name:显示包的具体信息
  4. dpkg -s package-name:查看package-name(已安装)对应的软件包信息
  5. dpkg -S filename-search-pattern:从已经安装的软件包中查找包含filename的软件包名称
  • (也可使用子命令dpkg-query来进行查询操作)

apt