请发布您所知道的一些不太常见但非常有用的 apt 命令,包括 apt-*、dpkg 或 aptitude。
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
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
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
dpkg -S
时,结合使用which
非常有用。例如:对于存在不同名称的软件包中的可执行文件,可以这样使用:dpkg -S \
which uname``。 - Benjamin Rubin$ 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
...
apt-get changelog sudo
也可以使用。 - Lekensteyn安装 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用户即可进行更新。 - enzotibapt-file
很不错。谢谢分享。 - Gödelaptitude 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
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
。升级软件包,因为它们会删除其他软件包或者是内核升级而被保留:
sudo apt-get dist-upgrade
彻底删除一个软件包及其配置文件。
sudo apt-get purge package
显示软件包在软件包数据库中的详细信息,包括分类、版本、依赖关系、维护者和描述。
apt-cache show package
列出已安装软件包中的文件。
dpkg -L pkg
升级所有软件包。
sudo apt-get upgrade
dpkg -i --force-architecture something.i386.deb