我想获得通过 USC 或终端安装的程序列表,但不包含它们的依赖项。可以吗?如果可以,请以哪种模式?我使用 Ubuntu 13.10 谢谢
答案1
如果您已经使用安装sudo apt-get install
,我可以展示如何获取软件列表(而不是依赖项)。
$ cat /var/log/apt/history.log > ~/Desktop/allhistory.log && zcat /var/log/apt/history.log*gz >> ~/Desktop/allhistory.log
将在您的桌面上创建一个名为“allhistory.log”的简单文本文件。
您还将看到以下内容,例如:
Start-Date: 2014-02-07 20:54:06
Commandline: apt-get install spell
Install: spell:amd64 (1.0-24), ispell:amd64 (3.3.02-6, automatic), ienglish-common:amd64 (3.3.02-6, automatic), iamerican:amd64 (3.3.02-6, automatic)
End-Date: 2014-02-07 20:54:15
看看第二行和第三行。你想要的在第二行。你不想要的依赖项在第三行。这就是我喜欢用命令行安装/删除/清除的原因。
现在,要制作列表,只需运行:
$ grep ^"Commandline: apt-get install" ~/Desktop/allhistory.log > ~/Desktop/installed_apps.log
您将获得如下列表:
Commandline: apt-get install --no-install-recommends rox-filer
Commandline: apt-get install spell
Commandline: apt-get install ibritish
Commandline: apt-get install htop
Commandline: apt-get install --no-install-recommends python-pip
Commandline: apt-get install bootchart
显然,您可以进一步清理输出。
请注意,以上内容不适用于通过任何其他方法安装。
答案2
依赖关系不过是程序
需要注意的是,依赖项就是程序。程序和依赖项之间没有区别。
有时,您可能认为是依赖项,可能是可以独立运行的完整软件。
简而言之,这是不可能的。但你可以使用命令获取完整列表
dpkg -l
如果你想要仅列出与模式匹配的命令
dpkg -l <pattern>
将会完成这项工作。
答案3
您可以使用以下命令列出软件包的依赖项apt-cache depends <pkg>
要列出一些不依赖于其他软件包的软件包,请使用一些命令行功能:
dpkg -l|grep ^ii|while read a b c; \
do apt-cache depends $b|grep -q Depends: || echo $b; done