Вопрос или проблема
Существуют схожие вопросы, но ни один из них не решил мою проблему:
Мне нужно установить пакет на отдельный Linux-устройство, а именно kdbg. Я пробовал команду
sudo apt-get install --download-only kdbg
на устройстве, подключенном к интернету, но она только загружает пакет и зависимости которые у меня не установлены. Некоторые из этих зависимостей (эта команда скачала 117 пакетов всего) имеют подзависимости, а эти подзависимости имеют еще больше зависимостей, и я углубляюсь в поиск этих пакетов в репозитории.
Теперь я попробовал несколько других команд, которые, как предполагается, загрузят все зависимости, даже те, которые у меня уже установлены. Я пытался
apt-get download PACKAGE && apt-cache depends -i PACKAGE | awk '/Depends:/ {print $2}' | xargs apt-get download
и
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
, позволит облегчить процесс и избежать возможных проблем с отсутствующими зависимостями. Следуя изложенным выше шагам, вы сможете успешно подготовить ваш программный пакет для установки на офлайн машину.