Avi*_*Raj 26 command-line apt ppa
我在我的系统上安装了来自许多 PPA 的许多软件包。我想列出从启动板 PPA 安装的所有已安装软件包,而不是存储库。
这可以通过命令行吗?
Syl*_*eau 27
以下命令返回包名称及其 ppa(如果从 ppa 安装):
apt-cache policy $(dpkg --get-selections | grep -v deinstall$ | awk '{ print $1 }') | perl -e '@a = <>; $a=join("", @a); $a =~ s/\n(\S)/\n\n$1/g; @packages = split("\n\n", $a); foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s}'
Run Code Online (Sandbox Code Playgroud)
细节:
dpkg --get-selections
之后只提供已安装的软件包 grep -v deinstall$
awk '{ print $1 }'
只返回包名perl -e '@a = <>; $a=join("", @a)'
连接所有返回的行 apt-cache policy
$a =~ s/\n(\S)/\n\n$1/g;
在每个包部分之间添加一个换行符@packages = split("\n\n", $a);
是一个包含所有包信息的 perl 数组,每个项目一个包。foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s}
是一个循环,如果在策略中找到具有 prio 500 的 ppa,则将打印包和 ppa。aptitude
下面的命令显示了sources.list
.
aptitude search '?narrow(?installed, ~Oppa)'
Run Code Online (Sandbox Code Playgroud)
~Oppa
意味着 Origin 包含 'ppa'
参考: aptitude - 搜索词参考
如果 PPA 存储库被删除,软件包将过时。或者使用此过滤器代替~Oppa | -o
参考:
apt-cache
例如,可以使用检查已安装软件包的来源
$ apt-cache policy oracle-java7-installer
oracle-java7-installer:
Installed: 7u51-0~webupd8~7
Candidate: 7u51-0~webupd8~7
Version table:
*** 7u51-0~webupd8~7 0
500 http://ppa.launchpad.net/webupd8team/java/ubuntu/ precise/main i386 Packages
100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)
的输出apt-cache policy <package_name>
包含源。
可以使用以下脚本获取从 PPA 安装的软件包列表。
oracle-java7-installer:
Installed: 7u51-0~webupd8~7
Candidate: 7u51-0~webupd8~7
Version table:
*** 7u51-0~webupd8~7 0
500 http://ppa.launchpad.net/webupd8team/java/ubuntu/ precise/main i386 Packages
100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7088 次 |
最近记录: |