Bol*_*wyn 42 repository packages aptitude
我正在寻找类似于这个问题的东西:Zypper:如何显示某个存储库中的所有包?
由于我使用的是 Ubuntu,因此我需要一个基于 aptitude 的解决方案:如何从某个存储库中获取已安装软件包的列表?
小智 18
在阅读了 aptitude 的信息页面和十几次尝试后,我终于得到了这个:
aptitude search '?narrow(?installed,?not(?archive(testing)) ?archive(unstable))'
Run Code Online (Sandbox Code Playgroud)
或同等学历):
aptitude search '~S ~i (!~Atesting ~Aunstable)'
Run Code Online (Sandbox Code Playgroud)
它将搜索从任何存储库的不稳定档案中安装的软件包;您必须从默认存档中过滤掉包(在上面的示例中进行测试)。
如果要过滤从www.debian-multimedia.org/unstable以下位置安装的软件包:
aptitude search '~S ~i (!~Atesting ~Aunstable ?origin("Unofficial Multimedia Packages"))'
Run Code Online (Sandbox Code Playgroud)
编辑:
从Release存储库的文件中扣除“存档”、“来源”等,但不幸的是,并非所有工具都可以查看所有这些行,并且它们使用不同的语法。您可以在 找到这些文件/var/lib/apt/lists/*Release,或者只需键入apt-cache policy即可获得概览。apt-cache更改了其输出格式 - 更高版本使用apt_preferences样式。
Suite:或Archive:(旧名!)
?archive(___)或~A___%trelease a=___natty-backports, trusty-security,stable Origin:
?origin(___)或~O___release o=___Canonical, Google, Inc., LP-PPA-dockbar-main,Ubuntussi*_*ice 18
使用 aptitude,为了在稳定分支之外寻找已安装的软件包,您可以使用:
aptitude search "?narrow(?installed,?not(?archive(stable)))"
Run Code Online (Sandbox Code Playgroud)
要查看版本以及包名称(而不是描述),您可以使用带有格式选项(-F简称)的命令,如下所示。
aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"
Run Code Online (Sandbox Code Playgroud)
有关更多格式,请查看联机帮助页(这里是包含Avail.options的文档)。
例如,如果您在 Squeeze 之外安装了软件包(例如,通过运行apt-get install -t sid package-name.
可以通过 via 查看安装包的来源apt-cache policy,用法如下:
apt-cache policy <package-name>
Run Code Online (Sandbox Code Playgroud)
例如,我的 python-numpy 包呈现以下输出:
$ LANG=C apt-cache policy python-numpy
python-numpy:
Installed: 1:1.6.2-1
Candidate: 1:1.6.2-1.2
Version table:
1:1.7.0-1 0
1 http://ftp.es.debian.org/debian/ experimental/main amd64 Packages
1:1.6.2-1.2 0
500 http://ftp.es.debian.org/debian/ sid/main amd64 Packages
*** 1:1.6.2-1 0
100 /var/lib/dpkg/status
1:1.4.1-5 0
990 http://ftp.es.debian.org/debian/ squeeze/main amd64 Packages
990 http://ftp.de.debian.org/debian/ squeeze/main amd64 Packages
Run Code Online (Sandbox Code Playgroud)
这意味着我是当前 sid/main 分支的一个版本,所以我安装了一个旧的 sid 版本。我看到我还没有稳定版,因为它是1.4.1-5,而我目前在1.6.2-1.
在提交时,这个包已经更新了:)
小智 17
检查每个当前存储库的源标记(例如o=Debian):
apt-cache policy | sed -n 's/.*o=\([^,]\+\).*/\1/p' | uniqRun Code Online (Sandbox Code Playgroud)
然后搜索来自(或不来自)特定来源的包:
aptitude search "?installed?origin(Debian)"Run Code Online (Sandbox Code Playgroud)
aptitude search "?installed?not(?origin(Debian))"Run Code Online (Sandbox Code Playgroud)
这不适合安全审计,因为它依赖于每个存储库提供自己的来源信息,但它可能有助于对多个存储库中存在的包的来源进行故障排除。
| 归档时间: |
|
| 查看次数: |
39990 次 |
| 最近记录: |