![仅列出用户使用 apt(或其他 pkg man)专门安装的软件包。不包含依赖项和默认软件包。不使用历史记录](https://linux22.com/image/1612912/%E4%BB%85%E5%88%97%E5%87%BA%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%20apt%EF%BC%88%E6%88%96%E5%85%B6%E4%BB%96%20pkg%20man%EF%BC%89%E4%B8%93%E9%97%A8%E5%AE%89%E8%A3%85%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E3%80%82%E4%B8%8D%E5%8C%85%E5%90%AB%E4%BE%9D%E8%B5%96%E9%A1%B9%E5%92%8C%E9%BB%98%E8%AE%A4%E8%BD%AF%E4%BB%B6%E5%8C%85%E3%80%82%E4%B8%8D%E4%BD%BF%E7%94%A8%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95.png)
所以基本上只有诸如等等命令中提到的那些sudo apt install X
……
我还没有看到任何关于此的帖子。只有关于系统上所有已安装的软件包,无论它们是依赖项还是实际由我安装的。
因此,如果我只安装了一个包:
user@host 31/12/2019 00:33:15 :/sys/class/power_supply $ sai tlp
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
ethtool tlp-rdw
我只想得到tlp
而不是ethtool tlp-rdw
。
PS:我正在寻找一种不需要使用 bash 历史记录的解决方案。(原因:超出历史记录限制 | 多个会话相互覆盖 | 旧机器 | 朋友电脑 | 等等......)
答案1
在 bash shell 中运行以下命令列出所有手动安装的包:
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
此命令与使用 apt 包管理器的操作系统兼容。在问题的第一句中你提到sudo apt install
。我假设你的操作系统使用 apt,因此上述命令将在其上成功运行。
此命令可用于准备手动安装的软件包列表,以便 apt 在另一台计算机上安装。在将手动安装的软件包列表安装到另一台计算机上之前,最好先查看列表并从列表中删除已安装但使用不多的软件包,尤其是占用大量磁盘空间的大型软件包。