编写通过apt-get to File手动调用安装的软件包列表

我正在尝试从头开始安装新版本的Ubuntu,但我想要一个我手动安装的软件包列表(而不是作为依赖项安装或与系统一起安装)。

通过查看我的Installed (manual)软件包,然后只查看Ubuntu 支持的软件包(即所有那些没有Ubuntu Unity符号的软件包),我可以在Synaptic上获得合理的近似值。 但是,我似乎无法让Synaptic导出这些包的列表。

因此我的问题是,是否可以生成通过apt-get install命令手动安装的软件包列表?

以下不起作用:

  • 使用apt-mark showmanual 。 它产生所有被视为必需的包以及手动安装的包。 我只想要我手动安装的软件包。
  • aptitude search '!~M ~i' 。 有太多的软件包正在显示(我无法手动安装> 1000个软件包)。
  • @txwikinger在生成手动安装的包列表和查询单个包时给出的Python脚本。 我安装了一些包(例如bsdgames ),但是没有显示在该脚本的输出中。
  • @Johan在https://serverfault.com/questions/133681/generating-a-list-of-installed-packages-in-ubuntu中给出的bash脚本。 再次显示太多包。

这个问题与Stack Exchange站点和其他地方提出的其他问题类似(例如生成手动安装的包列表和查询单个包 , https://serverfault.com/questions/133681/generating-a- list-of-installed-packages-in-ubuntu ,和http://ubuntuforums.org/showthread.php?t=947865&page=2 )。

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727799上的David Kalnischkies提供了一些关于为什么难以确定“手动安装”意味着什么很困难的观点(例如,你运行的程序是否安装了包计为“手动安装”?)。 因此,我特别限制了这个问题(与我列出的其他问题不同)仅限于apt-get install调用。

编辑: 如何查看手动安装而没有依赖项的软件包列表,这样可以很好地使用apt-get的日志文件来执行此操作。 不幸的是,这并没有跟踪哪些包已被删除。 即使我只是简单地grep 'apt-get purge'并采取我得到的两个列表的diff仍然不会解释我已经安装了一个包,卸载它,然后重新安装它的边缘情况。

由于未找到使用apt的答案,我建议进入Synaptic Package Manager ,单击左下方的Status按钮,然后单击左上角的Installed(手动)以查看已安装软件包的列表。

列出已安装软件包的Synaptic

然后,您可以使用File | Save Markings As从Synaptic输出列表 File | Save Markings As保存为并将文件保存在可以使用它的位置。

我刚才在这个关于此的页面上发布了这个想法,对不起,如果那是不礼貌的(如果是的话随意删除)但是

  1. 在http://releases.ubuntu.com/上获取您的Ubuntu版本的“manifest”文件,据我所知,它列出了库存安装中的所有软件包。
  2. 使用apt-mark showmanual生成apt-mark认为已手动安装的所有包的列表。
  3. 消除该列表与清单之间的重复,将包留在apt-mark showmanual的输出中,而不是库存安装的一部分。

可能这是粗略的,并没有处理究竟构成“手动安装”包的细节,但对我来说它看起来是一个非常好的近似。 或者Synaptic解决方案可能是最好的。