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


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

Как это можно достичь?


318
2017-12-23 17:29


Источник


@hhlp: Но этот вопрос спрашивает о пакете, который никогда не был установлен. - Nathan Osman
@George Edison. Также есть пакетный пакет, который позволяет вам не обновлять пакет. поэтому хранение пакета в основном означает, что вы говорите менеджеру пакетов, чтобы он сохранял текущую версию, несмотря ни на что. Это полезно, если более новая версия текущей рабочей программы прерывается после обновления. (вы не можете держать пакет, который никогда не был установлен, также см. мой вопрос тот же) .... я протестировал это прямо сейчас - см. он сказал disable packages from the auto-update - hhlp


Ответы:


Держа

Существует четыре способа сдерживания пакетов: с 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], найдите пакет, который вы хотите сохранить в текущем состоянии, и нажмите знак равно или ЧАС, Изменения вступят в силу сразу же после выхода из экрана выбора [S].


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

уместность

Держите пакет:

sudo aptitude hold <package-name>

Удалите трюм:

sudo aptitude unhold <package-name>

Блокировка с помощью диспетчера пакетов Synaptic

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

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

Когда вы найдете пакет, выберите его и перейдите к пакет меню и выберите Версия блокировки,

Synaptic menu

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


464
2017-12-23 18:04



Это также помогает предотвратить установку пакета. При установке devscripts, многие упакованные вытягиваются как рекомендуемые пакеты. Поскольку мне не нужен почтовый сервер (postfix), я могу отключить его установку, выполнив echo postfix hold | sudo dpkg --set-selections перед запуском sudo apt-get install devscripts, Это действие удержания сохраняется только для этой установки, после установки происходит сброс настроек. - Lekensteyn
Также стоит отметить, что пакеты пакетов иногда прерывают обновления и исправления, создавая ситуацию, когда нет законного решения, способного вычислять зависимость. Если пакет foo имеет зависимость == <или <= от libbar, тогда apt откажется обновить libbar, а также foo. Со временем эти каскадные зависимости могут увеличиться, чтобы блокировать большое количество обновлений, включая важные обновления безопасности. Вам нужно либо удалить трюм, либо продолжить обновление, либо перестроить пакеты, которые вы держите против более новых версий зависимостей, если это произойдет. - Stephanie
Просто примечание: apt-markне поддерживает hold в версии 0.7.25 (Ubuntu Lucid) - Joril
Это особенно полезно при попытке сместить графические драйверы. Для пользователей ATI, apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev, - earthmeLon
В настоящее время synaptic и aptitude только блокируют пакеты в рамках этих программ. «Все, что делает обновления пакетов (читай: Update Manager, apt-get, aptitude и т. Д.), Игнорирует это». Из этот вопрос, - holocronweaver


Чтобы положить пакет «foo» в режим ожидания:

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

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

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

Чтобы удалить трюм:

sudo -i
echo "wine install" | dpkg --set-selections

43
2017-12-08 20:15



Также обратите внимание, что пока пакет приостановлен, вы Можно установить определенную версию через apt-get install wine=1.2.3, Наложение на удержание предотвращает apt-get (dist-)upgrade от его изменения. - rcoup


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

Пакет: compiz-plugins-main
Вывод: версия 1: 0.9.7.0 ~ bzr19-0ubuntu10.1
Pin-Priority: -1

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


27
2017-07-22 11:13



Это намного лучший способ, чем предотвращение обновлений на неопределенный срок - Eero Aaltonen
С помощью этого метода, я думаю, шансы больше, чтобы предотвратить «рекламное ПО» ubuntu, например, ubuntu one или значок Amazon от переустановки с последующим обновлением версии ... - Daniel Alder


устанавливать synaptic с помощью sudo apt-get install synaptic,

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

enter image description here

В меню пакета выберите Блокировка версии:

enter image description here

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


19
2017-12-08 20:06



Пожалуйста, посмотрите на «Lock-версия не такая умная, как кажется». Она должна делать то, что она говорит на жестяной банке, заблокировать версию ... Но она блокирует ее только в Synaptic. Что-нибудь еще, что делает обновления пакетов (читайте: Update Manager , apt-get, aptitude и т. д.) игнорирует это. Это, вероятно, ошибочное поведение, поэтому я ожидаю, что это будет исправлено вовремя ». из askubuntu.com/questions/9607/what-does-lock-version-do, Каково текущее состояние? Если что-то заблокировано в Synaptic, другие менеджеры пакетов «почитают» замок?
vasa1: Начиная с версии 0.75.13, все еще нет :( Такая же проблема с способностью. - syockit


Предотвращение установки пакета называется «пакетным холдингом», и это очень просто сделать:

эхо имя пакета провести | dpkg --set-selection

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

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


16
2018-02-05 01:18



Отлично это был ответом. Спасибо. - asoundmove
s/sudo su/sudo -s/g (или sudo -i). (-i предоставит оболочку входа, -s не будет). - derobert


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

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

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

edit: Это вопрос 16668 имеет аналогичную ситуацию


4
2017-12-23 17:35





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

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

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

sudo apt-mark hold firefox firefox-locale-*

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

sudo apt-mark unhold firefox firefox-locale-*

4
2017-11-19 07:45





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


3
2017-12-23 21:09





См. Ошибки # 75332, # 158981 а также # 72806,

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

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


3
2017-11-26 07:24





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

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


1
2017-12-08 20:06





Вы можете использовать на aptitude «специфическое переопределение», например:

aptitude reinstall ~i oracle-java8-jre:

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

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

Очень хорошо, если вы считаете, что ваша система была скомпрометирована.


1
2018-05-18 16:27