Запретить обновление пакета Ubuntu
Обновлено: 21.11.2024
Как вы уже знаете, мы можем обновить все установленные пакеты с помощью команды apt upgrade в Debian, Ubuntu и других системах на основе Debian. В процессе этого обновления будут обновлены все установленные пакеты, будут установлены некоторые дополнительные пакеты (т. е. зависимости), а некоторые ненужные пакеты будут удалены. Менеджер пакетов Apt делает все это автоматически, чтобы помочь пользователям поддерживать чистоту системы. Apt также имеет возможность предотвратить автоматическую установку, обновление или удаление пакета в Debian, Ubuntu и их вариантах. В этом руководстве мы обсудим различные методы удержания или предотвращения обновления пакета в Debian, Ubuntu и их производных, таких как Linux Mint и Pop!_OS.
Почему кто-то хочет предотвратить обновление пакета?
Вы можете задаться вопросом, почему кто-то хочет удерживать пакет от apt upgrade. Разве обновление пакетов до последней версии не помогает нам защитить систему? Да конечно! Но вы не хотите делать это при определенных обстоятельствах. Вот несколько причин, по которым нельзя обновлять пакеты:
- Текущая версия пакета работает нормально, поэтому вам может показаться, что обновлять ее не нужно.
- Определенная версия требуется другому приложению для правильной работы.
- Пакет, который вы собираетесь обновить, может быть проблематичным. Несмотря на то, что разработчики тщательно проверяют пакеты, прежде чем помещать их в репозитории, иногда они могут неосознанно добавлять нестабильные пакеты, которые могут нарушить работу вашей системы.
- Экономия пропускной способности. Возможно, вам не захочется обновлять пакет, который занимает более 500 МБ.
Таким образом, какой бы ни была причина, если вы когда-либо хотели предотвратить изменения пакета в системах Debian или Ubuntu, это руководство поможет вам.
Заблокировать или запретить обновление пакета в Debian, Ubuntu
Мы можем предотвратить/удержать/игнорировать/исключить пакеты из подходящего обновления либо из командной строки, либо с помощью графической утилиты управления пакетами, называемой менеджером пакетов Synaptic.
Во-первых, давайте посмотрим на методы командной строки!
1. Предотвращение автоматической установки, обновления или удаления пакета с помощью команды apt-mark в Debian, Ubuntu
Apt-mark используется для отображения, установки и отмены различных настроек пакета, таких как пометка пакета как устанавливаемого автоматически/вручную или изменение выбора dpkg, например удержания, установки, удаления и очистки, которые соблюдаются, например. с помощью apt-get dselect-upgrade или aptitude .
Чтобы предотвратить изменения пакета (установка, удаление и обновление), команда apt-mark содержит следующие три подкоманды:
Команда удержания используется, чтобы пометить пакет как задержанный, что предотвратит автоматическую установку, обновление или удаление пакета.
Команда unhold используется для отмены ранее установленного удержания пакета, чтобы снова разрешить все действия.
Команда showhold используется для отображения списка пакетов, находящихся на удержании.
Давайте рассмотрим пример. Я собираюсь предотвратить автоматическую установку, обновление или удаление пакета (например, htop ) с помощью команды:
Пример вывода:
Заблокированный пакет htop останется той же версии даже после обновления системы.
Чтобы отобразить задержанные пакеты, выполните:
Чтобы разблокировать пакет, просто запустите:
Пример вывода:
Запретить автоматическую установку, обновление или удаление пакета с помощью команды apt-mark
Обратите внимание, что этот метод не предотвратит удаление пакета вручную. Вы по-прежнему можете удалить заблокированные пакеты с помощью apt-get remove
Этот метод только предотвращает автоматическую установку, обновление, обновление или удаление приложения во время обновления системы. На самом деле удержание пакета означает, что вы говорите менеджеру пакетов сохранять текущую версию, несмотря ни на что, даже если доступна новая версия. Этот трюк может быть очень полезен при сдерживании графических драйверов. Это также полезно, если более свежая версия работающей в настоящее время программы ломается после обновления.
Всякий раз, когда вы пытаетесь обновить систему с помощью команд sudo apt-get update или sudo apt-get upgrade , помеченные пакеты по-прежнему будут иметь ту же версию, что и на момент хранения пакета.
Apt-mark — не единственная утилита CLI для предотвращения изменений пакетов в Debian или Ubuntu. Есть еще два способа приостановить пакет и отменить его позже из командной строки.
2. Запрет обновления пакета с помощью dpkg в Debian, Ubuntu
Dpkg — это утилита командной строки для установки, сборки, удаления пакетов Debian и управления ими.
Чтобы поставить пакет, например htop, на удержание с помощью dpkg, выполните:
Вы можете просмотреть статус пакета, который вы отложили ранее, выполнив:
Как видите, htop приостановлен.
Чтобы просмотреть статус всех пакетов, выполните:
Чтобы снять пакет, выполните следующие действия:
Запрет обновления пакета с помощью dpkg в Debian, Ubuntu
3. Удержание пакета после обновления с помощью aptitude в Debian, Ubuntu
Aptitude — это текстовый интерфейс для системы пакетов Debian GNU/Linux. Это позволяет пользователю выполнять различные задачи управления пакетами, такие как установка, обновление, обновление, вывод списка и удаление пакетов.
Чтобы приостановить пакет и предотвратить его автоматическое обновление, выполните:
Чтобы просмотреть статус пакета, выполните:
Пример вывода:
Как видно из приведенного выше вывода, обновление пакета htop приостановлено.
Чтобы снять пакет, просто выполните:
Удержание пакета после обновления с помощью aptitude в Debian, Ubuntu
4. Предотвращение автоматической установки, обновления или удаления пакета с помощью диспетчера пакетов Synaptic в Debian, Ubuntu
Если в вашей системе установлен диспетчер пакетов Synaptic, вы можете легко заблокировать установку, обновление, обновление или удаление пакета.
Откройте диспетчер Synaptic и найдите пакет, который хотите сохранить. Затем нажмите «Упаковать» в строке меню и нажмите «Удерживать».
Запретить автоматическую установку, обновление или удаление пакета с помощью диспетчера пакетов Synaptic
Вот и все. Теперь пакет не будет затронут во время обновления системы, пока вы удерживали его.
Чтобы разблокировать его, перейдите в Synaptic -> Пакет -> Разблокировать версию.
Если в вашей системе не установлен диспетчер пакетов Synaptic, вы можете установить его с помощью команды:
Заключение
В этом руководстве вы узнали, как предотвратить автоматическую установку, обновление и удаление пакета в системах на основе Debian, таких как Ubuntu, Linux Mint и Pop!_OS и т. д. Хотя в некоторых случаях удержание пакетов может быть полезным, это также оставит лазейки в безопасности вашей системы Ubuntu. Нужно знать, когда держать или снимать пакеты. Используйте эту функцию осторожно. Удачи!
APT означает Advanced Packaging Tool — еще один менеджер пакетов, используемый в системах на базе Linux. Первоначально разработанный как интерфейс для dpkg для работы с пакетами .deb, apt удалось показать свою видимость в Mac OS, Open Solaris и т. д.
Хотите узнать и освоить команды APT и DPKG для управления пакетами Debian, тогда воспользуйтесь нашими подробными статьями, которые содержат более 30+ примеров использования обоих инструментов.
В этой статье мы рассмотрим различные методы отключения/блокировки пакетов от установки, обновления и удаления в Debian Linux и его производных, таких как Ubuntu и Linux Mint.
1. Отключить/заблокировать пакет с помощью «apt-mark» с опцией удержания/отмены
Команда apt-mark помечает или снимает отметку с программного пакета как автоматически устанавливаемого и используется с опцией удержания или отмены.
- удерживать — этот параметр используется для пометки пакета как задержанного, что блокирует установку, обновление или удаление пакета.
- отменить — этот параметр используется для снятия ранее установленного удержания пакета и разрешения установки, обновления и удаления пакета.
Например, чтобы сделать пакет с надписью apache2 недоступным для установки, обновления или удаления, вы можете использовать следующую команду в терминале с привилегиями root:
Чтобы сделать этот пакет доступным для обновления, просто замените «удерживать» на «отменить».
Блокировка обновлений пакетов с помощью файла настроек APT
Другой способ заблокировать обновления определенного пакета — добавить его запись в файл /etc/apt/preferences или /etc/apt/preferences.d/official-package-repositories.pref. Этот файл отвечает за обновление или блокировку определенных обновлений пакетов в соответствии с приоритетом, указанным пользователем.
Чтобы заблокировать пакет, вам просто нужно ввести его название, дополнительную функцию и приоритет, к которому вы хотите его отнести. Здесь приоритет блокирует пакет.
Чтобы заблокировать любой пакет, просто введите его данные в файле /etc/apt/preferences следующим образом:
Например, чтобы заблокировать обновления для пакета apache2, добавьте запись, как показано ниже:
Означает получение указанного пакета из экспериментального архива пакетов Debian.
Занести обновление пакета в черный список с помощью файла автоматического удаления APT
Еще один способ занести пакет в черный список из установки — обновить его запись в одном из файлов, содержащихся в каталоге /etc/apt/apt.conf.d/, который называется 01autoremove.
Пример файла показан ниже:
Теперь, чтобы добавить любой пакет в черный список, достаточно ввести его имя в Never-MarkAuto-Sections. Просто введите имя пакета в конце Never-MarkAuto-Section и сохраните и закройте файл. Это заблокирует поиск дальнейших обновлений этого пакета.
Например, чтобы удалить пакет из списка обновлений, добавьте следующую запись:
Выбор пользовательского пакета для обновления
Другой альтернативой этому является выбор того, что вы хотите обновить. Инструмент apt дает вам свободу выбора того, что вы хотите обновить, но для этого вы должны знать, какие пакеты доступны для обновления.
Для этого может оказаться полезным следующий набор команд:
а. Чтобы вывести список пакетов, ожидающих обновления.
б. Для установки только выборочных пакетов.
Заключение
В этой статье мы объяснили несколько способов отключения/блокировки или внесения в черный список обновлений пакетов с помощью APT. Если вы знаете какой-либо другой предпочтительный способ, сообщите нам об этом через комментарии или если вы искали команду yum для отключения/блокировки обновления пакета, то прочитайте эту статью ниже.
Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.
Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:
TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.
Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.
Мы благодарны за вашу бесконечную поддержку.
Похожие сообщения
6 мыслей о том, как отключить/заблокировать или добавить в черный список обновления пакетов с помощью Apt Tool
Разделы статей «Блокировка обновлений пакетов» и «Занесение обновлений пакетов в черный список» не совсем понятны.
Я использую MX Linux. В моей системе нет файлов «/etc/apt/preferences» или «/etc/apt/preferences.d/official-package-repositories.pref».Должен ли я создать один из них?
"Еще один способ внести пакет в черный список из установки — обновить его запись в одном из файлов, содержащихся в каталоге /etc/apt/apt.conf.d/, который называется 01autoremove".
Почему бы просто не указать полный путь к файлу как «/etc/apt/apt.conf.d/01autoremove»? То, как написано предложение, сбивает с толку.
Можете ли вы добавить ПРИМЕР «Как заблокировать обновление нескольких пакетов», я имею в виду, могу ли я добавить их следующим образом:
Это нормально?
А в «автоудаление файла»? Это нормально?
Существует несколько способов предотвратить обновление пакета в Debian, Ubuntu, Linux Mint, elementary OS и других дистрибутивах Linux на основе Debian/Ubuntu. В этой статье представлены 3 способа исключения пакетов репозитория из обновления.
Зачем запрещать обновление пакета? Допустим, вы устанавливаете пакет, который старше версии, доступной в репозиториях Debian, Ubuntu или Linux Mint, или вы знаете, что какое-то обновление вызывает проблемы, и вы хотите обновить все пакеты за вычетом одного (или двух, трех).
Вот пример. Я использую браузер Chromium с исправлениями аппаратного ускорения от Saiarcot895-dev PPA в Ubuntu 18.10. Чтобы заставить аппаратное ускорение работать с драйверами Nvidia, необходим исправленный пакет vdpau-va-driver, который пока недоступен в этом PPA для последней версии Ubuntu 18.10. К счастью, пакет Ubuntu 18.04 можно установить в Ubuntu 18.10, но любое обновление с помощью «подходящего обновления» или с помощью средства обновления программного обеспечения обновит этот пакет, чего я не хочу. Таким образом, в этом случае удержание этого пакета от обновлений позволит мне обновить все остальные пакеты, не беспокоясь об этом.
Следует отметить, что предотвращение будущих обновлений пакета может вызвать проблемы в некоторых ситуациях, если пакет, который вы держите, используется в качестве зависимости для другого пакета, который можно обновить. Поэтому старайтесь не препятствовать обновлению слишком большого количества пакетов, особенно библиотек.
Вот 3 способа предотвратить обновление пакета в Debian, Ubuntu, Linux Mint.
<р>1. Запретить обновление пакетов с помощью графического интерфейса: Synaptic Package ManagerSynaptic Package Manager, графическая программа управления пакетами Gtk для apt, может блокировать пакеты, что предотвращает их обновление.
Важно отметить, что использование Synaptic для блокировки пакетов не препятствует их обновлению из командной строки — запуск apt upgrade или apt-get upgrade по-прежнему будет обновлять пакет, заблокированный в Synaptic. Блокировка пакетов в Synaptic предотвратит обновление пакетов с помощью приложения Ubuntu Software Updater и, возможно, других графических менеджеров пакетов. Однако это не помешает обновлять пакеты с помощью приложения Linux Mint Update Manager. Поэтому я рекомендую использовать apt-mark или dpkg (см. ниже), чтобы пакеты не обновлялись.
Вы можете установить диспетчер пакетов Synaptic с помощью этой команды:
Чтобы предотвратить обновление пакета с помощью Synaptic, найдите его, выберите пакет и в меню Synaptic щелкните Пакет -> Заблокировать версию:
Точно так же вы можете разблокировать пакет.
Чтобы просмотреть все заблокированные пакеты в Synaptic, нажмите «Статус» в левом нижнем углу, затем нажмите «Закреплено» над разделом «Статус»:
<р>2. Не позволяйте пакету обновляться с помощью apt-mark
Удержание пакетов от обновления с помощью apt-mark должно предотвратить их обновление с помощью средства обновления программного обеспечения Ubuntu, а также обновлений из командной строки ( apt upgrade / apt-get upgrade ).
Вы можете заблокировать пакет от будущих обновлений (и от автоматического удаления) с помощью apt-mark с помощью этой команды:
Замена PACKAGE пакетом, обновление которого вы хотите запретить.
Вы можете проверить, какие пакеты помечены как удержанные (чтобы они не обновлялись), используя:
Чтобы снять блокировку (чтобы можно было обновить пакет), используйте:
И для удержания, и для отмены вы можете указать несколько пакетов, как при установке программного обеспечения с помощью apt (разделяйте пакеты пробелом).
<р>3. Запретить обновления пакетов с помощью dpkgНекоторое время назад были некоторые графические менеджеры пакетов, которые игнорировали статус блокировки apt-mark. Я не уверен, что это все еще так, но на всякий случай (и в случае, если вы используете старую версию Debian/Ubuntu/Linux Mint), вот еще один способ предотвратить обновления пакетов в Ubuntu, Linux Mint или Debian: дпкг.
Чтобы предотвратить обновление пакета с помощью dpkg, используйте:
Замените PACKAGE пакетом, обновление которого вы хотите запретить.
Вы можете просмотреть все удержания пакетов с помощью этой команды:
Чтобы снять блокировку (разрешить обновление пакета), используйте:
В отличие от apt-mark, это решение не позволяет указывать несколько пакетов одновременно.
Как этого добиться?
@George Edison - Существует также хранение пакетов, что позволяет не обновлять пакет. Таким образом, хранение пакета в основном означает, что вы говорите менеджеру пакетов сохранять текущую версию, несмотря ни на что. Это полезно, если более свежая версия работающей в настоящее время программы ломается после обновления. (вы не можете удерживать пакет, который никогда не был установлен, также см. Мой вопрос тот же). я проверил это прямо сейчас - видите, он сказал отключить пакеты из автообновления
Поскольку этот вопрос был задан до того, как мы перешли с apt-get на apt , стоит отметить, что apt-mark hold packagename по-прежнему является стандартным решением для этого. Попытка apt hold просто пожалуется E: Invalid operation Hold
15 ответов 15
Существуют разные способы удержания пакетов: с помощью dpkg , apt , dselect , aptitude или Synaptic.
Приостановить отправку пакета:
Снять удержание:
Отображать статус всех ваших пакетов:
Отображать статус отдельного пакета:
Показать все пакеты на удержании:
Снять удержание:
Показать все пакеты на удержании:
выбрать
С помощью dselect перейдите на экран [S]elect, найдите пакет, который вы хотите сохранить в его текущем состоянии, и нажмите = или H . Изменения вступят в силу сразу после закрытия экрана [Выбор].
Следующие подходы ограничены тем, что блокировка/удержание пакета в aptitude или synaptic не влияет на apt-get/apt.
способности
Снять удержание:
Блокировка с помощью диспетчера пакетов Synaptic
Перейдите в Диспетчер пакетов Synaptic (Система > Администрирование > Диспетчер пакетов Synaptic).
Нажмите кнопку поиска и введите имя пакета.
Найдя пакет, выберите его, перейдите в меню «Пакет» и выберите «Заблокировать версию».
Теперь этот пакет не будет отображаться в диспетчере обновлений и не будет обновляться.
Это также помогает предотвратить установку пакета. При установке devscripts многие пакеты извлекаются как рекомендуемые пакеты. Поскольку мне не нужен почтовый сервер (постфикс), я могу отключить его установку, запустив команду echo postfix hold | sudo dpkg --set-selections перед запуском sudo apt-get install devscripts. Это действие удержания сохраняется только для этой установки, после установки выбор сбрасывается.
Также стоит отметить, что удержание пакетов иногда нарушает работу обновлений и исправлений, создавая ситуацию, при которой не существует законного решения, которое apt может вычислить как зависимость. Если пакет foo имеет ==
Я могу подтвердить, что sudo apt-mark hold/unhold в настоящее время работает в Ubuntu 16.04 (Xenial Xerus). Я сохранил несколько устаревших пакетов, а затем выполнил sudo apt-get dist-upgrade, чтобы посмотреть, будут ли они обновлены, но задержанные пакеты не были обновлены. Кстати, вы можете удерживать/снимать сразу несколько посылок. Пример: sudo apt-mark hold thunar thunar-dbg thunar-data libthunarx-2-0 libthunarx-2-dev . Здорово!
Я искал то же самое и после долгих исследований обнаружил, что с помощью следующего синтаксиса вы можете запретить одну конкретную версию, но разрешить следующее обновление:
Это входит в файл /etc/apt/preferences.
Я думаю, что с помощью этого метода больше шансов предотвратить повторную установку «рекламного ПО» Ubuntu, такого как Ubuntu One или значок Amazon, при следующем обновлении выпуска.
Этот метод также предотвращает сообщение Aptitude о том, что пакет является «обновляемым» (при условии, что используется более старая версия, чем доступна в репозиториях)
@Digger, но как только появится более новая версия, я имею в виду более новую, чем та, которая привязана к -1, aptitude снова сообщит, что пакет можно обновить.
Чтобы поставить пакет "foo" на удержание:
В вашем случае мы отложим вино:
Чтобы снять запрет:
Также обратите внимание, что пока пакет приостановлен, вы можете установить определенную версию с помощью apt-get install wine=1.2.3 . Приостановка не позволяет apt-get (dist-)upgrade изменить его.
@rcoup Если у вас есть старая версия на удержании, а затем вы вручную обновляетесь до новой версии, не снимая удержание, как вы описываете, будет ли старая версия храниться в кеше, чтобы вы могли вернуться к ней?< /p>
@cxrodgers локальный кеш (обычно /var/cache/apt/archives ) не зависит от удержаний, обновлений и прочего, поэтому все загруженные вами версии будут там, пока вы не запустите apt-get [auto]clean< /p>
Установите synaptic с помощью команды sudo apt-get install synaptic.
Запустите с помощью gksudo synaptic и в поле поиска найдите пакет, который хотите заблокировать, например: gedit
В меню пакета выберите Заблокировать версию:
И это все, версия, установленная на момент блокировки, останется установленной даже во время обновления.
Пожалуйста, обратите внимание на «Блокировка версии не так умна, как кажется. Она должна делать то, что написано на банке, блокировать версию. Но она блокируется только в Synaptic. Все остальное, что делает обновления пакетов (читай: обновление Manager, apt-get, aptitude и т. д.) игнорирует это. Вероятно, это ошибочное поведение, поэтому я ожидаю, что это будет исправлено со временем». с сайта askubuntu.com/questions/9607/what-does-lock-version-do. Каково текущее состояние? Если что-то заблокировано в Synaptic, будут ли другие менеджеры пакетов «соблюдать» блокировку?
Предотвращение установки пакета называется "задержкой пакета", и это очень просто сделать:
<р>. где *package_name* — это имя пакета, установку которого вы хотите запретить.Примечание: приведенная выше команда предполагает привилегии root. Другими словами, вам, вероятно, потребуется набрать sudo su перед запуском.
С некоторых пор 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
Добавление деталей в комментарии @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, проблема решена.
Читайте также: