Baixe pacotes via apt sem privlidges de raiz

4

Estou trabalhando em um script para mostrar diferenças entre os arquivos de configuração em um sistema e aqueles fornecidos no pacote original. Eu tenho praticamente tudo isso funcionando, exceto pelo uso do apt para baixar pacotes sem ser root. Existe uma maneira simples de fazer isso?

Editar: Eu examinei as opções de tipo de script do 'hacky' wget, mas o principal problema que tenho é como você determinaria qual repositório tentar obter o pacote. Não está incluído em nenhuma saída do apt-cache que eu possa ver.

    
por theotherreceive 18.08.2009 / 16:59

6 respostas

3

Simplesmente aptitude download it:

$ ls vim*.deb
ls: vim*.deb: No such file or directory

$ aptitude download vim
[...]
Fetched 835kB in 0s (2933kB/s)

$ ls vim*.deb
vim_1%3a7.0-122+1etch5_amd64.deb

$ id
uid=1000(earl) gid=100(users) groups=100(users)
    
por 22.08.2009 / 11:33
3

Você pode configurar sem senha sudo para aptitude --download-only ? Ou você pode analisar a saída de vários comandos apt e baixar manualmente o arquivo de lá. Existem bibliotecas de terceiros para lidar com a libapt, como o python-apt

    
por 18.08.2009 / 17:24
2

dget faz exatamente o que você deseja. Na página do manual:

In the second form, dget downloads a binary package (i.e., a .deb file) from the Debian mirror configured in /etc/apt/sources.list(.d). Unlike apt-get install -d, it does not require root privileges, writes to the current directory, and does not download dependencies.

    
por 22.08.2009 / 13:31
0

O wget pode ser usado para fazer o download de pacotes para um diretório gravável pelo usuário, que responde a sua pergunta, a menos que você tenha um requisito oculto em sua pergunta para realmente instalar os pacotes.

    
por 18.08.2009 / 17:44
0

Tente usar as bibliotecas pkg_apt subjacentes? Embora, eles provavelmente tornem o seu script um pouco mais complexo, e o iirc está no perl, portanto, exija que você use isso.

    
por 18.08.2009 / 22:03
0

Os locais dos repositórios estão em /etc/apt/sources.list e /etc/apt/sources.list.d/*, então você pode usá-los para elaborar a lista de repositórios. Em seguida, tente todos eles com wget para a localização do pacote. É força bruta, mas funcionaria.

Por exemplo, esta entrada deb http: // us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse torna-se wget link

    
por 22.08.2009 / 09:13