dpkg命令使用一览表

2022-09-28 18:44:56 浏览数 (1)

[TOC]

0x01 dpkg 命令快速入门

描述:dpkg是软件包管理基础工具“Debian Packager ”的简写,为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除,dpkg命令与rpm有异曲同工之妙; 使用方法:

代码语言:javascript复制
dpkg --help
dpkg –licence   #显示dpkg的Licence
dpkg –version   #显示dpkg的版本号

使用案例:

代码语言:javascript复制
#示例1.安装/删除/更新/读取软件
dpkg -i <.deb file name>  #安装指定deb软件包
dpkg -R /usr/local/src    #安装一个目录下面所有的软件包
dpkg -r avg71flm  #删除软件包(保留其配置信息)
dpkg -P avg71flm  # 删除一个包(包括配置信息),完全清除一个已安装的包。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。
dpkg –update-avail <Packages-file>  #替代软件包的信息
dpkg –merge-avail <Packages-file>  #合并软件包信息
dpkg –forget-old-unavail  #丢失所有的Uninstall的软件包信息
dpkg –clear-avail  #删除软件包的Avaliable信息
dpkg -b direc×y [filename] #建立一个deb文件
dpkg -c filename            #显示一个Deb文件的目录


#示例2.信息读取
dpkg -A package_file #从软件包里面读取软件的信息
dpkg -L package  #查看软件安装在什么地方,显示一个包安装到系统里面的文件目录信息
dpkg -C  #查找只有部分安装的软件包信息
dpkg -l package-name-pattern #列出软件版本软件名,已安装包
dpkg -p package-name  #显示包的具体信息小写
dpkg -S filename-search-pattern #搜索指定包里面的文件(模糊查询)
dpkg -I filename [control-file] #显示一个Deb的说明,搜索Deb包
dpkg -s package-name #报告指定包的状态信息

#示例3.搜索Deb包:
命令行:[dpkg -s|-L|-p] package-name
示例:dpkg -s ssh
示例:dpkg -L apache2
示例:dpkg -p cacti

#示例4.查看具体某个包是否安装
dpkg --get-selections | grep - debianinstallname

#释放软件包,但是不进行配置
dpkg –unpack avg71flm_r28-1_i386.deb  # 如果和-R一起使用,参数可以是一个目录


#安装一个目录下面所有的软件包
dpkg –configure avg71flm_r28-1_i386.deb # #如果和-a一起使用,将配置所有没有配置的软件包
dpkg -reconfigure xxx    #重新配置软件,具体的应用此处不赘述。


#比较同一个包的不同版本之间的差别
dpkg –compare-versions ver1 op ver2  

#有些软件很难卸载,而且还阻止了别的软件的应用,就能够用这个,但是有点冒险
dpkg --force-all --purge packagename


#64位得安装32位兼容库:
dpkg --add-architecture i386

# 忽略依赖安装
sudo dpkg --ignore-depends=kubernetes-cni -i kubeadm_1.13.5-00_amd.deb

实践案例:

代码语言:javascript复制
~$ dpkg --get-selections | grep linux-modules
linux-modules-5.4.0-113-generic   deinstall
linux-modules-5.4.0-117-generic   install
linux-modules-5.4.0-120-generic   install

dpkg-query 命令 - 查询dpkg数据库的工具

描述: 该命令是查询dpkg数据库的工具, 例如查询ubuntu中的库文件(动态链接库、文件)属于哪个deb包并查询包版本。

语法参数:

代码语言:javascript复制
# SYNOPSIS
dpkg-query [option...] command

# 参数
-l, --list [package-name-pattern...] : 列出与一个或多个模式匹配的所有已知包。
-W, --show [package-name-pattern...] :与--list选项一样它将列出与给定模式匹配的所有包,但是可以使用--showformat选项自定义输出 。
-s, --status [package-name...] :报告指定包的状态。
-L, --listfiles package-name.. :从包名列出安装到系统的文件,当列出多个包名时,所请求的文件列表以空行分隔。
--control-list package-name :从包名列出安装到系统的控制文件(自dpkg 1.16.5起)。
--control-show package-name control-file :将安装到系统的控制文件从包名打印到标准输出(从dpkg 1.16.5开始)。
-S, --search filename-search-pattern... : 搜索拥有与给定模式(动态链接库)对应的文件的包。
-p, --print-avail [package-name...] : 显示有关包的详细信息,如/var/lib/dpkg/available中所示。

使用示例:

代码语言:javascript复制
# 示例1.列举出 libc6* 匹配到的包
~$ dpkg-query -l 'libc6*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version         Architecture Description
   -==============-===============-============-=================================
ii  libc6:amd64    2.31-0ubuntu9.7 amd64        GNU C Library: Shared libraries
un  libc6-amd64    <none>          <none>       (no description available)

# 示例2.查看 libpam-modules 包安装到系统中的文件。
~$ dpkg-query -L libpam-modules
dpkg-query -L libpam-modules
/etc/security/access.conf
....
/etc/security/sepermit.conf
/etc/security/time.conf
/lib/x86_64-linux-gnu/security/pam_access.so
....
/lib/x86_64-linux-gnu/security/pam_extrausers.so

# 示例3.查看静态连接库属于哪一个包并显示器绝对路径。
# 查询 pam_tally2.so 库所在包名称
~ $ dpkg -S pam_tally2.so  # ubuntu 20.04
libpam-modules:amd64: /lib/x86_64-linux-gnu/security/pam_tally2.so

# 查询 pam_faillock.so 库所在包名称
~ $ dpkg -S pam_faillock   # ubuntu 22.04
libpam-modules:amd64: /lib/x86_64-linux-gnu/security/pam_faillock.so
libpam-modules:amd64: /usr/share/man/man8/pam_faillock.8.gz

# 查询  /etc/security/access.conf 文件属于哪一个deb包
~ $ dpkg-query -S /etc/security/access.conf
libpam-modules:amd64: /etc/security/access.conf

温馨提示:上述-l参数中Desired/Status/Err解析如下。

代码语言:javascript复制
# Desired action:
  u = Unknown
  i = Install
  h = Hold
  r = Remove
  p = Purge

# Package status:
  n = Not-installed
  c = Config-files
  H = Half-installed
  U = Unpacked
  F = Half-configured
  W = Triggers-awaiting
  t = Triggers-pending
  i = Installed

# Error flags:
  <empty> = (none)
  R = Reinst-required

sudo apt-mark hold linux-image-4.13.0-36-generic

sudo apt-mark hold linux-image-extra-4.13.0-36-generic

sudo apt-mark hold linux-headers-4.13.0-36-generic

sudo apt-mark unhold linux-image-4.13.0-36-generic

sudo apt-mark unhold linux-image-extra-4.13.0-36-generic

sudo apt-mark unhold linux-headers-4.13.0-36-generic

https://blog.csdn.net/Alen_xiaoxin/article/details/124962470

0 人点赞