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

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

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

318 голосов | спросил Ivan 23 ThuEurope/Moscow2010-12-23T20:29:20+03:00Europe/Moscow12bEurope/MoscowThu, 23 Dec 2010 20:29:20 +0300 2010, 20:29:20

12 ответов


463

Холдинг

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

Dpkg

Положите пакет на удержание:

echo "<package-name> hold" | sudo dpkg --set-selection

Снимите трюм:

echo "<имя-пакета> установить" | sudo dpkg --set-selection

Отобразить статус ваших пакетов:

dpkg --get-selection

Отображение состояния одного пакета:

dpkg --get-выборы | grep "<package-name>"

склонный

Удерживайте пакет:

sudo apt-mark hold <имя-пакета>

Снимите трюм:

sudo apt-mark unhold <имя-пакета>

Dselect

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


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

уместность

Удерживайте пакет:

sudo aptitude hold <имя-пакета>

Снимите трюм:

sudo aptitude unhold <имя-пакета>

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

Перейдите в диспетчер синаптических пакетов (System> Administration> диспетчер пакетов Synaptic).

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

Когда вы найдете пакет, выберите его и перейдите в меню Пакет и выберите Блокировать версию .

Синаптическое меню

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

ответил hhlp 23 ThuEurope/Moscow2010-12-23T21:04:14+03:00Europe/Moscow12bEurope/MoscowThu, 23 Dec 2010 21:04:14 +0300 2010, 21:04:14
43

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

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

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

sudo -i
эхо "винный холст" | dpkg --set-selection

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

sudo -i
echo "wine install" | dpkg --set-selection
ответил Panther 9 FriEurope/Moscow2011-12-09T00:15:01+04:00Europe/Moscow12bEurope/MoscowFri, 09 Dec 2011 00:15:01 +0400 2011, 00:15:01
27

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

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

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

ответил soger 22 J000000Monday13 2013, 15:13:07
19

Установите синаптический с помощью sudo apt-get install synaptic.

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

введите описание изображения здесь

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

введите описание изображения здесь>> </p>

<p> И это все, версия, установленная на момент блокировки, останется установленной даже во время обновлений. </p></div>
					 
						<div class=

ответил Bruno Pereira 9 FriEurope/Moscow2011-12-09T00:06:28+04:00Europe/Moscow12bEurope/MoscowFri, 09 Dec 2011 00:06:28 +0400 2011, 00:06:28
16

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

echo  имя_пакета  hold | dpkg --set-selection

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

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

ответил RobotHumans 5 FebruaryEurope/MoscowbSat, 05 Feb 2011 04:18:40 +0300000000amSat, 05 Feb 2011 04:18:40 +030011 2011, 04:18:40
4

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

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

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

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

ответил Allan 23 ThuEurope/Moscow2010-12-23T20:35:23+03:00Europe/Moscow12bEurope/MoscowThu, 23 Dec 2010 20:35:23 +0300 2010, 20:35:23
4

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

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

Предотвратить обновление Firefox

sudo apt-mark hold firefox firefox-locale- *

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

sudo apt-mark unhold firefox firefox-locale- *
ответил rubo77 19 72017vEurope/Moscow11bEurope/MoscowSun, 19 Nov 2017 10:45:33 +0300 2017, 10:45:33
3

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

ответил Jeff Ferland 24 FriEurope/Moscow2010-12-24T00:09:20+03:00Europe/Moscow12bEurope/MoscowFri, 24 Dec 2010 00:09:20 +0300 2010, 00:09:20
3

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

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

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

ответил jasper 26 12012vEurope/Moscow11bEurope/MoscowMon, 26 Nov 2012 11:24:22 +0400 2012, 11:24:22
1

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

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

ответил dinchamion 9 FriEurope/Moscow2011-12-09T00:06:59+04:00Europe/Moscow12bEurope/MoscowFri, 09 Dec 2011 00:06:59 +0400 2011, 00:06:59
1

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

aptitude reinstall ~ i oracle-java8-jre:

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

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

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

ответил cabonamigo 18 Maypm17 2017, 19:27:44
0

Иногда может потребоваться сместить все пакеты, установленные в настоящее время. Вот как это сделать.

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

dpkg --get-selection> current_selections.txt

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

dpkg --get-выборы | sed -r "s /\ tinstall /hold /" | dpkg --set-selection

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

dpkg --set-selection <current_selections.txt

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

ответил JVW 14 Jpm1000000pmWed, 14 Jan 2015 22:46:00 +030015 2015, 22:46:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132