Listar recursivamente as dependências de um pacote no arch linux

2

Estou tentando baixar o driver do AUR para instalar em um sistema recém-instalado (não tendo conexão com a Internet), no entanto, quando digito

makepkg -s

Requer que outros pacotes sejam instalados. Sendo que este sistema não tem internet, eu gostaria de baixar esses pacotes (e todas as suas dependências) de outro PC com conexão à Internet e, posteriormente, instalar no novo sistema. Eu encontrei um tutorial no site da Archlinux sobre como instalar pacotes offline. Usando

pacman -Sp <package_name> > /myPackages.list

Criará uma lista de todos os pacotes que eu especificar em package_name . No entanto, eu preciso de todas as suas dependências também. Então eu quero saber:

  1. Existe uma maneira simples de fazer isso?
  2. Preciso digitar comandos manualmente para cada pacote de dependência necessário?
  3. Um script de shell pode ser escrito para realizar isso? Se sim, como faço isso?
por Vince 26.03.2018 / 16:33

1 resposta

1

Resposta

Existe um programa chamado pactree que é instalado junto com o pacman package.
É usado para mostrar a árvore de dependências do pacote especificado.

Você pode usá-lo assim:

pactree -u <package_name>

No entanto, ao contrário do pacman -Sp <package_name> , o pactree só aceita um nome de pacote.

Uma solução

Existem várias maneiras de contornar esse problema, mas a julgar pela sua pergunta, não tenho a sensação de que você esteja familiarizado com os shell scripts (desculpe se estou enganado), então vou explicar uma solução em detalhes:

echo "package_name1 package_name2 ..." | xargs -n 1 pactree -u | sort -u | xargs -n 1 pacman -Sp > /myPackages.list

echo - Comando interno do Shell: Imprime o argumento para o stdout (com nova linha anexada).

| - Pipe: redireciona o stdout do comando esquerdo para o stdin do comando correto.

xargs - Comando externo: Obtém stdin e o anexa à lista de argumentos do comando fornecido.
-n 1 - xargs option: Execute o comando especificado uma vez para cada argumento de stdin .

pactree - Comando externo: mostra a árvore de dependências para o pacote fornecido.
-u - pactree option: Em vez de um gráfico, imprima cada pacote de dependência em uma linha separada.

sort - Comando externo: classifica o texto do stdin e grava-o na opção stdout .
-u - sort : remove duplicatas do classificado stdin .
(Isso é necessário porque alguns pacotes podem ter as mesmas dependências).

Você está familiarizado com o restante da linha.

Nota

pacman -Sp reportará erro se você der o pacote do AUR.

EDIT 17.09.2018

Como apontado por JdeBP , pactree está agora no pacman-contrib .

    
por 05.05.2018 / 23:39