Existe uma maneira de baixar todas as dependências com o yumdownloader, mesmo se elas já estiverem instaladas?
Estou tentando criar um repositório local e só quero incluir os pacotes que precisamos.
yum
repository
Luke
fonte
fonte
--requires
--resolve
opção repoquery não funciona recursivamente para deps.--recursive
opção ao comando repoquery para que ele funcione recursivamente.yum-utils
projeto upstream . A razão pela qual ele baixa mais pacotes do que o esperado é porque a funçãorpmUtils.arch.getArchList()
retorna todas as arquiteturas compatíveis para o determinado. Inclui, por exemplo, anoarch
arquitetura que pode ser necessária para osx86_64
pacotes. Você pode verificar a fonte: yum.baseurl.org/gitweb?p=yum.git;a=blob;f=rpmUtils/...Para informação de todos,
yumdownloader
não faz o trabalho. Para qualquer pessoa com alguma experiência em gerenciamento de pacotes com `yum, é natural esperar que a seguinte linha de comando baixe recursivamente um RPM de pacote e todas as suas dependências:Mas isso não acontece. Pode ser que imprima dependências de primeiro nível ou aquelas que ainda não estão instaladas. Não tenho certeza.
Aqui está um método que funciona no CentOS 6.5. Siga as etapas para instalar o plug-in downloadonly
yum
conforme fornecido pelo Red Hat . Basicamente, no CentOS 6.x, faça:Em seguida, use o plug-in em combinação com a
--installroot
opção deyum
. Isso impede ayum
resolução e o pulo das dependências já instaladas no sistema.Você faria o download dos RPMs do pacote
<package>
e de todas as suas dependências no diretório<rpm_dir>
. Exemplo, com Git:fonte
sudo yum install yum-plugin-downloadonly.noarch
dizNo package yum-plugin-downloadonly.noarch available.
o que fazer?yum search yumdownloader
retornayum-utils.noarch
Cannot find a valid baseurl for repo: base/$releasever/x86_64
quando adiciono o--installroot
sinalizador.Cannot find a valid baseurl...
problema no Centos 7 com a solução neste link : Adicione o--releasever=/
parâmetroSei que o tópico é antigo, mas, caso alguém se depare com isso, você pode usar o yum para realizar o comportamento desejado.
Primeiro instale o plugin downloadonly (instruções para RHEL): (RHEL5)
(RHEL6)
Em seguida, execute o comando da seguinte maneira:
Se você ignorar, o
--downloaddir
yum será baixado automaticamente para/var/cache/yum
Portanto, a menos que você precise usar o yumdownloader especificamente, acho que essa seria a maneira mais simples de atingir o objetivo.
fonte
Se você é do futuro (Fedora 23+), onde o yum está sendo substituído pelo dnf, você pode achar esse script bash útil.
rpmDownloader:
rpmResolver:
fonte
Descobri que, na prática, é difícil manter um repositório como esse. Criamos esse repositório porque:
Os problemas que podemos encontrar foram:
No final, a melhor solução para o nosso problema foi proxy dos repositórios oficiais e armazenar em cache os pacotes que usamos. Isso funciona bem porque:
Usamos o Nginx e o suporte a proxy incorporado.
fonte
Com base na resposta de Lucas e nos comentários ...
Como desta escrita
repotrack
irá corresponder a todos os seguintes arquiteturas quandox86_64
é especificada:x86_64
,athlon
,i686
,i586
,i486
,i386
, enoarch
.Para os meus propósitos eu só estou interessado em
x86_64
enoarch
pacotes, e eu sei que a minha distribuição não tem nenhumathlon
pacotes.O comando a seguir obtém uma lista de URLs de pacotes, filtra
i?86
arquiteturas e imprime os nomes dos pacotes conforme eles são baixados:Observe que
repotrack
ele não avisa se ele não consegue encontrar um pacote que satisfaça uma dependência nos seus repositórios ativados. Ignora-o silenciosamente.fonte
Tente também
por exemplo:
Fonte: https://www.thegeekdiary.com/downloading-rpm-packages-with-dependencies-yumdownloader-vs-yum-downloadonly-vs-repoquery/
fonte