ubuntu(10)dpkg命令

在 Ubuntu 或其他基于 Debian 的系统中,**dpkg 是一个底层的包管理工具,用于处理 .deb 包**的安装、卸载、查询等操作。


dpkg help

root@vgt-ubuntu-10:~# dpkg --help
Usage: dpkg [<option>...] <command>

Commands:
  -i|--install       <.deb file name>... | -R|--recursive <directory>...  ### 安装
  --unpack           <.deb file name>... | -R|--recursive <directory>...
  -A|--record-avail  <.deb file name>... | -R|--recursive <directory>...
  --configure        <package>... | -a|--pending
  --triggers-only    <package>... | -a|--pending
  -r|--remove        <package>... | -a|--pending   ### 移除
  -P|--purge         <package>... | -a|--pending   ### 移除包及配置
  -V|--verify [<package>...]       Verify the integrity of package(s).
  --get-selections [<pattern>...]  Get list of selections to stdout.
  --set-selections                 Set package selections from stdin.
  --clear-selections               Deselect every non-essential package.
  --update-avail [<Packages-file>] Replace available packages info.
  --merge-avail [<Packages-file>]  Merge with info from file.
  --clear-avail                    Erase existing available info.
  --forget-old-unavail             Forget uninstalled unavailable pkgs.
  -s|--status [<package>...]       Display package status details.
  -p|--print-avail [<package>...]  Display available version details.
  -L|--listfiles <package>...      List files 'owned' by package(s).  ### 列出包内文件
  -l|--list [<pattern>...]         List packages concisely.
  -S|--search <pattern>...         Find package(s) owning file(s).
  -C|--audit [<package>...]        Check for broken package(s).
  --yet-to-unpack                  Print packages selected for installation.
  --predep-package                 Print pre-dependencies to unpack.
  --add-architecture <arch>        Add <arch> to the list of architectures.
  --remove-architecture <arch>     Remove <arch> from the list of architectures.
  --print-architecture             Print dpkg architecture.
  --print-foreign-architectures    Print allowed foreign architectures.
  --assert-help                    Show help on assertions.
  --assert-<feature>               Assert support for the specified feature.
  --validate-<thing> <string>      Validate a <thing>'s <string>.
  --compare-versions <a> <op> <b>  Compare version numbers - see below.
  --force-help                     Show help on forcing.
  -Dh|--debug=help                 Show help on debugging.

  -?, --help                       Show this help message.
      --version                    Show the version.

Validatable things: pkgname, archname, trigname, version.

Use dpkg with -b, --build, -c, --contents, -e, --control, -I, --info,
  -f, --field, -x, --extract, -X, --vextract, --ctrl-tarfile, --fsys-tarfile
on archives (type dpkg-deb --help).

Options:
  --admindir=<directory>     Use <directory> instead of /var/lib/dpkg.
  --root=<directory>         Install on a different root directory.
  --instdir=<directory>      Change installation dir without changing admin dir.
  --pre-invoke=<command>     Set a pre-invoke hook.
  --post-invoke=<command>    Set a post-invoke hook.
  --path-exclude=<pattern>   Do not install paths which match a shell pattern.
  --path-include=<pattern>   Re-include a pattern after a previous exclusion.
  -O|--selected-only         Skip packages not selected for install/upgrade.
  -E|--skip-same-version     Skip packages whose same version is installed.
  -G|--refuse-downgrade      Skip packages with earlier version than installed.
  -B|--auto-deconfigure      Install even if it would break some other package.
  --[no-]triggers            Skip or force consequential trigger processing.
  --verify-format=<format>   Verify output format (supported: 'rpm').
  --no-pager                 Disables the use of any pager.
  --no-debsig                Do not try to verify package signatures.
  --no-act|--dry-run|--simulate
                             Just say what we would do - don't do it.
  -D|--debug=<octal>         Enable debugging (see -Dhelp or --debug=help).
  --status-fd <n>            Send status change updates to file descriptor <n>.
  --status-logger=<command>  Send status change updates to <command>'s stdin.
  --log=<filename>           Log status changes and actions to <filename>.
  --ignore-depends=<package>[,...]
                             Ignore dependencies involving <package>.
  --force-<thing>[,...]      Override problems (see --force-help).
  --no-force-<thing>[,...]   Stop when problems encountered.
  --refuse-<thing>[,...]     Ditto.
  --abort-after <n>          Abort after encountering <n> errors.
  --robot                    Use machine-readable output on some commands.

