it-swarm.com.ru

Как предотвратить обновление определенного пакета?

Из-за ошибка # 693758 Я бы хотел, чтобы apt-get upgrade и Update Manager не обновляли пакет "libgtk2.0-0".

Как этого достичь?

363
Ivan

Держа

Существует четыре способа удержания пакетов: с помощью dpkg, apt, aptitude или dselect.

dpkg

Поставить пакет на удержание:

echo "<package-name> hold" | Sudo dpkg --set-selections

Снять трюм:

echo "<package-name> install" | Sudo dpkg --set-selections

Показать статус ваших пакетов:

dpkg --get-selections

Показать статус одного пакета:

dpkg --get-selections | grep "<package-name>"

склонный

Держите посылку:

Sudo apt-mark hold <package-name>

Снять трюм:

Sudo apt-mark unhold <package-name>

dselect

С помощью dselect, войдите в экран [S] elect, найдите пакет, который вы хотите сохранить в его текущем состоянии, и нажмите = или же H, Изменения вступят в силу сразу после выхода из экрана выбора [S].


Следующие подходы ограничены тем, что блокировка/удержание пакета в aptitude или synaptic не влияет на apt-get/apt.

aptitude

Держите посылку:

Sudo aptitude hold <package-name>

Снять трюм:

Sudo aptitude unhold <package-name>

Блокировка с помощью Synaptic Package Manager

Перейдите в Менеджер пакетов Synaptic (Система> Администрирование> Менеджер пакетов Synaptic).

Нажмите кнопку поиска и введите имя пакета.

Когда вы найдете пакет, выберите его и перейдите в меню Package и выберите Lock Version.

Synaptic menu

Этот пакет теперь не будет отображаться в диспетчере обновлений и не будет обновляться.

542
hhlp

Чтобы поставить пакет "foo" на удержание:

echo "foo hold" | dpkg --set-selections

В вашем случае мы собираемся приостановить производство вина:

Sudo -i
echo "wine hold" | dpkg --set-selections

Чтобы снять трюм:

Sudo -i
echo "wine install" | dpkg --set-selections
43
Panther

Я искал то же самое, и после многих исследований я обнаружил, что используя следующий синтаксис, вы можете запретить одну конкретную версию, но разрешить следующее обновление:

 Пакет: compiz-plugins-main 
 Пин: версия 1: 0.9.7.0 ~ bzr19-0ubuntu10.1 
 Приоритет пина: -1 

Это идет в файл/etc/apt/preferences.

33
soger

Установите synaptic, используя Sudo apt-get install synaptic.

Запустите с помощью gksudo synaptic и в окне поиска найдите пакет, который вы хотите заблокировать, а именно: gedit

enter image description here

В меню пакета выберите Lock version:

enter image description here

И это все, версия, установленная на момент блокировки, останется установленной даже во время обновлений.

19
Bruno Pereira

Запрет установки пакета называется "удержанием пакета", и это очень просто сделать:

 Эхо имя пакета держать | dpkg --set-selections 

... где * имя_пакета * - это имя пакета, который вы хотите запретить установку.

Примечание: вышеупомянутая команда принимает привилегии root. Другими словами, вам, вероятно, нужно будет ввести Sudo su перед его запуском.

16
RobotHumans

Поскольку некоторое время apt-get заменяется на apt, например, я хочу запретить обновление Firefox до версии выше 56, так как множество надстроек, таких как "Группы вкладок" , больше не работают с новым Firefox 57 (см. "Обновление WebExtensions").

Можно удерживать более одного пакета одной командой и использовать подстановочные знаки.

Запретить обновление Firefox

Sudo apt-mark hold firefox firefox-locale-*

Если вы захотите отменить их позже, это будет команда:

Sudo apt-mark unhold firefox firefox-locale-*
5
rubo77

Я синаптически могу заморозить версию определенного пакета. Я не уверен на 100% в том, что это изменит apt-get, но определенно остановит менеджер обновлений.

Чтобы заморозить пакет, выберите его в synaptic, затем откройте меню пакета и выберите "заморозить версию".

Надеюсь это поможет

Правка: это вопрос 16668 имеет дело с аналогичной ситуацией

4
Allan

Смотрите ошибки # 75332 , # 158981 и # 72806 .

В итоге, удержание на уровне apt-get/aptitude не вызывает состояние удержания в dpkg (особенно см. Ошибку 72806), а менеджер обновлений считывает состояние из dpkg.

обходной путь запускается от имени пользователя root: echo "package hold" | dpkg --set-selections

3
jasper

Все, что вы когда-либо хотели знать о "хранении" и "закреплении" пакетов в определенных версиях: https://help.ubuntu.com/community/PinningHowto

3
Jeff Ferland

Вы можете использовать на aptitude "конкретное переопределение", например так:

aptitude reinstall ~i Oracle-Java8-jre:

Это однократное использование (не сохраняется для будущих переустановок), сохранение определенного переопределения для переустановки всех пакетов в вашей системе, но не Oracle-Java8-jre.

Если вы используете специальное переопределение keep, пакет на мгновение будет в состоянии keep aptitude не будет пытаться установить его.

Очень хорошая вещь, если вы думаете, что ваша система была скомпрометирована каким-то образом.

2
cabonamigo

Если у вас установлен Synaptic, вы можете выбрать пакет и использовать меню Package -> Lock Version, чтобы предотвратить его обновление.

Вы можете установить Synaptic с помощью Sudo apt-get install synaptic. Я лично нахожу это более полезным, чем Центр программного обеспечения ... опять же, я довольно старая школа. :)

1
dinchamion

Иногда можно удерживать все установленные в данный момент пакеты. Вот как.

Сначала сохраните текущее состояние, чтобы вы могли отменить:

dpkg --get-selections > current_selections.txt

Затем, чтобы сдержать все пакеты:

dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections

Наконец, когда вы хотите вернуться к предыдущему состоянию:

dpkg --set-selections < current_selections.txt

Одним из вариантов использования этого может быть создание VM или Amazon AMI снимка для миграции из QA в производственную среду.

0
JVW

Добавление подробностей в комментарии @ soger относительно Ubuntu 16.04.

Ubuntu 16.04 по умолчанию не имеет существующего файла/etc/apt/preferences. Если у вас его нет, просто создайте новый файл и заполните его разделом, как @soger описывает выше, чтобы исключить данный пакет и его зависимости из обновлений.

После этого запустите apt update и вы GTG. : 0)

Например, у меня есть сервер Ubuntu 16.04.5 LTS со встроенной видеокартой Intel и картой NVidia. Карта NVidia используется только одна. Сервер также использует драйверы CUDA. У меня была проблема, когда apt продолжал настаивать

в-водитель-все

(Драйверы Intel) требовали обновления, но не могли определить, какую версию установить. Это сводило меня с ума, и мне все равно не нужны были драйверы Intel. Я ввел этот текст в файл настроек и очистил apt, проблема решена.

Package: va-driver-all
Pin: release *
Pin-Priority: -1
0
MrPotatoHead