Блокировка пакета от удаления в APT

8

Короче говоря, я хочу иметь возможность установить пакет abcтак, чтобы:

  1. apt-get remove abc должен потерпеть неудачу.
  2. apt-get purge abc должен потерпеть неудачу.
  3. apt-get upgrade abc должно сработать.

Если зависимости пакета изменяются так, что abcих следует удалить во время, dist-upgradeя рад, что меня заставляют что-то делать, а затем dist-upgradeснова.

Исключен
источник
Я создал существенный метапакет , который зависит от abc, но он был удален в любом случае ... Я думаю , что вы должны перекомпилировать abcнастройки Essential: yesи Priority: requiredвdebian/control
Тересе х Юниор
@TeresaeJunior Странно, существенный пакет, в defзависимости от того, abcдолжен был работать. Был defудален? Это поможет, если вы делаете def Priority: required?
Жиль "ТАК - перестань быть злым"
@Gilles Точно, я поставил как Essential: yesи Priority: requiredи он был удален без каких - либо предупреждений. Я создал этот небольшой скрипт для создания пакета, если вы хотите посмотреть: paste.org/44184
Teresa e Junior
Я вижу, что это Essential: yesбыло проигнорировано, поэтому equivsне достаточно для этого ... Может быть, если пакет создан с debuild, я попробую.
Тереза ​​и Джуниор

Ответы:

5

На самом деле нет ничего, что могло бы «закрепить» пакет, чтобы предотвратить удаление, но разрешить обновление.

Вы можете вбить шип в пакет, его нельзя удалить, очистить, обновить, лизнуть, что угодно ...

Но это немного сложнее, чем большинство вещей.

Например, мы хотим закрепить firefox: (вы, конечно, используете правильное полное имя пакета)

echo firefox hold | dpkg --set-selections

что сделало бы « Firefox » бессмертным. НО в этом состоянии его тоже нельзя обновить.

Удалить статус удержания немного проще, но это своего рода широкий жест:

dpkg --clear-selections

удаляет статус HOLD из ВСЕГО! Так что, если вы хотите сохранить несколько пакетов, лучше сохранить список для повторного применения позже

На самом деле это довольно приятно и легко выполнить с помощью aptitude или synaptics , так как у них есть опции меню для удержания / снятия пакета, заботясь обо всей бухгалтерии за кулисами для вас. Я бы рекомендовал использовать один из них (или любой из множества других менеджеров пакетов, с которыми вы можете столкнуться)

С Aptitude возможно использование командной строки:

aptitude hold <package>
aptitude unhold <package>

Помните, однако, что вам нужно что-то « убрать », если вы хотите обновить его. Хотя, если вы используете сторону Aptitude с графическим интерфейсом, он должен сказать вам, является ли что-то, что хранится, обновляемым

lornix
источник
1
apt-getс удовольствием удалит сохраненный пакет.
Багамат