apt-get autoremove 危险吗?

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等),所以我从这些日志中复制了自上次成功重启(幸运的是,我每天重启)以来我自动删除的所有软件包的名称,然后重新安装它们,然后重新启动。


Lev*_*nte 5

令人惊讶的是,还没有人提到--dry-run和等效的选项:

apt-get手册页

-s, --simulate, --just-print, --dry-run, --recon, --no-act
无动作。对可能发生但实际上不会改变系统的事件进行模拟。

配置项:APT::Get::Simulate。
Simulate 打印出一系列行,每行代表一个 rpm 操作:配置 (Conf)、移除 (Remv)、解包 (Inst)。

此选项似乎适用于aptapt-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 包不会堆积,因此监督和评估每次试运行的输出仍然更可行。

  • 我喜欢这个答案。每次安装新内核时,我都会使用 autoremove 来摆脱 n-2 内核。有时也是在安装了一个我最终不喜欢的包之后。但由于我的系统“整洁”,我可以将它要删除的内容与刚刚安装的内容进行比较。就我而言,如果 autoremove 想做一些大规模的事情,它会告诉我我犯了一个错误。 (2认同)

Dnr*_*vil 3

运行它应该是完全安全的。sudo apt-get autoremove这应该只删除不再使用或不再需要的包。如果它是一个必要的软件包,如果删除它会“破坏”您的系统,那么就不应该删除它。