baixar pacotes para distribuição diferente com apt

2

Eu quero baixar um pacote .deb com suas dependências para uma distribuição diferente.

Eu tenho muitos sistemas Linux na minha empresa: Ubuntu 11.04, 11.10, 12.10 e Debian 5 e 6.

O comando para baixar uma árvore de dependências completa seria apt-get -d install package .

Atualmente estou usando um Debian 6 (squeeze), e o download de pacotes para a mesma distribuição funciona bem. Eu tentei baixar a árvore de pacotes ( sem instalação) alterando minhas fontes sources.list para Debian 5 (lenny).

No entanto, recebo o seguinte erro:

# apt-get -d install python-lxml
...
The following packages have unmet dependencies:
 python-lxml : Depends: python (< 2.6) but 2.6.6-3+squeeze7 is to be installed
E: Broken packages

A execução de um SO diferente para cada distribuição resultará em mais de 12 máquinas. Estou procurando uma solução mais clara.

Alguma sugestão?

    
por iTayb 15.01.2013 / 21:14

3 respostas

4

O trabalho principal do APT é resolver dependências. Então você não pode culpá-lo por reclamar sobre dependências.

Você precisará invocá-lo com uma configuração diferente para não misturar os bancos de dados de pacotes. Mantenha os arquivos apt.conf e sources.list separados e para cada distribuição, por exemplo,

apt-get -o Dir::Etc::Main=/path/to/precise/apt.conf -d …

com apt.conf contendo pelo menos

Dig::State::status "/path/to/precise/status";
APT::Get::Download-Only "true";

Você pode precisar criar links simbólicos ou replicar alguns arquivos em /etc/apt no diretório /path/to/precise (dependendo do que você tem neles).

Não execute o apt-get como root quando você passar um banco de dados alternativo . Se apt-get tiver permissão para modificar seu sistema e você acidentalmente desconfigurar algo ou desativar -d , você poderá atrapalhar seriamente seu sistema. Execute apt-get apenas com os privilégios de que precisa, desde que você só faça o download de material não inclua root. Você precisará ter permissões suficientes para gravar no diretório de cache /var/cache/apt e seu conteúdo; Eu recomendo criar um grupo para isso ( addgroup aptcache; chgrp -R aptcache /var/cache/apt; chmod -R g+w /var/cache/apt e adicionando-se a ele).

    
por 16.01.2013 / 01:16
1

É difícil discernir o que você pretende fazer com esses pacotes depois de baixá-los, o que realmente ajudaria.

Se você estiver baixando esses pacotes para instalação futura em outra máquina, e quiser mantê-los no local, eu recomendaria criar um repositório apt parcial para cada distro usando reprepro . Se você tem muitos sistemas debian / ubuntu em sua empresa, provavelmente desejará fazer isso de qualquer maneira.

No meu ambiente, eu tenho um servidor python xmlrpc no repositório e os clientes enviam a saída de dpkg --get-selections para serem mesclados com a lista parcial de pacotes no repositório, ajudando a manter o repositório local em sincronia. Eles são scripts muito simples, e quando eu tiver tempo, vou postá-los no github.

Se você precisar usar esses pacotes em uma máquina local após o download, e os pacotes não forem criados para o sistema que você está usando, você poderá investigar usando schroot . O pacote schroot permitirá que você execute um chroot de cada distribuição para poder testar seu código ou qualquer outra coisa que você precise fazer.

    
por 16.01.2013 / 07:48
0

Eu REALMENTE NÃO posso recomendar o suficiente para que você decida sobre uma única distribuição e imponha seu uso na rede, a menos que você goste de gastar cinco vezes mais tempo e esforço, certificando-se de que todos os sistemas estejam atualizados e corrigidos. .

No mínimo, o debian Lenny foi declarado final de vida há quase um ano - não será mais qualquer atualização de segurança. Eu não deveria ter que te dizer como é uma má idéia continuar a usá-lo.

Estou um pouco menos familiarizado com o ciclo de vida do Ubuntu, mas estou disposto a apostar que a versão 04/11 não está mais sendo atualizada.

Além disso, mesmo que você consiga se preparar para fazer o que está pedindo, você está intencionalmente desativando tantas proteções internas que um único erro deixará seu sistema uma bagunça horrível

Se você realmente tem que ter todas essas distribuições rodando, talvez seja melhor você dizer a cada um deles para usar um proxy http em cache como squid que você configura em um servidor central para minimizar o uso da largura de banda e a exposição ao exterior.

    
por 16.01.2013 / 09:22