Как я могу проверить список зависимостей для пакета deb

Как я могу проверить список зависимостей для пакета deb? Я использую Ubuntu 11.10, и я создал резервные копии всех пакетов deb из var/cache/apt/archives. Я хочу отформатировать свой компьютер и переустановить только выбранные приложения. Также, как я могу получить список установленных пакетов и зависимостей.

Это покажет вам всю информацию о пакете:

dpkg -I package.deb

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

apt-cache depends package-name

РЕДАКТИРОВАТЬ Обновлено с учетом рекомендации @Tino. Комментарий @Tigran больше не применяется.


зависит ОТ rdepends

  • apt-кэш depends имя пакета
    //показать пакет-имя зависит от того, кто

  • apt-кэш rdepends имя пакета
    //показать, кто зависит от имени пакета

зависит

$ apt-cache depends vim-runtimevim-runtime  Breaks: vim-tiny |Recommends: vim    vim-athena    vim-gtk    vim-gtk3    vim-nox |Recommends: vim-gtk |Recommends: vim-gtk3 |Recommends: vim-athena |Recommends: vim-nox  Recommends: vim-tiny  Enhances: vim-tiny

r зависит

$ apt-cache rdepends vim-runtimevim-runtimeReverse Depends:  vim  vim  vim-nox  vim-gtk  vim-athena  vim-gtk3  vim  vim-nox  vim-gtk  vim-athena  vim-gtk3

Для 14.04 и более поздних версий:

dpkg не имеет -I еще немного, и вам придется использовать dpkg-deb для отображения информации о пакете, включая зависимости:

dpkg-deb -I package.deb

apt-cache depends [Package-Name] будет работать так же хорошо. Хотя, если вы источник .deb пакет из-за пределов вашего списка источников, такие вещи, как apt-cache showpkg [Package-Name] && apt-cache depends [Package-Name] может отображаться устаревшая информация или может не синхронизироваться с фактическим установленным пакетом, следовательно dpkg -I [Package-Name] в этом случае это сработало бы лучше всего.

Я знаю, что этот вопрос очень старый, но это возможно. Мне также пришлось покопаться в StackOverflow / AskUbuntu для ВСЕГО этого.

Это ПОКАЗЫВАЕТ ТОЛЬКО то, что зависит от первого пакета. Не все.

В методах скрипта могут быть некоторые дубликаты, но вы, вероятно, можете отфильтровать их, выполнив это:

COMMAND | tr " " "\n" | sort | uniq -d | xargs 

Вот методы:

В сценарии

dpkg-deb -I <The .deb> | grep -E "Depends|Recommends|Suggests|Pre\-Depends" | tr -d "|," | sed "s/([^)]*)/()/g" | tr -d "()" | tr " " "\n" | grep -Ev "Depends|Recommends|Suggests|Pre\-Depends" | xargs

В скрипте, но не загруженный (удаленный)

apt-cache show <The package name> | grep -E "Depends|Recommends|Suggests|Pre\-Depends" | tr -d "|," | sed "s/([^)]*)/()/g" | tr -d "()" | tr " " "\n" | grep -Ev "Depends|Recommends|Suggests|Pre\-Depends" | xargs

Удобочитаемый для человека

dpkg-deb -I <The .deb> | grep -E --color=none "Depends|Recommends|Suggests|Pre\-Depends"

Читаемый человеком (удаленный)

apt-cache show <The package name> | grep -E --color=none "Depends|Recommends|Suggests|Pre\-Depends"

Получить количество зависимостей

dpkg-deb -I <The .deb> | grep -E "Depends|Recommends|Suggests|Pre\-Depends" | tr -d "|," | sed "s/([^)]*)/()/g" | tr -d "()" | tr " " "\n" | grep -Ev "Depends|Recommends|Suggests|Pre\-Depends" | xargs | tr " " "\n" | wc -l

Получить количество зависимостей (удаленных)

apt-cache show <The package name> | grep -E "Depends|Recommends|Suggests|Pre\-Depends" | tr -d "|," | sed "s/([^)]*)/()/g" | tr -d "()" | tr " " "\n" | grep -Ev "Depends|Recommends|Suggests|Pre\-Depends" | xargs | tr " " "\n" | wc -l

Для конкретной версии пакета:

apt-cache show <package_name>=<version>

Чтобы найти доступные версии: Как я могу проверить доступную версию пакета в репозиториях?

Вот некоторая небрежная и, вероятно, не очень всеобъемлющая постобработка, которую вы можете выполнить, чтобы dpkg -I вывод для получения элементов зависимостей в виде списка:

Программное обеспечение для компьютеров

# dpkg -I package.deb | python -c "import sys, re; t=re.split(r'\n(?= ?[\w]+:)|:', sys.stdin.read()); print '\n'.join([i.strip() for i in {key.strip(): value.strip() for key, value in zip(t[::2], t[1::2])}['Depends'].split(',')])"#

Расширен для людей:

dpkg -I package.deb | python -c "    import sys, re;    # Split keys and values into pairs (zipped together later)    t=re.split(        r'\n(?= ?[\w]+:)|:',         sys.stdin.read()    );     # Newline separate each dependency    print '\n'.join([        # Trim each dependency value        i.strip() for i in {            # Build assoc array from package metadata            key.strip(): value.strip()             for key, value in zip(t[::2], t[1::2])        }['Depends'].split(',')    ])"

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

dpkg --info [package name]

В случае, если пакет уже установлен на вашем компьютере (создан из репозитория или загружен вручную) или не установлен, но доступен в репозитории, вы можете использовать пригодный. Следующая команда покажет только список его зависимостей.

apt depends [package name]

Для вашего второго вопроса см. apt - How to list all installed packages - Ask Ubuntu

Для получения полного списка установленных пакетов используйте `dpkg --get-selections | sed -n 's/[[:пробел:]]install$//p"