Como eu instalo um pacote com as dependências corretas de um monte de RPMs que baixei?

1

Estou em uma situação semelhante a Como posso instalar um RPM local usando apenas os arquivos RPM de dependência local? ou instala um diretório cheio de RPMs para que rpms que fornecem dependências sejam instaladas antes de rpms dependentes? , mas eu m no Fedora em vez de CentOS e ter DNF em vez de Yum.

Eu tenho um monte de .rpm arquivos baixados para um diretório. Eu quero instalar um deles (digamos foo-1.0-1.rpm ) e ter suas dependências. Eu só quero instalar as coisas necessárias, não todos os outros arquivos que foram baixados, como foo-debuginfo-1.0-1.rpm e foo-extraplugin-that-no-one-uses-1.0-1.rpm . Se eu fizer dnf install * , recebo todo o lixo extra. Se eu fizer apenas dnf install foo-1.0-1.rpm , obtenho erros sobre falta de dependências em bar e baz e foo-essential .

O que devo fazer?

    
por mattdm 23.09.2017 / 16:05

1 resposta

2

As respostas para o Yum sugerem criar um repositório local e adicionar um arquivo de configuração de repo a /etc/yum.repos.d . Você poderia fazer isso, mas com o DNF, você não precisa fazer isso. Você pode simplesmente apontar para um repositório local sem nenhum arquivo de configuração. Você precisa criar o repositório em seu diretório.

Então:

  1. Altere para o diretório em questão. cd ~/Downloads/RPMs , por exemplo.
  2. execute createrepo_c . nesse diretório. (Ou createrepo_c ~/Downloads/RPMs de qualquer lugar.)
  3. Executar dnf --repofrompath local,. install foo

Notas:

createrepo_c é uma substituição mais rápida e rápida de createrepo .

A sintaxe do repositório fornecido é o caminho de vírgula do reponame. Então você poderia fazer --repofrompath "My Repository",/home/mattdm/Downloads/RPMs se quiser. Você também pode fornecer um URL: um URL file:/// ou um remoto.

Lembre-se de fornecer o pacote que você deseja instalar como apenas o nome do pacote, como foo , em vez de um nome de arquivo, como foo-1.0-1.rpm .

E, finalmente, se você tiver outros repositórios configurados que também forneçam foo e, em vez disso, eles sejam atraídos, isso será um problema no futuro, mas, por enquanto, você pode usar --disablerepo para obter livrar-se do outro repo problemático.

    
por 23.09.2017 / 16:05

Tags