![将通过手动调用 apt-get 安装的软件包列表写入文件](https://linux22.com/image/1100635/%E5%B0%86%E9%80%9A%E8%BF%87%E6%89%8B%E5%8A%A8%E8%B0%83%E7%94%A8%20apt-get%20%E5%AE%89%E8%A3%85%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%88%97%E8%A1%A8%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6.png)
我正在尝试从头开始安装新版本的 Ubuntu,但我想要一个我手动安装的软件包列表(而不是作为依赖项安装或随系统附带的软件包)。
Installed (manual)
我可以在 Synaptic 上通过只查看我的包,然后只查看那些包来获得合理的近似值不是Ubuntu 支持的软件包(即所有没有 Ubuntu Unity 符号的文件)。但是,我似乎无法让 Synaptic 导出这些软件包的列表。
因此我的问题是是否可以生成通过命令手动安装的软件包列表apt-get install
?
以下操作不是工作:
- 使用
apt-mark showmanual
。它会显示所有被视为必需的软件包以及手动安装的软件包。我只想要手动安装的软件包。 aptitude search '!~M ~i'
。 有方式显示的包太多(我不可能手动安装超过 1000 个包)。- @txwikinger 提供的 Python 脚本生成手动安装的软件包列表并查询单个软件包。有一些
bsdgames
我安装的包(例如),但没有显示在该脚本的输出中。 - @Johan 给出的 bash 脚本https://serverfault.com/questions/133681/generating-a-list-of-installed-packages-in-ubuntu。再次显示了过多的包。
这个问题和 Stack Exchange 网站以及其他地方提出的其他问题类似(例如生成手动安装的软件包列表并查询单个软件包,https://serverfault.com/questions/133681/generating-a-list-of-installed-packages-in-ubuntu, 和http://ubuntuforums.org/showthread.php?t=947865&page=2)。
David Kalnischkieshttp://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727799给出了一些观点,说明为什么准确定义“手动安装”的含义很困难(例如,您运行的程序中安装了哪些软件包,这些程序算作“手动安装”吗?)。因此,我专门将这个问题(与我列出的其他问题不同)限制为仅调用apt-get install
。
编辑:如何查看手动安装的不包含依赖项的软件包列表有个好主意,就是使用 apt-get 的日志文件来执行此操作。不幸的是,这不会跟踪哪些软件包已被删除。即使我简单地从我得到的两个列表中grep 'apt-get purge'
选择diff
,它仍然无法解释我安装软件包、卸载它然后重新安装它这种极端情况。
答案1
由于没有答案使用易于已经找到,我建议进入Synaptic 软件包管理器,单击左下方的状态按钮,然后单击左上角的已安装(手动)以查看已安装软件包的列表。
然后,您可以从 Synaptic 输出列表File | Save Markings As
并将文件保存到可以使用的位置。
答案2
我刚刚在之前的页面上发布了这个想法,如果这不礼貌的话,我很抱歉(如果是这样的话,请随意删除它),但是
- 前往以下网址获取适用于你的 Ubuntu 版本的“清单”文件http://releases.ubuntu.com/ 据我了解,它列出了库存安装的所有软件包。
- 生成
apt-mark showmanual
apt-mark 认为已手动安装的所有软件包的列表。 - 消除该列表和清单之间的重复,保留输出中
apt-mark showmanual
不属于库存安装的包。
这可能有点粗糙,没有处理“手动安装”软件包的具体构成,但对我来说,这看起来是一个相当不错的近似值。或者也许 Synaptic 解决方案是最好的。