Перед установкой пакета в Debian или Ubuntu проверьте наличие нескольких зависимостей

8

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

apt policy first-package second-package ... last-package  

Эта команда также сообщает мне, установлен ли у меня каждый пакет или нет.

Мой вопрос заключается в том, как быстро проверить, существует ли несколько пакетов зависимостей в поддерживаемой версии Debian или Ubuntu, которую я в настоящее время не установил. Поскольку у меня нет установленной ОС, я не могу проверить, существуют ли пакеты зависимостей локально и автономно, но я хочу проверить, существуют ли требуемые пакеты зависимостей в репозиториях по умолчанию из терминала.

Одно из возможных применений этой информации - проверить, можно ли установить приложение, установленное в Ubuntu, в последней версии Ubuntu, перед установкой последней версии Ubuntu или обновлением существующей ОС до последней версии.

Карел
источник

Ответы:

10

Идеальным инструментом для этого является rmadisonпростой Perl-скрипт с несколькими зависимостями ( URIмодуль и wgetили curl), поэтому он может работать практически везде. Он опрашивает службы Madison, размещенные в Debian и Ubuntu, чтобы определить доступность пакетов:

rmadison gcc-7

сообщает, какие версии GCC 7 доступны в различных пакетах Debian,

rmadison -u ubuntu gcc-7

делает то же самое для Ubuntu.

Вы можете ограничить вывод определенной версией:

rmadison -u ubuntu -s bionic gcc-7
Стивен Китт
источник
@karel замечает, что параметр after -u- это не имя пакета, а имя дистрибутива (или, возможно, репо)
GnP
Вы правы, это было пропущено, ubuntuи оно работает на моем примере файла. На самом деле он работает лучше, чем мой скрипт, потому что он также возвращает результаты для пакетов для точного выпуска, который является окончанием срока службы.
Карел
3

rmadison может искать пакеты как Debian, так и Ubuntu одновременно, а также ищет пакеты как в End Of Life (12.04), так и в не выпущенных (18.10) версиях Ubuntu. Это отличные функции, но rmadison не может выполнить частичный поиск по ключевым словам на моем компьютере. Иногда я не могу вспомнить полное название пакета, которое я ищу. Я могу вспомнить только часть этого, и следующие инструкции также работают в этой ситуации. В противном случае используйте rmadison, который может быть установлен командойsudo apt-get install devscriptsв Ubuntu и Debian.

  1. Создайте сценарий оболочки для запроса, если существует несколько пакетов, с именем Open-multiple-URLs-in-Firefox.sh. Скрипт содержит следующий код:

    #!/bin/bash
    while read line; do
        firefox --new-tab "https://packages.ubuntu.com/$line"
    done < packages.txt
  2. Сделайте скрипт исполняемым.

    chmod +x Open-multiple-URLs-in-Firefox.sh
  3. Создайте файл с именем packages.txt, который содержит имена всех необходимых пакетов зависимостей, каждый из которых находится на отдельной строке. Сохраните packages.txt в том же каталоге, что и Open-multiple-URLs-in-Firefox.sh.

  4. Запустите скрипт.

    ./Open-multiple-URLs-in-Firefox.sh  

Веб-страница, содержащая информацию о каждом необходимом пакете зависимостей, откроется на отдельной вкладке в Firefox.

Для поиска нескольких пакетов в Debian замените https://packages.ubuntu.com/в сценарии оболочки наhttps://packages.debian.org/search?keywords=


Эта команда является более простой альтернативой приведенному выше сценарию оболочки для использования, когда вы ищете только 1 или 2 пакета.

firefox --new-tab https://packages.ubuntu.com/first-package https://packages.ubuntu.com/next-package https://packages.ubuntu.com/last-package
Карел
источник