Como obtenho o Portage para baixar um pacote e não fazer mais nada?

1

Depois de ter alguns problemas para se conectar a um servidor TLS e, em seguida, perceber que app-misc/ca-certificates é um ano e quatro meses atrás, fiquei curioso sobre o que mudou desde 20140927.3.17.2 . Pensei em pegar uma cópia do pacote, extrair tudo e vasculhar. Um desdém da página de manual emerge apareceu --fetchonly ( -f ):

Instead of doing any package building, just perform fetches for all packages (fetch things from SRC_URI based upon USE setting).

Soa como o que eu quero! Vamos.

caramel:~ blackl% emerge --fetchonly '='app-misc/ca-certificates-20151214.3.21
emerge: portage group access is required

… uhhh? Bem ... eu não vejo porque não. Tenha privilégios de root.

caramel:~ blackl% sudo emerge --fetchonly '='app-misc/ca-certificates-20151214.3.21
Calculating dependencies... done!
[ebuild     U ~] app-misc/ca-certificates-20151214.3.21 [20140927.3.17.2]

The following keyword changes are necessary to proceed:
 (see "package.accept_keywords" in the portage(5) man page for more details)
# required by =app-misc/ca-certificates-20151214.3.21 (argument)
=app-misc/ca-certificates-20151214.3.21 ~amd64

O que? Não… eu só quero baixar o pacote; Eu não quero realmente instalá-lo ou fazer outras alterações no sistema.

Uma pesquisa mais completa da página de manual não mostrou nada mais relevante (exceto --fetch-all-uri | -F , que me dá o mesmo resultado). Por que emerge está insistindo em acesso privilegiado e alterações de palavra-chave aqui? O que realmente estaria fazendo, além de apenas baixar um tarball, verificá-lo e despejá-lo no diretório de trabalho ou em algum cache?

    
por Blacklight Shining 02.02.2016 / 15:29

1 resposta

3

A pergunta provavelmente deve ser mais como: "Como faço para o Portage fazer download de fontes de pacotes e não fazer mais nada?". A razão pela qual ele não funciona usando emerge é porque é assim que o emerge é projetado. Emerge simplesmente não é a ferramenta certa para fazer este tipo de trabalho e esperemos que nunca será. Para realmente conseguir o que você quer, você tem que usar o comando ebuild ( man 1 ebuild ), assim:

ebuild <PATH_TO_EBUILD> fetch

Este comando faz o download (e verifica) tudo em $SRC_URI para seu $DISTDIR .

Para obter o valor das variáveis:

  • %código%
    • é composto assim:
    • <PATH_TO_EBUILD>
    • link
  • <REPO_DIR>/<CATEGORY>/<PACKAGE_NAME>/<PACKAGE_NAME>-<VERSION>.ebuild : <REPO_DIR>
  • portageq get_repo_path / gentoo : $DISTDIR

Para realmente buscar as fontes para um diretório de sua escolha, apenas imite o portageq distdir var assim:

DISTDIR=<DIR> ebuild <PATH_TO_EBUILD> fetch

Portanto, se você usar caminhos de portage padrão e desejar fazer download de fontes para seu diretório inicial, emita isto:

DISTDIR=~ ebuild /usr/portage/app-misc/ca-certificates/ca-certificates-20151214.3.21.ebuild fetch
    
por 03.02.2016 / 20:19