Nesse pequeno artigo venho demonstrar como criar um repositório local para cache de pacotes .deb e veremos também como reempacotar todo um sistema para a utilização posterior de seus pacotes.
A principal ideia que trago com este artigo é a utilização de um espelho local para que se possa utilizar os pacotes .debs que temos (seja por meio de download|compilação etc) de forma parecida como é feita num repositório Debian.
Em segundo lugar; mas não menos importante vem a possibilidade de reempacotar todo o sistema para posterior uso dos pacotes, seja na nossa própria máquina ou numa outra que não tenha acesso à Internet. Nesse caso fiz algo parecido para o Arch Linux nessa dica.
No caso acima podemos ainda copiar todo o resultado do processo: sources.list e pasta com os pacotes, salvá-los num pendrive e utilizá-los numa outra máquina ou na mesma no caso de uma futura reinstalação.
Outro caso que esse método é uma solução é para aqueles usuários que utilizam o famoso 'apt-get clean' que remove todo o cache dos pacotes, nesse caso o que fazer então? Baixar tudo novamente? Sim se possível for! Mas se não for... reempacotemos ora!
Espero que gostem!
Reempacotamento de um sistema Debian
Para reempacotarmos todos os nossos pacotes em uma distro Debian-based (Ubuntu, Mint aptosid e outros) utilizaremos o software 'dpkg-repack' que já foi alvo de dica aqui no VOL:
E se caso não o tenham instalado, instale-o assim:
sudo apt-get install dpkg-repack
* ou sigam o passo alternativo indicado no fim do artigo.
Começando.
Tendo instalado o programa vamos ao reempacotamento e tal como visto na imagem abaixo, criaremos uma pasta chamada 'debs', na qual entraremos a seguir, obteremos a informação dos pacotes instalados e através dela geraremos um script para o reempacotamento, os passos são esses:
Criação da pasta:
mkdir debs
Entrada na pasta de trabalho:
cd debs/
Obtenção da lista de pacotes instalados com o dpkg:
* como visto na imagem tenho 2051 pacotes instalados, alguns dos repositórios Debian, outros compilados e empacotados com o Checkinstall e outros baixados da Internet (caso do LibreOffice).
[2] Comentário enviado por removido em 11/04/2011 - 18:21h
Obrigado eldermarco, isso é bastante útil no caso das pessoas que não tem acesso a Net e que assim quem sabe podem utilizar uma versão determinada de um programa que esteja disponível em outra máquina.
A questão do espelho local é porque ultimamente venho compilando e empacotando muitos pacotes com o Checkinstall, assim fica mais fácil de gerenciá-los. O LibreOffice já está nos repositórios Debian, mas por hora preferi manter a versão que tinha baixado do site oficial.
[3] Comentário enviado por removido em 11/04/2011 - 19:44h
Não sei quem é mais versátil, se é você com toda sua bagagem em GNU/Linux ou o próprio Linux.
Quantas possibilidades! Incrível! Não tem como não dizer que o Linux é o melhor sistema.
Quanto mais leio e aprendo, mais coisas tenho a aprender com você e todos aqui.
[4] Comentário enviado por removido em 11/04/2011 - 22:25h
Obrigado Izaias por suas palavras;
a idéia do espelho local não é nova inclusive existem artigos no próprio VOL a esse respeito, mas foi com a dica do DicasL que obtive o melhor resultado.
Sobre o reempacotamento já fiz muito disso quando conheci as maravilhas dos antigos knoppix, kanotix, sidux... grande parte de seus aplicativos eu reempacotava e instalava no meu Debian. Não existe a promessa que tudo o que for reempacotado será possível instalar noutra máquina devido a questão das dependências, porém em máquinas com sistemas semelhantes é bem provável que tudo funcione.
[5] Comentário enviado por rauldipeas em 11/04/2011 - 23:33h
Existe algum meio de "autenticar" os pacotes do repositório local?
Por que no Ubuntu, o gerenciador de atualizações dá erro com esses pacotes na hora de atualizar...
[7] Comentário enviado por brunotec em 12/04/2011 - 01:08h
Muito Bom Artigo,
Acho que para ambientes corporativos ou em lan houses onde é preciso instalar em várias máquinas ou como foi dito no artigo em máquinas que não possuam internet é uma ajuda e tanto!!
Agora para uma reinstalação futura pode ser que não seja muito lucrativo pois com as atualizações constantes dos pacotes ocorreria de a maioria estar desatualizada, mas é claro dependendo do tamanho do pacote como em um Libreoffice por exemplo ai seria legal já que como ele é um pouco grande dai bastaria atualizar.
No caso do Debian Estável acho que seria legal tbm já que só recebe atualizações de segurança e sendo assim a maioria dos pacotes não necessitariam de atualização.
@edps
vc é uma grande referencia aqui do VOL para Debian e eu que ja gostava muito dessa distro com seus artigos me identifico com ela cada vez mais.
para reempacotar sua distro. Já fiz isso em um live cd a partir de uma partição do hd montada para salvar os pacotes deb.
Afinal um live-cd pode além de te fornecer ferramentas de recuperação alguns pacotes no caso de algum problema.
t++
[9] Comentário enviado por tonyrecife em 12/04/2011 - 13:59h
muito bom mesmo. Uso repositório local pra economizar banda de internet. Apenas o servidor baixa os pacotes da internet, os outros baixam dele, isso somado com cache de páginas, etc...
Viva o Linux. Parabens edps.
[11] Comentário enviado por chimico em 12/04/2011 - 22:44h
Ae edps, a propósito postei hoje (12/04/2011), espero que aprovem, faz tempo que não posto nada (13/03/2008 ), mas tenho muita coisa pra postar, pois me foquei em otimização (sem compilar) e algumas ferramentas em linha de comando como awk, sed, find, kerneis enxutos, mudar o file system sem fazer uma nova instalação (inclusive do root /), apt-build, apt-fast (outros gerenciadores de download), gosto do Arch, mas o Debian..., prefiro compilar tudo nele, ferramentas de backup,...
[12] Comentário enviado por rauldipeas em 13/04/2011 - 04:33h
@edps Obrigado pelas dicas, mais a minha dúvida é sobre como criar um repositório local com chave GPG, falo isso por que tenho um repositório pessoal hospedado no sourceforge, e não sei como criar uma chave GPG pra esse repositório...
Eu só criei o repositório local e hospedei a estrutura de pastas com os arquivos no sourceforge.
[15] Comentário enviado por brunotec em 27/04/2011 - 14:39h
SALVOU A PÁTRIA !!!
tem um PC aqui em casa onde é inviável levar um cabo de rede até ele e para funcionar meu wireless usb nele eu precisava instalar o firmware-ralink e wireless-tools mas baixando os debs e levando até ele sempre dava errode dependencias "lib" e com esse reempacotamento eu consegui instalar os aplicativos de boa e consegui fazer funcionar a wireless! hehehe
o repositório funcionou direitinho e aproveitei e já instalei os drivers nvidia e outras coisa.
peço desculpas por ter esquecido esse detalhe pois só atentei a isso quando baixei os pacotes do Emerald para Debian e os adicionei no repo local, mas não rodei os passos acima.
[19] Comentário enviado por noctuae em 06/05/2011 - 13:35h
Ta aparecendo isso em todos os pacotes processados...
dpkg-deb: building package `amsn' in `./amsn_0.98.4-0ubuntu1_amd64.deb'.
dpkg-deb: warning: './dpkg-repack-3271/DEBIAN/control' contains user-defined field 'Original-Maintainer'
dpkg-deb: warning: ignoring 1 warning about the control file(s)
[20] Comentário enviado por noctuae em 06/05/2011 - 13:40h
Outra coisa
Eu to com problemas com a minha placa de video , sera que na reinstalação destes pacotes no sistema zerado no mesmo PC nao vou recolocar o problema de novo...
[21] Comentário enviado por removido em 23/05/2011 - 09:07h
@ noctuae ,tive o mesmo problema,esse foi o segundo.
no primeiro passo da primeira vez não deu quase nenhum erro mas na hora de mover os arquivos para uma pasta percebi que os pacotes eram menores que o original,na hora de criar repositório deu erro(por alguma informação errada no pacote).
O que deve dar esses erros nos arquivos de controle do *.deb ?
[22] Comentário enviado por removido em 23/05/2011 - 20:08h
desculpa aí galera por não ter visto esses últimos comentários.
em relação ao arquivo 'control' são apenas warnings, que não influenciaram no tamanho dos pacotes.
sobre o tamanho dos pacotes uma possível causa seria o 'localepurge' que remove todo e qualquer locale que não esteja definido (marcado) em /etc/locale.nopurge, isso influenciará no tamanho do pacote com certeza.
até parei de usá-lo, pois como uso o debdelta para diminuir o tamanho dos pacotes baixados durante a atualização do sistema, se o localepurge estiver instalado os deltas não são aplicados.