Sha*_*jna 15 package-management apt dpkg dependencies cinnamon
I was compiling a tool called Rejoystick so I installed a few packages and dependencies. But now I don't need it any more so I removed those packages. Running apt-get shows that I have some packages that are automatically installed and are no longer needed.
But I have a bad experience with apt-get autoremove. It broke my desktop environment when I uninstalled wine some time ago. Luckily, I had a clonezilla partition backup then, but this time, I don't have a backup. So I'm cautious. Running apt-get shows these packages are orphaned
gir1.2-gtk-2.0 libasound2-dev libavahi-client-dev libavahi-common-dev
libcaca-dev libcairo-script-interpreter2 libdbus-1-dev libdrm-dev
libexpat1-dev libfontconfig1-dev libfreetype6-dev libgl1-mesa-dev
libglu1-mesa-dev libharfbuzz-dev libharfbuzz-gobject0 libice-dev
libpcre3-dev libpcrecpp0 libpixman-1-dev libpng12-dev libpthread-stubs0-dev
libslang2-dev libsm-dev libx11-dev libx11-doc libx11-xcb-dev libxau-dev
libxcb-dri2-0-dev libxcb-dri3-dev libxcb-glx0-dev libxcb-present-dev
libxcb-randr0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-shm0-dev
libxcb-sync-dev libxcb-xfixes0-dev libxcb1-dev libxcomposite-dev
libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev
libxft-dev libxi-dev libxinerama-dev libxrandr-dev libxrender-dev
libxshmfence-dev libxxf86vm-dev mesa-common-dev x11proto-composite-dev
x11proto-core-dev x11proto-damage-dev x11proto-dri2-dev x11proto-fixes-dev
x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev
x11proto-record-dev x11proto-render-dev x11proto-xext-dev
x11proto-xf86vidmode-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev
zlib1g-dev
Run Code Online (Sandbox Code Playgroud)
I'm not sure if I should run apt-get autoremove. I was searching details related to each of these packages so that I can understand which ones are needed but they all seem important e.g.
gir1.2-gtk-2.0
I have Cinnamon, GNOME and Unity installed, I think apt-get autoremove will break something. Any help will be appreciated.
Thanks for reading.
tob*_*s_k 12
正如其他人提到的,autoremove 应该是安全的,但话说回来,你说你有不好的经历,我还记得autoremove删除了一些不应该删除的东西。
似乎autoremove某些元软件包可能存在问题。假设您gnome为整个 gnome-desktop安装了元软件包(或者在设置系统时安装了它),其中还包括诸如evolution许多游戏之类的程序,您可能想要删除这些程序,因为您正在使用thunderbird并且不想要有那些游戏之类的。这要求您还删除gnome元包,因为它依赖于所有这些包。但这将使所有其他作为gnome“自动删除”依赖项安装的软件包,包括 eg gnome-shell,如果您想继续使用该桌面,您最有可能希望保留这些软件包。
因此,检查推荐用于自动删除的软件包总是一个好主意。如果您使用的是图形包管理器,例如synaptic,您可以轻松地这样做,并从要保留的包中取消选中“自动安装”标志(gnome-shell如上例所示)。这也将删除所有软件包的依赖于从自动拆除的名单,所以你可能只需要“修复”那几个,而不是全部。
尽管如此,它不应该删除对您的系统真正重要的任何内容,因此即使您不小心删除了例如桌面,您仍然可以启动并登录到您的系统并使用命令行恢复这些更改。
更新:最近在dist升级(Debian)后,autoremove实际上删除了一些与硬盘加密有关的东西(仍然不确定到底是什么,可能与这里描述的问题有关),导致我的系统无法解密硬盘并启动使用最新的内核。幸运的是,它仍然可以使用仍然安装的旧内核,我可以重新安装以前自动删除的所有内容,否则我的系统会被破坏,包括我的数据。
我认为apt和朋友中没有“撤消上次更改”选项。在synaptic有一个菜单选项,看看在过去的变化(文件- >历史,似乎只是显示一些日志文件,但我无法找到日志自己;还有,我不知道这是否只是列出的变化突触或也取得了例如在apt等),所以我从这些日志中复制了自上次成功重启(幸运的是,我每天重启)以来我自动删除的所有软件包的名称,然后重新安装它们,然后重新启动。
令人惊讶的是,还没有人提到--dry-run和等效的选项:
从apt-get的手册页:
-s, --simulate, --just-print, --dry-run, --recon, --no-act
无动作。对可能发生但实际上不会改变系统的事件进行模拟。配置项:APT::Get::Simulate。
Simulate 打印出一系列行,每行代表一个 rpm 操作:配置 (Conf)、移除 (Remv)、解包 (Inst)。
此选项似乎适用于apt和apt-get命令。
示例输出:
sudo apt-get autoremove --dry-run
[...]
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
linux-headers-5.8.0-36-generic linux-hwe-5.8-headers-5.8.0-36 linux-image-5.8.0-36-generic
linux-modules-5.8.0-36-generic linux-modules-extra-5.8.0-36-generic
0 upgraded, 0 newly installed, 5 to remove and 13 not upgraded.
Remv linux-headers-5.8.0-36-generic [5.8.0-36.40~20.04.1]
Remv linux-hwe-5.8-headers-5.8.0-36 [5.8.0-36.40~20.04.1]
Remv linux-modules-extra-5.8.0-36-generic [5.8.0-36.40~20.04.1]
Remv linux-image-5.8.0-36-generic [5.8.0-36.40~20.04.1]
Remv linux-modules-5.8.0-36-generic [5.8.0-36.40~20.04.1]
Run Code Online (Sandbox Code Playgroud)
因此,我建议您可以autoremove使用该--dry-run选项运行,冷静地研究输出,然后根据此决定要做什么。
另一个观察结果:如果定期运行 autoremove,那么 autoremovable 包不会堆积,因此监督和评估每次试运行的输出仍然更可行。
运行它应该是完全安全的。sudo apt-get autoremove这应该只删除不再使用或不再需要的包。如果它是一个必要的软件包,如果删除它会“破坏”您的系统,那么就不应该删除它。