Dado o nome do pacote debian, como obtenho um URL para o URL .deb mais recente? [duplicado]

0

Digamos, por exemplo, que eu queira instalar o pacote Debian mais recente "libgcc1" para Jessie no AMD64.

Como posso determinar o URL correto para fazer o download no link

Por exemplo, neste caso, clicar manualmente no site link me leva ao download correto, que é:

link

NOTA IMPORTANTE: Eu não tenho apt disponível. Estou escrevendo algum código que extrai manualmente os nomes de dependência dos pacotes .deb, mas agora estou preso tentando descobrir as próximas etapas, que é obter o pacote .deb real correto para o nome do pacote.

Então, por exemplo, eu preciso ir desses bits de informação:

  • nome do pacote: libgcc1
  • versão: mais recente
  • arquitetura: amd64
  • lançamento debian: jessie

para:

link

Como posso determinar esse relacionamento?

EDIT: para todas as pessoas perguntando "Por que não usar o apt?", a resposta é que o problema central que estou tentando resolver é instalar o apt. Eu não posso usar o apt porque estou tentando instalar o apt.

obrigado

    
por Duke Dougal 25.12.2016 / 23:38

3 respostas

6

Bem, se você tivesse apt disponível ...

apt-get -y install --print-uris $PACKAGE | cut -f 2 -d \' | grep \.deb

Ele realmente fornecerá todos os pacotes necessários para o que for necessário instalar.

user@darkstar:~/ $ apt-get -y install --print-uris audacity | cut -f 2 -d \' | grep \.deb
http://archive.ubuntu.com/ubuntu/pool/universe/libs/libsbsms/libsbsms10_2.0.2-1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/serd/libserd-0-0_0.22.0~dfsg0-2_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/sord/libsord-0-0_0.14.0~dfsg0-1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/sratom/libsratom-0-0_0.4.6~dfsg0-1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/suil/libsuil-0-0_0.8.2~dfsg0-1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/a/audacity/audacity-data_2.1.2-1_all.deb
http://archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac++6v5_1.3.1-4_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/libi/libid3tag/libid3tag0_0.15.1b-11_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/l/lilv/liblilv-0-0_0.22.0~dfsg0-1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/p/portsmf/libportsmf0v5_0.1~svn20101010-4ubuntu1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/v/vamp-plugin-sdk/libvamp-hostsdk3v5_2.6~repack0-2_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/a/audacity/audacity_2.1.2-1_amd64.deb

Como você não, olhe para link e pegue uma cópia do arquivo Packages.gz lá. Olhe através dele, e você verá o nome do pacote listado como

Package: audacity

Algumas linhas depois disso, você verá

Filename: pool/main/a/audacity/audacity_2.0.6-2_amd64.deb

E lá vai você! Infelizmente, o número da linha não é consistente ...

    
por 26.12.2016 / 03:14
4

Se você não tiver apt disponível, você estará basicamente reimplementando apt . Provavelmente faz mais sentido obter apenas apt . Mas se você deve ...

Comece da mesma maneira que o apt : a partir de um URL especificado em /etc/apt/sources.list , como http://ftp.us.debian.org/debian/ . Não se esqueça de levar em consideração as entradas adicionais que você pode ter nessa lista para atualizações, security.debian.org e possivelmente backports.

Você precisa avaliar as regras em /etc/apt/preferences{,.d} para saber de qual fonte um determinado pacote deve vir e precisa fazer comparações de números de versão e avaliar as regras de fixação.

Crie um URL completo a partir disso:

http://ftp.us.debian.org/debian/dists/<name>/<section>/binary-<architecture>/Packages.gz

Esse arquivo contém as URLs relativas a todos os pacotes individuais.

Você também precisa dos seguintes arquivos para verificar o hash desse arquivo para verificar sua integridade:

http://ftp.us.debian.org/debian/dists/jessie/Release
http://ftp.us.debian.org/debian/dists/jessie/Release.gpg

... e a chave pública de /etc/apt/trusted* que permite verificar isso. O arquivo Release contém hashes para todos os outros arquivos, que você deve verificar.

Eu esqueci de levar em conta um monte de outras regras sutis sobre o formato e o layout de um repositório de pacotes Debian.

Como você pode ver, é muito melhor usar apenas o apt .

    
por 26.12.2016 / 00:21
1

É melhor instalar e usar apt .

Para baixar a execução do pacote:

apt-get download libgcc1

Para obter o caminho para o seu pacote .deb , execute:

apt-cache show libgcc1 | grep Filename

saída de amostra:

Filename: pool/main/g/gcc-4.9/libgcc1_4.9.2-10_amd64.deb
    
por 26.12.2016 / 11:05