Существует ли команда для обновления пакета и всех его зависимостей, не обновляя все пакеты?

У нас есть метапакет, подобный рабочему столу человечности, который требует, чтобы набор зависимостей выполнил некоторый внутренний, еще упакованный код. В настоящее время мы обновляем метапакет так, чтобы он потребовал> = текущая версия каждый раз, когда мы повторно упаковываем его так, чтобы его зависимости были обновлены, когда он будет установлен. Однако, если бы был способ обновить пакет и все его зависимости, не обновляя все пакеты затем, то это было бы намного более просто. Это возможно?

4
задан 23 August 2012 в 01:20

2 ответа

Не напрямую, насколько я знаю. Вы можете использовать небольшой фрагмент оболочки, чтобы сгенерировать список зависимостей пакета и обновить их (если вас не интересуют рекурсивные зависимости):

apt-get install our-metapackage $(dpkg-query -Wf '${Depends}' our-metapackage | sed 's/ *\(([^()]*)\)\? *[,|] */\n/g')

Альтернативным подходом будет поставка ваших пакетов через репозиторий с уникальным происхождением. Запишите файл предпочтений APT, который определяет только ваш репозиторий как имеющий обычный приоритет, а всё остальное - как имеющее слишком низкий приоритет для автоматической установки. (См. APT pinning в руководстве по APT для пояснений.) Я не буду вдаваться в подробности создания репозитория (это будет материал для отдельного вопроса, который вполне может уже существовать). Чтобы указать, что пакеты из вашего репозитория обновляются, а другие нет, запишите следующий файл как /etc/apt/preferences.nnutter:

Package: *
Pin: release o=nnutter
Pin-Priority: 500

Package: *
Pin-Prority: 100

500 - обычный приоритет. 100 приводит к тому, что пакеты не обновляются, хотя пакет будет установлен, если этого потребуют зависимости. Запустите apt-get upgrade или apt-get dist-upgrade с этим файлом предпочтений APT, когда вам нужно обновить пакеты только из репозитория nnutter:

apt-get -o Dir::Etc::Preferences=/etc/apt/preferences.nnutter -o Dir::Etc::PreferencesParts=/etc/apt/preferences.nnutter.d upgrade
3
ответ дан 21 October 2019 в 12:52

Вы можете использовать команду wajig, которая может использоваться для приостановки некоторых пакетов при обновлении

просто введите :

sudo wajig hold SomePackage

sudo wajig unhold 

для получения более подробной информации

0
ответ дан 21 October 2019 в 12:52

Другие вопросы по тегам:

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