Потому что ошибка #693758 Я бы хотел предотвратить apt-get upgrade
и диспетчер обновлений от обновления пакета "libgtk2.0-0".
Как этого можно достичь?
Потому что ошибка #693758 Я бы хотел предотвратить apt-get upgrade
и диспетчер обновлений от обновления пакета "libgtk2.0-0".
Как этого можно достичь?
Существуют различные способы удержания пакетов: с помощью dpkg
, apt
, dselect
, aptitude
или Синаптический.
Поставьте посылку на удержание:
echo "<package-name> hold" | sudo dpkg --set-selections
Снимите фиксатор:
echo "<package-name> install" | sudo dpkg --set-selections
Отображение статуса всех ваших пакетов:
dpkg --get-selections
Отображение статуса отдельного пакета:
dpkg --get-selections <package-name>
Показать все пакеты на удержании:
dpkg --get-selections | grep "\<hold$"
Держите пакет:
sudo apt-mark hold <package-name>
Снимите фиксатор:
sudo apt-mark unhold <package-name>
Показать все пакеты на удержании:
sudo apt-mark showhold
С помощью dselect войдите в экран выбора [S], найдите пакет, который вы хотите сохранить в его текущем состоянии, и нажмите = или H. Изменения вступят в силу сразу после выхода из экрана выбора [S].
Следующие подходы ограничены тем, что блокировка / удержание пакета в aptitude или synaptic не влияет на apt-get/apt.
Держите пакет:
sudo aptitude hold <package-name>
Снимите фиксатор:
sudo aptitude unhold <package-name>
Идти к Synaptic Менеджер пакетов (Система > Администрирование > Synaptic Package Manager).
Нажмите кнопку поиска и введите название пакета.
Когда вы найдете нужный пакет, выберите его и перейдите к Пакет меню и выберите Версия блокировки.
Этот пакет теперь не будет отображаться в диспетчере обновлений и не будет обновляться.
Я искал то же самое, и после долгих исследований я обнаружил, что, используя следующий синтаксис, вы можете запретить одну конкретную версию, но разрешить следующее обновление:
Package: compiz-plugins-mainPin: version 1:0.9.7.0~bzr19-0ubuntu10.1Pin-Priority: -1
Это входит в /etc/apt/preferences
файл.
Чтобы поставить пакет "foo" на удержание:
echo "foo hold" | dpkg --set-selections
В вашем случае мы собираемся приостановить производство вина:
sudo -iecho "wine hold" | dpkg --set-selections
Чтобы снять фиксатор:
sudo -iecho "wine install" | dpkg --set-selections
Устанавливать synaptic
с помощью sudo apt-get install synaptic
.
Запуск с помощью gksudo synaptic
и в поле поиска найдите пакет, который вы хотите заблокировать, т.е.: gedit
В меню пакета выберите Версия блокировки:
И это все, версия, установленная в данный момент на момент блокировки, останется установленной даже во время обновления.
Предотвращение установки пакета называется "удержанием пакета", и это очень просто сделать:
эхо имя_пакета удержание | dpkg --набор-выбор
...где *package_name* - это имя пакета, установку которого вы хотите запретить.
Примечание: приведенная выше команда предполагает права суперпользователя. Другими словами, вам, вероятно, потребуется ввести sudo su
перед его запуском.
С некоторых пор apt-get
заменяется на apt
, так, например, я хочу запретить Firefox обновляться до версии выше 56, потому что много дополнений, таких как "Группы вкладок" больше не работайте с новым Firefox 57 (см. "Обновление WebExtensions").
Можно хранить более одного пакета с помощью одной команды и использовать подстановочные знаки.
sudo apt-mark hold firefox firefox-locale-*
Если вы решите распаковать их позже, это будет команда:
sudo apt-mark unhold firefox firefox-locale-*
Все, что вы когда-либо хотели знать о "удержании" и "привязке" пакетов к определенным версиям: https://help.ubuntu.com/community/PinningHowto
Я synaptic, вы можете заморозить версию определенного пакета, я не уверен на 100%, изменит ли это apt-get, но это определенно остановит диспетчер обновлений.
Чтобы заморозить пакет, выберите его в synaptic, затем откройте меню пакета и выберите заморозить версию.
Надеюсь, это поможет
редактировать: Это вопрос 16668 имеет дело с аналогичной ситуацией
Видите ошибки #75332, #158981 и #72806.
Итог заключается в том, что удержание на уровне apt-get / aptitude не вызывает статус удержания в dpkg (особенно см. ошибку 72806), а диспетчер обновлений считывает статус из dpkg.
обходной путь выполняется от имени root:echo "package hold" | dpkg --set-selections
Добавление деталей в @согеркомментарии относительно Ubuntu 16.04.
Ubuntu 16.04 по умолчанию не имеет существующего файла /etc/apt/preferences. Если у вас его сейчас нет, просто создайте новый файл и заполните его строфой, как описано выше @soger, чтобы исключить данный пакет и его зависимости из обновлений.
После этого запустите apt update
и ты GTG. :0)
Например, у меня есть сервер Ubuntu 16.04.5 LTS со встроенной видеокартой Intel и картой NVidia. Используется только карта NVidia. Сервер также использует драйверы CUDA. У меня была проблема, когда apt
продолжал настаивать
va-драйвер-все
(Драйверы Intel) требовалось обновление, но он не мог определить, какую версию установить. Это сводило меня с ума, и мне все равно не нужны были драйверы Intel. Я ввел этот текст в файл настроек и сбросил apt, проблема решена.
Package: va-driver-allPin: release *Pin-Priority: -1
@George Edison - Существует также функция удержания пакета, которая позволяет вам не обновлять пакет. таким образом, хранение пакета в основном означает, что вы говорите менеджеру пакетов сохранить текущую версию, несмотря ни на что. Это полезно, если более поздняя версия текущей рабочей программы выходит из строя после обновления. (вы не можете хранить пакет, который никогда не был установлен, также см. Мой вопрос тот же)… я проверил это прямо сейчас - видите, он сказал: "отключите пакеты от автоматического обновления`
@hhlp: Но этот вопрос касается пакета, который никогда не был установлен.