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:
$ dpkg --get-selections | awk '{if ($2=="install") print $1}' > debian_packages.list
* 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).
Criação do script para reempacotamento:
$ cat debian_packages.list | awk '{ print "dpkg-repack " $1 }' > repack.sh
Daremos permissão de execução para o script:
$ chmod +x repack.sh
Execução do script gerado:
$ sudo ./repack.sh
Script em execução (demora um pouco... afinal são 2051 pacotes, alguns bem grandes caso do Sauerbraten, Nexuiz etc):
Término do reempacotamento:
Pasta na qual os arquivos foram gerados:
Informações da pasta e remoção dos arquivos gerados (debian_packages.list e repack.sh):
$ rm -fv debian_packages.list; rm -fv repack.sh):
e tendo concluído isso, estamos prontos para o próximo passo...
[1] Comentário enviado por
eldermarco em 11/04/2011 - 17:29h:
Que interessante esse negócio de reempacotar todo o sistema! Muito bom edps!
[2] Comentário enviado por
edps 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.
t+
[3] Comentário enviado por
izaias 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.
Muito bom, Edinaldo.
[4] Comentário enviado por
edps 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.
um abraço!
[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.
10zão e um abraço.
[8] Comentário enviado por
chimico em 12/04/2011 - 13:47h:
Olá edps, vc pode fazer assim também:
dpkg --get-selections | awk '{if ($2=="install") print $1}' | dpkg-repack
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.
[10] Comentário enviado por
edps em 12/04/2011 - 18:42h:
Valeu galera (brunotec, chicotrance e tonyrecife), obrigado pelos comentários.
@chicotrance,
thanks man again! estás me devendo aquela dica do debdelta hein rsrsrs, um abraço meu brother!
[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,...
Abraço!
[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.
Desde já agradeço sua atenção!!
AbraxX!!
[14] Comentário enviado por
FábioFarias em 27/04/2011 - 10:11h:
Parabéns Edinaldo.
Mais um belo trabalho seu amigo. É sempre um prazer ler trabalhos como esse. Obrigado por contribuir.
Abraços!
[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.
mais uma vez, Valeu.
[16] Comentário enviado por
edps em 27/04/2011 - 17:42h:
@FábioFarias,
obrigado pelo comentário caro colega, um abraço!
@brunotec,
beleza cara, que bom que funcionou.
[17] Comentário enviado por
edps em 27/04/2011 - 17:50h:
ADENDO AO ARTIGO:
sempre que novos pacotes forem adicionados ou excluídos do repositório local é recomendável que se faça:
$ cd caminho-da-pasta ### no meu caso /opt/packages
$ sudo dpkg-scanpackages . /dev/null > Packages
ou
$ sudo dpkg-scanpackages . /dev/null | sudo gzip -9c > Packages.gz
$ sudo apt-get update
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.
* sobre o Emerald para Debian e derivados:
http://www.vivaolinux.com.br/screenshot/Xfce-XFCE+Compix+Emerald/
[18] Comentário enviado por
guilherme au@pei em 05/05/2011 - 16:19h:
gostei,so ficaria melhor com algo parecido com o um script para reinstalar todos os pacotes .
[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)
Porque será...
[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
guilherme au@pei 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
edps 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.
um abraço!