Debian 如何禁止apt在dist升级期间删除某些包?

Debian 如何禁止apt在dist升级期间删除某些包?,debian,apt,Debian,Apt,是否有任何方法禁止apt(apt get)在dist升级期间删除特定软件包,但允许其升级/降级?要防止特定软件包升级,应将其挂起: 您可以使用以下方式保存包: sudo apt-mark hold package_name 或 或: 要删除保留,您应运行: sudo apt-mark unhold package_name 或 或 将软件包列入黑名单: 您可以在/etc/apt/apt.conf.d/01autoremove下添加您的包,编辑您的文件,然后在从不标记自动节下添加所需的包我尝试

是否有任何方法禁止apt(apt get)在dist升级期间删除特定软件包,但允许其升级/降级?

要防止特定软件包升级,应将其挂起:

您可以使用以下方式保存包:

sudo apt-mark hold package_name

或:

要删除保留,您应运行:

sudo apt-mark unhold package_name

将软件包列入黑名单:


您可以在
/etc/apt/apt.conf.d/01autoremove
下添加您的包,编辑您的文件,然后在
从不标记自动节下添加所需的包

我尝试了使用等效的解决方案:

创建一个如下所示的控制文件:

Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: my-dummy-essential
Depends: emacs, kdenlive, firefox, kde-plasma-desktop, task-kde-desktop, task-french-kde-desktop, mypaint, keepassxc, tmux, zsh, openssh-client
Prerm: my-prerm
Description: just a package that refuse to be unistalled
Dependes行应包含要保护的包的列表

prerm行引用了一个脚本(此处名为my prerm):

#/bin/sh-e
如果[“$1”!=删除];然后
出口0
fi
echo“您确定要删除您的基本软件包吗?(是/否)”
读我
如果[“x$i”=“xy”];然后
出口0
fi
假的

其想法是,此prerm脚本将失败(除非您接受删除包),这将阻止删除包及其依赖项。

apt通常不只是删除包,除非它是自动安装的(在这种情况下,您可以将其设置为手动),或者如果有新包替换它。你面临的确切情况是什么?它是一个lib还是一个程序?我的家庭系统(amd64+i386)上的libc6包有问题。现在debian的libc6:i386=2.24-5和libc6:i386=2.24-6。在dist升级过程中,apt删除了我的xorg-xserver内核、nvidia驱动程序,使我没有桌面。我想“锁定”它们以防止此类事情发生,但我想允许升级/降级。不幸的是,hold禁止软件包升级。这不是我想要的。我想允许升级/降级软件包,但禁止卸载。
sudo apt-mark unhold package_name
sudo aptitude unhold package_name
echo "package_name install" | sudo dpkg --set-selections
Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: my-dummy-essential
Depends: emacs, kdenlive, firefox, kde-plasma-desktop, task-kde-desktop, task-french-kde-desktop, mypaint, keepassxc, tmux, zsh, openssh-client
Prerm: my-prerm
Description: just a package that refuse to be unistalled