我有一个 Fedora 28 系统(编辑:从 Fedora 27 升级,而不是全新安装)。我可以运行dnf list --installed
来列出我的系统上安装的 2165 个软件包。我可以运行dnf leaves
(使用 leaves 插件)来列出所有 368 个软件包,这些软件包是独立安装的,而不是作为其他东西的依赖项。
叶子列表包括诸如 之类的东西sudo-1.8.22-0.2.b1.fc28.x86_64
,它是系统的一个非常重要的部分,以及诸如 之类的东西steam-1.0.0.54-17.fc28.i686
,它不是系统的重要部分,并且存在,因为我自己安装了它。
Fedora / RPM / dnf 是否有“属于基本系统一部分的软件包”而不是“用户要求的软件包”的概念?如果是这样,有什么办法列出所有后面的包吗?如果没有,是否有其他方法可以生成该列表,甚至是近似的?
我的最终目标是通过删除我安装但不再需要的旧软件包来清理我的系统。问题是我不知道我安装了什么。
答案1
dnf
区分 [1]
- 手动安装的包
- 仅作为手动安装的软件包的依赖项安装的软件包
- 作为组的一部分安装的软件包
要获取“用户请求的包”列表,您可以使用 列出上面的类别 (1) sudo dnf repoquery --userinstalled
。
[1]https://dnf.readthedocs.io/en/latest/command_ref.html#mark-command-label
答案2
你可以尝试
dnf history
这应该或多或少地为您提供您通过dnf
.我真的不知道这段历史可以追溯到多远(时间)。
获取有关包修改信息的另一个地方是查看/var/log/yum.log
.但日志默认会轮换,这只会给您一个很小的时间窗口来重建修改。
答案3
dnf history userinstalled
看起来很有希望。它只列出了 142 个软件包,其中一些是我认识的,但其中一些是内核和常见的系统软件包。
但是,如果我查看“用户安装”包和叶子的交集:
comm -12 <(dnf leaves | sort) <(sudo dnf history userinstalled | sort)
有大约 50 个包,其中大多数看起来至少有些熟悉:
- 尝试让硬件正常工作:acpi Broadcom-wl dkms kmod-wl lshw vulkan
- 编程: gcc-gdb-plugin java-1.8.0-openjdk java-1.8.0-openjdk-devel libomp
- 最喜欢的工具: apg ffmpeg lastpass-cli Mercurial mosh youtube-dl zsh
- PDF 关键:ghostscript-tools-fonts Ghostscript-tools-printing texlive-epstopdf-bin
- 桌面实用程序: clementine feh steam Transmission-cli vlc
- Android 东西: android-tools jmtpfs libmtp-examples simple-mtpfs
- RPMFusion: rpmfusion-free-release rpmfusion-nonfree-release
- 解决这个问题:dnf-utils python3-dnf-plugin-leaves
然后是一堆我无法真正解释的东西: compat-ffmpeg28 dracut-live fedora-obsolete-packages langpacks-en libnsl2 memtest86+ openssl-pkcs11 python2-beautifulsoup4 python3-beautifulsoup4 python3-dnf-plugin-system-upgrade python2- pypam python3-cssselect python3-html5lib webkit2gtk3-plugin-process-gtk2
我不能确定这就是我自己安装的所有东西,但至少它是其中的很大一部分。