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

Вопрос или проблема

Существуют схожие вопросы, но ни один из них не решил мою проблему:

Мне нужно установить пакет на отдельный Linux-устройство, а именно kdbg. Я пробовал команду

sudo apt-get install --download-only kdbg

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

Теперь я попробовал несколько других команд, которые, как предполагается, загрузят все зависимости, даже те, которые у меня уже установлены. Я пытался

  1. apt-get download PACKAGE && apt-cache depends -i PACKAGE | awk '/Depends:/ {print $2}' | xargs apt-get download

и

  1. apt-get download $(apt-rdepends <package>|grep -v "^ ").

Первая команда загружает только прямые зависимости, такие, как те, что можно найти на packages.ubuntu.com при поиске kdbg, а вторая команда выдает сообщение об ошибке:

Невозможно выбрать версию кандидата для пакета <package> так как у него нет кандидата

для нескольких разных пакетов.

Так что, чтобы переформулировать мой вопрос, есть ли способ скачать kdbg, все его зависимости, все подзависимости и так далее? Или, возможно, я неправильно использую одну из вышеуказанных команд?

Спасибо заранее.

Вам нужно выполнить команду, которая автоматически разрешает все зависимости файла .deb и устанавливает файл .deb и его недостающие зависимости с помощью той же команды. Вам потребуется рабочее интернет-соединение (которое у вас есть) и чтобы установленное программное обеспечение было обновлено с помощью sudo apt update && sudo apt upgrade для скачивания любых недостающих зависимостей. Откройте терминал и введите:

apt download имя-пакета  
apt install --simulate ./имя-пакета.deb # сухой запуск не устанавливает ничего

где имя-пакета следует заменить на название пакета, который вы пытаетесь загрузить, а имя-пакета.deb следует заменить на название .deb файла, который вы пытаетесь установить.

Вторая команда не устанавливает ничего, это просто симуляция сухого запуска для перечисления зависимостей, которые необходимо установить на оффлайн-машине. Вам также может понадобиться снова выполнить команду apt install --simulate ./имя-пакета.deb, если один или несколько .deb файлов, которые вы загружаете, имеют неудовлетворенные зависимости.


Если Ubuntu не установлена на компьютере, с которого вы загружаете пакеты, вы можете либо загрузиться с того же загрузочного носителя, который вы использовали для установки Ubuntu, и загрузить .deb файлы из сессии Ubuntu live, либо посетить официальный поиск пакетов Ubuntu и скачать .deb файлы вручную.

Ответ или решение

Заголовок: Скачивание программного пакета с зависимостями и подзависимостями в Linux

При установке программ на Linux, особенно в дистрибутивах, основанных на Debian, таких как Ubuntu, важной задачей является корректная работа с зависимостями. Когда вы хотите скачать пакет и все его зависимости, включая подзависимости, это может стать непростой задачей. Рассмотрим, как это сделать эффективно.

1. Обновление системы

Прежде всего, убедитесь, что ваша система обновлена. Это предотвратит возможные конфликты с версиями пакетов. Выполните следующие команды:

sudo apt update && sudo apt upgrade

Это обновит списки пакетов и установит последние версии текущих установленных пакетов.

2. Скачивание пакета и всех зависимостей

Чтобы загрузить пакет с его зависимостями и подзависимостями, вы можете воспользоваться apt-get в комбинации с другими утилитами:

a. Использование apt-rdepends

Сначала убедитесь, что у вас установлен apt-rdepends, который позволяет просматривать все зависимости пакета:

sudo apt install apt-rdepends

После установки вы можете использовать команду для скачивания всех зависимостей:

mkdir ~/kdbg_dependencies && cd ~/kdbg_dependencies
apt-rdepends kdbg | grep -v "^ " | xargs -r apt-get download

Эта команда создаст новую директорию, затем скачает все зависимости, которые не установлены в вашей системе.

b. Скачивание всех пакетов

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

mkdir ~/kdbg_full && cd ~/kdbg_full
for pkg in $(apt-rdepends kdbg | grep -v "^ " | sort -u); do
    apt-get download $pkg || echo "Не удалось скачать $pkg";
done

Эта команда скачавает все уникальные зависимости, включая уже установленные, в указанную директорию.

c. Создание списка .deb файлов

Если вы хотите сохранить все .deb файлы, вы можете создать скрипт для контроля версий и загружать их по отдельности:

apt download kdbg
apt-rdepends kdbg | grep -v "^ " | sort -u | xargs -r apt download

3. Проверка зависимостей на локальном компьютере

На стороне офлайн (на компьютере без доступа к интернету) вы можете проверить зависимости с помощью dpkg:

dpkg -i /path/to/downloaded/*.deb
sudo apt-get install -f

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

4. Если исходный компьютер не использует Ubuntu

Если вы загружаете с другого компьютера, вам нужно будет либо использовать загрузочный носитель с установленной Ubuntu, либо вручную скачать .deb файлы с официального сайта Ubuntu.

Заключение

Скачивание пакета вместе со всеми его зависимостями и подзависимостями — это важная задача, требующая внимания к деталям. Использование комбинаций утилит, таких как apt, apt-get, и apt-rdepends, позволит облегчить процесс и избежать возможных проблем с отсутствующими зависимостями. Следуя изложенным выше шагам, вы сможете успешно подготовить ваш программный пакет для установки на офлайн машину.

Оцените материал
Добавить комментарий

Капча загружается...