Comparison operators for --compare-versions are:
  lt le eq ne ge gt       (treat empty version as earlier than any version);
  lt-nl le-nl ge-nl gt-nl (treat empty version as later than any version);
  < << <= = >= >> >       (only for compatibility with control file syntax).

Use 'apt' or 'aptitude' for user-friendly package management.

1.常用参数

  1. 安装包

    • -i--install:安装指定的 .deb 文件。
      1
      dpkg -i package.deb
      示例:dpkg -i example.deb
      注意:如果依赖未满足,可能会失败,需用 apt 修复(sudo apt install -f

      -f –fix 自动修复依赖问题

  2. 删除包

    • -r--remove:移除已安装的包,但保留配置文件。

      1
      dpkg -r 包名

      示例:dpkg -r vim

    • -P--purge:彻底移除包,包括配置文件。

      1
      dpkg -P 包名

      示例:dpkg -P vim

  3. 查询包信息

    • -l--list:列出已安装的包(支持通配符)。

      1
      dpkg -l

      示例:dpkg -l | grep vim(查找包含 “vim” 的包)

    • -L--listfiles列出某个已安装包的所有文件

      1
      dpkg -L 包名

      示例:dpkg -L vim

    • -s--status:显示某个包的详细信息。(安装情况、包说明等信息)

      1
      dpkg -s 包名

      示例:dpkg -s vim

    • -S--search查找某个文件属于哪个包

      1
      dpkg -S 文件路径

      示例:dpkg -S /usr/bin/vim

  4. 处理 .deb 文件

    • --contents-c(需用 dpkg-deb):列出 .deb 文件的内容。

      1
      dpkg-deb -c package.deb

      示例:dpkg-deb -c example.deb

    • --extract-x(需用 dpkg-deb):解压 .deb 文件到指定目录。

      1
      dpkg-deb -x package.deb /path/to/extract

      示例:dpkg-deb -x example.deb ./extracted

    • --info-I:显示 .deb 文件的元信息(如版本、依赖等)。

      1
      dpkg -I package.deb

      示例:dpkg -I example.deb

  5. 配置包

    • --configure:配置未完成配置的包。

      1
      dpkg --configure 包名

      示例:dpkg --configure vim

    • --configure -a:配置所有未完成配置的包。

      1
      dpkg --configure -a
  6. 其他选项

    • --force-选项:强制执行某些操作(谨慎使用)。
      示例:dpkg -i --force-overwrite package.deb(强制覆盖文件冲突)

    • -R--recursive:递归处理目录中的所有 .deb 文件。

      1
      dpkg -R -i /path/to/deb_files/
    • --dry-run:模拟操作,不实际执行。

      1
      dpkg --dry-run -i package.deb

2.常用用法示例

  1. 安装一个 .deb 文件
    1
    sudo dpkg -i example.deb
    如果依赖缺失,运行:
    1
    sudo apt install -f

自动修复依赖问题

  1. 卸载一个包但保留配置文件

    1
    sudo dpkg -r package-name
  2. 彻底删除一个包

    1
    sudo dpkg -P package-name
  3. 查看已安装包的列表

    1
    dpkg -l
  4. 查找某个文件属于哪个包

    1
    dpkg -S /usr/bin/ls
  5. 检查 .deb 文件内容

    1
    dpkg-deb -c example.deb

3.注意事项

  • dpkg底层工具,不处理依赖关系。如果安装或删除时遇到依赖问题,建议结合 apt 使用。
  • 使用 sudo 是必要的,因为包管理通常需要管理员权限。
  • 如果需要更高级的管理功能,可以使用 aptaptitude,它们是对 dpkg 的封装。