Есть ли способ загрузить все зависимости с помощью yumdownloader, даже если они уже установлены?
Я пытаюсь создать локальный репозиторий и хочу включить только те пакеты, которые нам нужны.
yum
repository
Люк
источник
источник
--requires
--resolve
не работает рекурсивно для deps.--recursive
опцию в команду repoquery, чтобы она работала рекурсивно.yum-utils
проект. Причина, по которой она загружает больше пакетов, чем ожидалось, заключается в том, что функцияrpmUtils.arch.getArchList()
возвращает все совместимые архитектуры для данной. Он включает в себя, например,noarch
архитектуру, которая может понадобитьсяx86_64
пакетам. Вы можете проверить источник: yum.baseurl.org/gitweb?p=yum.git;a=blob;f=rpmUtils/…Для всеобщего сведения,
yumdownloader
не делает работу. Для любого, кто имеет некоторый опыт управления пакетами с помощью `yum, естественно ожидать, что следующая командная строка будет рекурсивно загружать RPM пакета и все его зависимости:Но это не так. Может быть, он печатает зависимости первого уровня или те, которые еще не установлены. Я не уверен.
Вот один метод, который работает на CentOS 6.5. Выполните следующие действия , чтобы установить плагин для downloadonly
yum
как дано Red Hat . В основном на CentOS 6.x выполните:Затем используйте плагин в сочетании с
--installroot
переключателемyum
. Это предотвращаетyum
разрешение и последующее пропускание зависимостей, которые уже установлены в системе.Вы бы скачали RPM пакета
<package>
и все его зависимости в каталоге<rpm_dir>
. Пример с Git:источник
sudo yum install yum-plugin-downloadonly.noarch
говоритNo package yum-plugin-downloadonly.noarch available.
что делать?yum search yumdownloader
возвращаетсяyum-utils.noarch
Cannot find a valid baseurl for repo: base/$releasever/x86_64
когда добавляю--installroot
флаг.Cannot find a valid baseurl...
проблемы на Centos 7 с помощью решения по этой ссылке : Добавьте--releasever=/
параметрЯ понимаю, что поток старый, но в случае, если кто-то наткнется на это, вы можете использовать yum для достижения желаемого поведения.
Сначала плагин downloadonly (инструкция для RHEL): (RHEL5)
(RHEL6)
Далее выполните команду следующим образом:
Если вы проигнорируете,
--downloaddir
yum автоматически загрузится в/var/cache/yum
Поэтому, если вам не нужно специально использовать yumdownloader, я думаю, что это будет самый простой способ достичь цели.
источник
Если вы из будущего (Fedora 23+), где yum заменяется на dnf, этот скрипт bash может оказаться полезным.
rpmDownloader:
rpmResolver:
источник
Я обнаружил, что на практике создание такого репо сложно поддерживать. Мы создали этот репо, потому что:
Проблемы, с которыми мы могли столкнуться, были:
В конце концов, лучшим решением нашей проблемы было прокси официальных репозиториев и кеширование пакетов, которые мы использовали. Это хорошо работает, потому что:
Мы использовали Nginx и встроенную поддержку прокси.
источник
Опираясь на ответ Люка и комментарии ...
На это письмо
repotrack
будет соответствовать всем из следующих архитектур , когдаx86_64
указано:x86_64
,athlon
,i686
,i586
,i486
,i386
, иnoarch
.Для моих целей меня интересуют только пакеты
x86_64
иnoarch
пакеты, и я знаю, что в моем дистрибутиве нетathlon
пакетов.Следующая команда получает список URL-адресов пакетов, отфильтровывает
i?86
архитектуры и распечатывает имена пакетов по мере их загрузки:Обратите внимание, что
repotrack
это не предупреждает вас, если он не может найти пакет, который удовлетворяет зависимости в ваших включенных репозиториях. Он молча пропускает это.источник
Также попробуйте
например:
Источник: https://www.thegeekdiary.com/downloading-rpm-packages-with-dependencies-yumdownloader-vs-yum-downloadonly-vs-repoquery/
источник