有用的apt(dpkg)命令[关闭]


Answers:


7

我经常使用的一些命令:

查看依赖关系和反向依赖关系:

apt-cache [--important] [--installed] [--recurse] depends $package
apt-cache rdepends $package

要删除软件包,所有自动删除软件包以及所有相关的配置文件:

sudo apt-get --purge --auto-remove purge $package

要查看实际的apt配置选项:

apt-config dump | less

在命令行上修改选项

$ apt-config dump | grep -i recommend
APT::Install-Recommends "1";
$ sudo apt-get -o APT::Install-Recommends="0" install $package

这只是通过命令行指定APT选项的示例,为避免安装推荐的软件包,可以使用:

sudo apt-get --no-install-recommends $package

要查看所有本地/过时的软件包:

aptitude search ~o

要查看带有残留配置的已删除软件包:

aptitude search ~c

并删除它们

sudo aptitude purge ~c

获取所有已安装软件包的列表(dpkg -l有时可以给出截断的列输出)

dpkg --get-selections | awk '{ print $1 }'

要么

dpkg-query -Wf '${Package}\n'  # other fields available, see man page

要散布,请修改然后重新组装程序包

dpkg-deb -x file.deb ./dir
cd dir 
dpkg-deb -e ../file.deb
# apply your modification, then... 
cd ..
dpkg-deb -b dir file-new.deb

4

我经常使用的两个是:

apt-get autoremove <packagename>

这将删除程序包和任何未使用的依赖关系,如果您尝试使用某个应用程序,然后确定您不需要它,并且还希望删除该杂项,则这将很有用。

dpkg -S /path/to/file

哪个告诉我文件安装在哪个软件包中。

最后,再一个..

dpkg -l <packagename> | grep ^ii

列出软件包,但仅列出状态为ii的软件包,这表示它们已安装,因此不会显示我已删除的内容。

如果您希望获取尚未安装的文件的软件包名称(dpkg -S,但对于未安装的软件包),请安装apt-file并运行:

apt-file search /path/to/file

我发现which与dpkg -S一起使用很有用。例如:适用于使用不同名称的程序包中的可执行文件,例如:dpkg -S `which uname`
Benjamin Rubin 2010年

哦,是的,那也是一个很好的选择。
popey 2010年

3

查看包的ChangeLog

$ aptitude changelog <pkgname>

例:

$ aptitude changelog sudo
sudo (1.7.0-1ubuntu2.4) karmic-security; urgency=low

  * SECURITY UPDATE: properly handle multiple PATH variables when using
    secure_path in env.c
    - Adapted http://www.sudo.ws/repos/sudo/raw-rev/a09c6812eaec
    - CVE-2010-1646
...

2
从Ubuntu 11.04 Natty开始,它也apt-get changelog sudo可以工作。
Lekensteyn 2011年

3

安装apt-file,然后运行sudo apt-file update。现在,您可以搜索甚至没有安装的软件包中的文件。

如果您需要了解有关其他版本的Ubuntu中软件包的信息,也很方便,它是devscripts软件包中的rmadison。为它提供一个程序包名称作为参数,它将告诉您当前每个Ubuntu版本中都存在该程序包的哪个版本,以及该程序包所在的存储库部分。

例:

[bnrubin@server:~/]$ rmadison cowsay
    cowsay |     3.03-8 | dapper/universe | source, all
    cowsay |     3.03-9 | hardy/universe | source, all
    cowsay |   3.03-9.2 | jaunty/universe | source, all
    cowsay |   3.03-9.2 | karmic/universe | source, all
    cowsay |   3.03-9.2 | lucid/universe | source, all
    cowsay | 3.03+dfsg1-2 | maverick/universe | source, all
    cowsay | 3.03+dfsg1-2 | natty/universe | source, all

apt-file现在可以管理用户的数据库,因此您无需成为root用户update
enzotib

apt-file 很好 感谢分享。
哥德尔

1

要获取列表命令以“ apt-”开头,请执行以下操作。打开终端并输入“ apt-”,然后按两次TAB键,这将列出所有以“ apt-”开头的命令。

样本输出:

apt-add-repository    apt-extracttemplates  apt-key
apt-cache             apt-file              apt-mark
apt-cdrom             apt-ftparchive        apt-sortpkgs
apt-config            apt-get 

要获取详细信息,您可以检查特定命令的手册页

例如: man apt-get


1

我喜欢考虑三种不同的软件包:

  • 系统软件包(基本软件包或优先级标准或更高的软件包)
  • 用户软件包(手动安装的优先级可选或额外的软件包)
  • 依赖性和推荐(自动安装的软件包/不是系统或用户软件包的所有软件包)

要显示所有“系统软件包”,您可以使用

aptitude search '(~pstandard|~pimportant|~prequired|~E)'

我喜欢全部安装并标记为手动安装。

aptitude install '(~pstandard|~pimportant|~prequired|~E)!~i'
aptitude unmarkauto '(~pstandard|~pimportant|~prequired|~E)~i~M'

显示所有“用户包”的用法

aptitude search '~i!~M!(~pstandard|~pimportant|~prequired|~E)'

在此列表中,应该只包含您想要的软件包。所有其他软件包可能只是其他软件包的依赖项或推荐项目,您可以将其标记为自动安装

aptitude markauto libsomething

看看aptitude的搜索字词参考以及
什么是基本,必需,重要,标准,可选或额外的软件包?有关背景信息。


0
  • 升级软件包将被保留,因为它们将删除其他软件包或因为它是内核升级而被保留:

    sudo apt-get dist-upgrade
    
  • 清除软件包及其配置。

    sudo apt-get purge package
    
  • 显示软件包数据库中已知的软件包详细信息,包括部分,版本,依赖项,维护者和描述。

    apt-cache show package
    
  • 列出已安装软件包中的文件

    dpkg -L pkg
    
  • 升级所有套餐

    sudo apt-get upgrade
    

-2
dpkg -i --force-architecture something.i386.deb

用于在amd64上安装一些i386 deb。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.