Existe um comando apt para baixar um arquivo deb dos repositórios para o diretório atual?

35

Estou muito interessado nos gatilhos de instalação (postinst, postrm) ou em certas partes dos pacotes (como /usr/share e /etc ). Atualmente, estou executando o próximo comando para recuperar o código-fonte:

apt-get source [package-name]

A desvantagem é que esse arquivo geralmente é muito maior que o pacote binário e não reflete a árvore de instalação.

Neste momento, estou fazendo o download dos pacotes por meio do link :

  1. Pesquisar [package-name]
  2. Selecione o pacote
  3. Clique em amd64 / i386 para download
  4. Faça o download do arquivo real

Isso leva muito tempo para mim e, como alguém que realmente gosta do shell, gostaria de fazer algo como o próximo comando ( imaginário ):

apt-get get-deb-file [package-name]

Não consegui encontrar algo assim na página de manual do apt-get . O mais próximo que encontrei foi a opção --download-only , mas isso coloca o pacote em /var/cache/apt/archives (que requer permissões de root) e não no diretório atual.

    
por Lekensteyn 15.03.2011 / 14:17

6 respostas

45

Você pode usar o subcomando download de apt , apt-get ou aptitude . Por exemplo, se $ PKG for o pacote que você deseja, qualquer um deles será o seguinte:

apt-get download $PKG
apt download $PKG
aptitude download $PKG

Isso não requer privilégios de root. O mesmo também pode ser aproximado usando apt-get e wget :

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2)

Isso, no entanto, buscará todos os pacotes necessários para instalar o pacote, então você pode tentar limitá-lo:

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | grep "/${PKG}_")

Você também pode colocar uma linha wget em uma função, para poder usá-la como um comando apt-download com o nome do pacote como parâmetro:

function apt-download { wget -c $(apt-get install --reinstall --print-uris -qq  | cut -d"'" -f2); }

Observe as modificações: O $ PKG é substituído por $ 1 e o parâmetro -c permite downloads contínuos interrompidos.

    
por Kees Cook 16.03.2011 / 08:29
8
sudo apt-get -o dir::cache::archives="/path/to/folder/" -d install package

Nota:

Você precisa criar uma pasta chamada parcial na pasta de destino.

    
por mount.cifs 15.03.2011 / 14:33
6

No Ubuntu 14.04 ( apt versão do pacote 1.0.1ubuntu2 , acredito), apt-get inclui o comando download para baixar o pacote fornecido como .deb no diretório atual.

Por exemplo, suponha que queremos baixar o gerenciador de arquivos Ranger :

$ apt-get download ranger

Resultados em:

$ ls . | grep ranger
ranger_1.6.0-1_all.deb
    
por Aaron Santavicca 18.07.2015 / 17:10
3

Se você quiser baixar todos os pacotes deb de uma lista, você pode fazer isso:

cat path/to/text/file.txt | xargs apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | xargs wget

Basta colocar um nome de pacote por linha. Como em um arquivo requirements.txt. Por exemplo, com conteúdos como este:

apache2-mpm-event
curl
dmidecode
ethtool
libapache2-mod-wsgi
libapache2-mod-python

Espero que isso ajude. ;)

    
por Jayme Tosi Neto 14.04.2015 / 20:35
0

/var/cache/apt/archives é legível por todo o mundo. Após apt-get -d , basta extraí-lo de lá para o seu diretório pessoal. Execute dpkg -e /var/cache/apt/archives/foo_version.deb foo enquanto estiver no seu diretório home e os arquivos de controle serão despejados em foo/ .

    
por psusi 15.03.2011 / 15:12
0

sudo apt-get install devscripts

dget [package-name]

    
por Michael Terry 14.04.2015 / 20:49