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

Обновлено: 06.07.2024

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

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

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

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

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

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

склонный

Показать все пакеты в ожидании:

Dselect

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

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

уместность

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

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

Найдя пакет, выберите его, перейдите в меню « Пакет» и выберите « Заблокировать версию» .

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

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

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

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

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

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

Также обратите внимание, что пока пакет находится в режиме ожидания, вы можете установить определенную версию с помощью apt-get install wine=1.2.3 . Находясь на удержании, не может apt-get (dist-)upgrade изменить его. @rcoup Если у вас на удержании старая версия, а затем вы вручную обновляетесь до новой версии, не снимая удержание, как вы описали, будет ли старая версия сохранена в кэше, чтобы вы могли вернуться к ней? @cxrodgers локальный кеш (обычно /var/cache/apt/archives ) не зависит от удержаний, обновлений и прочего, поэтому все загруженные вами версии будут там до тех пор, пока вы не запустите apt-get [auto]clean

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

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

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

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

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

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

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

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

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

vasa1: Начиная с версии 0.75.13, до сих пор нет :( Та же проблема с aptitude.

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

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

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

s/sudo su/sudo -s/g (или sudo -i ). ( -i даст логин оболочки, -s не даст).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавление подробностей в комментарии @ 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, проблема решена.

Читайте также: