Мой рабочий процесс включает систему Ubuntu, которой поделились многие другие люди, причем некоторые из них являются sudoers. Некоторые sudoers случайно удалили пакеты, когда пытались установить новые, и это вызвало хаос, будь то пакеты, которые нужны другим или им самим.
Как я могу обеспечить, чтобы менеджеры пакетов «блокировали» пакеты от удаления или, по крайней мере, отображали пользовательское предупреждающее сообщение, чтобы напомнить sudoer о зависимости пользователя перед удалением пакета?
Я согласен с user535733 в том, что вы должны обучать своих пользователей, имеющих права sudo, не удалять пакеты, если они не знают, для чего эти пакеты.
Однако в более новых версиях apt (> 1.4 - по крайней мере, Ubuntu 17.04) вы можете пометить пакет как «существенный» или «важный». В Debian bug # 767891 был принят патч, позволяющий сделать что-то вроде:
sudo apt-get -o pkgCacheGen::ForceEssential=gedit update
Чтобы пометить пакет как Essential
(или Important
) - в этом Например, пакет gedit
. Для основных пакетов apt показывает предупреждение, которое гораздо сложнее отклонить:
~ sudo apt-get remove bash
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED
bash bash-completion lightdm ubuntu-desktop
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
bash
0 to upgrade, 0 to newly install, 4 to remove and 26 not to upgrade.
After this operation, 7,776 kB disk space will be freed.
You are about to do something potentially harmful
To continue type in the phrase ‘Yes, do as I say!’
?]
Да, вам действительно нужно ввести точную фразу, включая знаки препинания.
До версии 1.4 вы могли установить фиктивный пакет, используя equivs
или что-то подобное, помеченное как «существенное» и зависящее от пакетов, для которых вы хотите показать предупреждение. Затем любая попытка удалить эти пакеты приведет к удалению необходимого фиктивного пакета с отображением предупреждения.