Debian软件包常用管理命令整理

· · 1166 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在Debian及其衍生的系统中,我们需要经常使用的软件包管理命令,对系统进行管理,以便系统达到预期的状态。Debian系统中,常用的软件包命令有 apt、apt-get、dpkg、apt-cache等,这里我们着重列举常见的一些用法。

软件包查询(不需要sudo权限)

$ apt-cache search pkg_keyword     #列出匹配关键字的软件包
$ apt search pkg_keyword           #列出匹配关键字的软件包,包括了版本信息
$ apt list pkgname                 #查找该软件包,会显示版本信息
$ apt-cache show pkgname           #查询软件包详细信息
$ apt show pkgname                 #查询软件包详细信息
$ apt-cache depends pkgname        #查询软件包依赖关系
$ apt-cache rdepends pkgname       #查询被哪些软件包依赖
$ apt-cache showpkg pkgname        #同上
$ apt-cache policy pkgname         #查询软件包的安装状态和版本
$ apt-cache stats                  #查看软件库的统计信息

软件包安装

$ sudo apt-get install pkgname
$ sudo apt install pkgname

$ sudo apt install -f                               #自动修复依赖
$ sudo apt-get install -f

在安装软件包之前,我们一般会执行 apt-get update,更新 apt-get 缓存中的软件包信息,获取最新软件包列表。软件的安装源,是由 /etc/apt/sources.list 和 /etc/apt/sources.list.d/ 目录下的 .list 文件定义的。

$ sudo apt-get upgrade           #更新系统所有已安装软件包,只更新包会忽略依赖关系
$ sudo apt upgrade
$ sudo apt-get upgrade -u        #-u 列出可升级软件列表
$ sudo apt-get upgrade -s        #模拟升级
$ sudo apt-get dist-upgrade      #根据依赖关系更新系统所有已安装软件包
$ sudo apt-get --reinstall install pkgname        #只升级指定的软件包
$ sudo apt-get source pkgname    #只下载源码包
$ sudo apt-get check             #检查破损的依赖关系
$ sudo apt-get autoclean         #自动清楚apt-get缓存

软件包卸载

$ sudo apt-get remove pkgname       #删除已安装的软件包(保留配置文件)
$ sudo apt-get purge pkgname        #卸载软件,同时删除配置文件
$ sudo apt-get autoremove pkgname   #彻底自动卸载软件,删除该软件包及所依赖的,以及不再使用和未使用的软件包

在清理本地缓存时,我们会用到 apt 的 clean 命令。值得一提的是,apt-get autoclean 和 apt-get clean 是略微有区别的。

APT的底层包管理器是dpkg, dpkg 安装软件包时, 会将 *.deb 放在 /var/cache/apt/archives 中。apt-get autoclean 只会删除 /var/cache/apt/archives 已经过期的deb。使用 apt-get clean 会将 /var/cache/apt/archives 的 所有 deb 删掉。

dpkg工具管理deb格式软件包

$ dpkg -l                      #列出所有安装的deb软件包
$ dpkg -l|grep nginx           #查询nginx是否已安装
$ dpkg -s zip                  #查看软件包zip的状态和详细信息
$ dpkg -S openssh-server       #查看软件包openssh-server包含的所有文件
$ dpkg -S /path/to/file        #查看某文件对应的软件包名
$ sudo dpkg -i pkgname.deb     #安装.deb软件包,需要自己解决依赖关系
$ sudo dpkg -r pkgname         #卸载deb格式的软件包(保留配置文件),需要自己解决依赖关系
$ sudo dpkg -P pkgname         #卸载deb格式的软件包(不保留配置文件),需要自己解决依赖关系
$ sudo dpkg -P package-name    #清除软件包的所有文件(removes everything, including conffiles)

使用PPA源安装软件包

所有的PPA都寄存在launchpad.net网站上,该网站由Canonical公司架设。

  • ppa:user/ppa-name #ppa源语法格式
  • sudo add-apt-repository ppa:user/ppa-name #添加ppa源
  • sudo add-apt-repository -r ppa:user/ppa-name #删除ppa源

注意,任何人都可以上传软件包到ppa,所有尽量避免使用ppa,如果必须使用,应选用可以信任的,有固定团队维护的ppa。

关注本站微信公众号(和以上内容无关)InfraPub ,扫码关注:InfraPub

1166 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传