Ответ 1
По какой-то причине apt-rdepends
не работал для меня (при поиске пакета 'docker-engine' он пропускал зависимость от libltdl7
которая была представлена в docker-engine 1.11.1-0
). UPD Предположительно из-за того, что apt-rdepends
не следует и не перечисляет Recommended по умолчанию. И не следит за виртуальными пакетами.
Итак, я придумал следующий набор команд.
Рекурсивный список зависимостей
$ apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances <your-package-here> | grep "^\w" | sort -u
(очевидно, вы должны изменить <your-package-here>
в конце строки на пакет, который вы хотите проанализировать)
Ключ здесь - опция --recurse
. К сожалению, вы не можете указать контент, который хотите (или я не нашел пути), поэтому вам нужно отключить все нежелательные зависимости, чтобы сохранить только "зависимости". Это немного многословно и трудно запомнить!
Со страницы справочника apt-cache:
По умолчанию зависимости и rdepends распечатать все зависимости
Загрузите эти зависимости
Таким образом, чтобы загрузить эти зависимости, выполните следующую команду, которая загрузит их в текущий рабочий каталог:
$ apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances <your-package-here> | grep "^\w" | sort -u)
По желанию, чтобы установить эти зависимости
Это немного расширяет заданный вопрос, но, похоже, соответствует цели вопроса.
Вам нужно построить индекс только что загруженных пакетов. Это делается из той же папки, где все .deb где скачано:
$ dpkg-scanpackages . | gzip -9c > Packages.gz
Затем просто скопируйте эту папку (все .deb + файл Packages.gz) в целевую систему, которая не имеет доступа к Интернету, и добавьте эту папку в список источников APT.
$ echo "deb file:<your folder here> ./" | sudo tee -a /etc/apt/sources.list
$ sudo apt-get update
И вуаля
В системе без доступа к Интернету я могу установить пакет (в моем примере Docker) и его зависимости:
$ sudo apt-get install docker-engine