Instale o software com suas dependências de um repositório local na LAN [duplicado]

0

Eu tenho algumas caixas Ubuntu 14.04 64 bit . Um deles pode falar com a internet (digamos, Máquina1) e o outro não pode devido a restrições de rede (digamos Máquina2).

A Máquina 2 precisa de algum software específico para ser instalado, por exemplo, talvez seja preciso instalar o google-chrome (apenas como exemplo) nesta máquina.

O que eu tentei é criar um /localrepo/amd64 diretory na Máquina 1. Faça o download do pacote .deb estável e coloque-o nesse diretório /localrepo/amd64 . Este diretório tem um link simbólico de link em / var / www / html, então a máquina, pelo menos através da rede local, pode acessar este diretório.

Eu corri dpkg-scanpackages amd64 | gzip -9c > amd64/Packages.gz que gerou um arquivo Packages.gz .

Na máquina1, edito o arquivo sources.list para adicionar

http://Machine2FQDN/localrepo amd64/

Eu comento todas as outras linhas que estavam tentando apontar para vários repositórios do Ubuntu.

Eu faço um apt-get update e, em seguida, tento instalar o pacote, tenho um problema de dependência.

Agora, minha pergunta é se eu quero que todas as dependências para o arquivo .deb sejam baixadas em Machine1 localrepo diractory, qual é o caminho para isso.

Já vi respostas como executar o apt-get install -f, que não funciona no meu caso, não posso permitir que a Máquina 2 converse diretamente com repositórios do ubuntu e resolva dependências via apt-get. Eu não preciso de cada pacote no cache para ser copiado para este repositório local, eu preciso apenas dos pacotes de dependência associados específicos para obter baixado (não instalado) quando eu baixar um pacote através de um único comando.

Temos uma solução para isso?

Por favor, deixe-me saber se você precisar de mais informações.

Nota: Sei que executar apt-cache depends google-chrome-stable lista as dependências, mas preciso que essas dependências sejam baixadas para minha própria pasta personalizada / localrepo /

    
por schow 06.11.2014 / 01:04

2 respostas

1

O problema está aqui

% bl0ck_qu0te%

Se você comentar todas as linhas de recompra da máquina desconectada, como ela obterá outros arquivos .deb necessários para satisfazer a solicitação se o seu repositório local não puder fornecer esse arquivo?

Por exemplo, se o Google Chrome exigir a.deb e b.deb e Você instalou a.deb em sua máquina conectada em algum momento. Posteriormente, você fez o download de b.deb para o Google Chrome e colocou apenas b.deb no repositório local, sem o arquivo a.deb em seu repositório local. Neste caso, a máquina desconectada, que pode apenas solicitar ao repositório Local, não pode obter o arquivo a.deb e irá gerar uma mensagem de erro de dependência.

Solução permanente

Se você realmente quer este tipo de configurações, então você deve ter certeza que ambos os PCs estão no mesmo estado em relação aos pacotes instalados. E sempre que instalar algo na máquina conectada, você deve fazer o backup dos arquivos .deb e colocar o tema no repositório local para máquinas desconectadas.

Solução temporária

Outra solução poderia ser rodar um sistema Live na máquina conectada e baixar ou instalar o pacote requerido lá. Desta forma, você pode obter todos os pacotes necessários para uma nova instalação do Ubuntu. Qual seria suficiente para a máquina desconectada. Pegue os arquivos .deb , coloque-os no repositório local e instale de outra máquina.

Espero que isso ajude.

    
por Anwar 06.11.2014 / 17:42
0

Se machine1 e machine2 fossem idênticos, você poderia fazer isso na máquina 1:

 sudo apt-get install -dy your-package
 scp /var/cache/apt/archives/*.deb machine2:/somewhere
 # create your local repo with all those .debs

Agora, se você começar a instalar o software em machine1, isso não funcionará, porque então um pacote que já está instalado e satisfaz uma dependência não será baixado novamente e, portanto, não estará em / var / cache / apt / archives . Isso também é um problema se as máquinas foram instaladas a partir de versões / sabores essencialmente diferentes do Ubuntu (digamos, se machine1 for 14.04 desktop e machine2 for 12.04 server).

Eu escrevi uma ferramenta chamada dpkg-offline que pode ajudar, você basicamente diz de qual ISO você instalou o machine2 (você precisa ter uma cópia local do ISO) e quais pacotes você deseja baixar, ele irá produzir um tar .gz com todas as dependências necessárias para instalar esses pacotes em um sistema que foi instalado corretamente a partir do ISO de referência.

O dpkg-offline não funciona tão bem com o servidor 12.04 (e versões mais antigas do servidor), mas se o seu computador2 for o Ubuntu Desktop (qualquer versão desde 10.04) ou o Ubuntu Server 12.10 ou mais recente, pode ajudar.

link

para usá-lo, instale o bzr e, em seguida, bzr branch lp:dpkg-offline . Você encontrará um README e um tutorial detalhado sobre como usar a ferramenta.

    
por roadmr 06.11.2014 / 18:24