Um kokar para o Ubuntu e outras distribuições
Publicado em 11/02/2009 – 16:52por Carlos Morimoto
Se você chegou a usar alguma das versões do Kurumin, deve se lembrar do Kokar, que era um CD com uma cópia off-line dos arquivos usados pelos ícones mágicos. Este é um script que ensina como aplicar o conceito a outras distribuições derivadas do Debian e do Ubuntu.
Ao instalar qualquer pacote, o apt primeiro baixa o arquivo para só depois fazer a instalação. Isso evita problemas causados por problemas na conexão, uma vez que se a conexão cai, ou o processo é interrompido durante o download, a instalação sequer é iniciada. O apt é capaz também de continuar os downloads em caso de interrupção e também de baixar vários pacotes simultaneamente, aproveitando ao máximo a banda da conexão.
Todos os pacotes baixados são salvos na pasta "/var/cache/apt/archives" e continuam lá mesmo depois de instalados.
Complementando, temos a pasta "/var/lib/apt/lists", que armazena as listas de pacotes, que são baixadas ao rodar o "apt-get update".
Sempre que você inicia a instalação de algum pacote, o apt começa verificando o conteúdo da pasta "/var/lib/apt/lists", em busca de informações sobre o pacote solicitado (número da versão atual, nome do arquivo, etc.), verifica se o arquivo já não está disponível na pasta "/var/cache/apt/archives" e, caso não esteja, executa o processo normal de download.
Como deve estar imaginando, é possível fazer backup destas duas pastas de forma a preservar o cache do apt-get depois de reinstalar o sistema, ou mesmo para instalar os pacotes já baixados em outras máquinas, como no caso de alguém que tem banda larga na escola ou no trabalho, mas acessa via modem discado em casa, por exemplo. Basta fazer backup do conteúdo das duas pastas e restaurá-las no outro PC.
Você pode fazer os backups rapidamente usando o tar. Os dois comandos abaixo criam os arquivos "lists.tar" e "archives.tar" no diretório atual:
$ tar -cvf lists.tar /var/lib/apt/lists/
$ tar -cvf archives.tar /var/cache/apt/archives
Você pode notar que não estou usando o parâmetro "z" do tar, que geraria arquivos compactados, pois como o arquivo incluirá pacotes .deb (que já são arquivos compactados), isso só serviria para tornar a criação dos arquivos mais demorada.
Para restaurar os backups na outra máquina, você precisaria apenas executar (dentro do diretório com os dois arquivos) os comandos:
# tar -xvf lists.tar --directory /
# tar -xvf archives.tar --directory /
A opção "--directory /" faz com que os arquivos sejam desempacotados no diretório raiz, fazendo com que os arquivos sejam restaurados nas pastas corretas. Sem isso, eles seriam extraídos dentro do diretório onde o comando foi executado.
Para que os arquivos sejam realmente usados, é importante que as duas máquinas estejam rodando a mesma distribuição (afinal, pacotes do Debian Etch não seriam de muita utilizada no Ubuntu 9.04, por exemplo) e, igualmente importante, devem estar configuradas para utilizarem os mesmos repositórios no arquivo "/etc/apt/sources.list". Uma boa maneira de se certificar disso, é simplesmente incluir o arquivo no backup e restaurá-lo na outra máquina junto com os outros arquivos.
Para facilitar, você pode usar meu script:
http://www.gdhpress.com.br/blog/arquivos/backup-cache-apt.zip
Ele automatiza o processo, permitindo gerar um arquivo ISO, que você pode gravar em CD, ou simplesmente transportar em um pendrive e montar na outra máquina. O arquivo inclui um script de recuperação, que automatiza a restauração. A idéia central é a mesma que era usada no Kurumin, para gerar o CD do Kokar, mas nesse caso aplicada a outras distribuições.
Aqui vai o "código fonte" do script para que você possa estudá-lo:
#!/bin/sh
# Faz backup do backup do apt
# Escrito por Carlos E. Morimoto
echo 'Este script faz backup do conteúdo das pastas /var/cache/apt/archives e
/var/lib/apt/lists/, permitindo salvar o cache do apt-get em um arquivo ISO,
que pode ser gravado em CD e restaurado em outras máquinas.
Este script apenas copia os arquivos, por isso não é necessário executá-lo como
root. Para usá-lo, é necesário ter espaço livre suficiente dentro do seu
diretório home para o equivalente a duas cópias do cache (um para a pasta
temporária e outro para o arquivo ISO).'
echo 'Pressione Enter para gerar o backup'
read pausa
echo "Acessando o home"
cd ~
pwd
sleep 1
echo 'Removendo backups anteriores:
rm -rf apt-cache/
rm -rf apt-cache.iso
'
sleep 1
rm -rf apt-cache/ &>/dev/null
rm -rf apt-cache.iso &>/dev/null
echo 'Criando pasta apt-cache:
mkdir apt-cache
cd apt-cache
'
sleep 1
mkdir apt-cache
cd apt-cache
echo 'Fazendo backup das listas de pacotes:
tar -cvf lists.tar /var/lib/apt/lists/
'
sleep 1
tar -cvf lists.tar /var/lib/apt/lists/ --exclude=lock
echo 'Fazendo backup do cache de pacotes:
tar -cvf archives.tar /var/cache/apt/archives
'
sleep 1
tar -cvf archives.tar /var/cache/apt/archives --exclude=lock
echo 'Fazendo backup do sources.list:
cp /etc/apt/sources.list .
'
sleep 1
cp /etc/apt/sources.list .
echo '#!/bin/sh
# Restaura o cache do apt. Este script deve ser executado como root
# Por Carlos E. Morimoto
if [ "`id -u`" != "0" ]; then
echo "Este script precisa ser executado como root. Digite su - para se logar"
echo "como root e execute o script novamente."
fi
mkdir -p /var/lib/apt/lists
mkdir -p /var/cache/apt/archives
if [ -e "lists.tar" ]; then
echo "Pressione Enter para restaurar os arquivos"
read pausa
tar -xvf lists.tar --directory /
tar -xvf archives.tar --directory /
else
echo "O arquivo lists.tar não foi encontrado. Você esta executando o script"
echo "No mesmo diretorio onde estao os arquivos?"
fi
echo ""
echo "E recomendavel confirmar o conteúdo do arquivo /etc/apt/sources.list,"
echo "que deve ser igual ao arquivo na maquina onde o backup foi feito."
echo "Verifique a cópia do arquivo original, que foi incluida na imagem."
' > restaurar-apt-cache.sh
chmod +x restaurar-apt-cache.sh
echo "Preparando para criar a imagem ISO, seja paciente"
sleep 1
cd ..
mkisofs -pad -l -r -J -v -V "Cache do apt" -o apt-cache.iso apt-cache/
echo "Gerado o arquivo /home/$USER/apt-cache.iso"
echo 'Você pode gravá-lo em CD ou simplesmente copiá-lo em um pendrive ou
outra unidade de armazenamento. Use o script "restaurar-apt-cache.sh"
dentro da imagem para restaurar o cache, como em:
# cd /media/cdrom
# ./restaurar-apt-cache.sh
Ele precisa ser executado como root (ou usando o sudo), para que possa
modificar as pastas do sistema.
Você pode montar o arquivo iso sem precisar queimar o CD usando o comando:
# mount -o loop apt-cache.iso /mnt/cdrom
... como root.'



28 respostas para “Um kokar para o Ubuntu e outras distribuições”
Interessante. Será que seria possível criar uma estrutura baseado em conceito de "repositório" onde uma unica estação faz o download dos pacotes (updates de aplicativos, por exemplo) e replica para as demais estações da rede?
Algo similar ao que o WSUS faz com o Windows e seus aplicativos.
@ Graubs
Tem esta "dica rápida" no vivaolinuxque ensina como fazer.
http://www.vivaolinux.com.br/dica/Criando-um-repositorio-local-Debian/
Mas acho que usando o squid você teria uma solução melhor e menos trabalhosa.
Gostei da dica. Aqui eu utilizo o Squid como proxy da rede, mas nunca havia pensado em utilizar o cache dele para esse objetivo.
Obrigado por comentar!
[]s
Fantástico!! Estou louco pra chegar em casa e testar.
Valeu Morimoto.
Morimoto,
você conhece o programa APTonCD?
http://aptoncd.sourceforge.net/
Pelo que entendi, tem o funcionamento muito próximo ao da sua dica.
Sugestão: talvez fosse o caso de adicionar uma atualização no seu post.
Espero que tenha sido útil.
Gabriel
Conheço, mas achei uma solução complicada para resolver um problema simples. Mesmo este script que fiz é apenas para poder oferecer alguma receita rápida e demonstrar o conceito, já que você pode fazer e restaurar o backup com os quatro comandos do início do post.
sudo apt-get install apt-on-cd
Olá Sei-Sei Morimoto.
Achei interessante essa parte :
# tar -xvf lists.tar --directory /
# tar -xvf archives.tar --directory /
Os comandos teriam que ser executados dentro dos diretórios "archives" e "list" ?
Se for feito somente o backup com com ambas as pastas,e na pasta do cache fosse restaurada a pasta com os backups com os programas baixados de outra máquina,e fosse dentro dessa pasta rodado o comando " dpkg -i *.deb " (sem as aspas) :) ,teria muita diferença dos comandos executados no texto ?(É os que estou citando)
Obrigado.
Obs:
Pra quem não sabe,o Kokar veio antes do aptoncd.O aptoncd é meio chato pra quem não tem internet,pois se for deb,ele pede dependências e não roda,e se for tar,não roda do mesmo jeito pedindo dependências,mas depende da distro,sem internet ele fica complicado.O script é muito melhor.
T+
Freud, eles são executados diretamente na pasta onde estão os arquivos lists.tar e archives.tar. Os comandos para gerar os arquivos fazem com que eles sejam criados incluindo toda a estrutura de pastas dê uma olhada dentro dos arquivos) e o --directory / faz com que eles sejam descompactados no diretório raiz, similar ao que temos nos pacotes do Slackware
Muito bom vamos por a mão na massa!
Já tentei o APTonCD, o ruim são as dependências.
Agora entendi Sei-Sei Morimoto!
Obrigado por tesr respondido.
"Mãos a massa".
T+
Excelente dica.
Faço isso para o PC da minha namorada, para atualizar o Kubuntu, já que ela tem conexão discada.
Uma diferença é que trago do PC dela o arquivo "/var/lib/dpkg/status", que contem as informações de quais pacotes tem instalado, e sobrescrevo numa instalação minimista, criada com debootstrap, em chroot que tenho no meu PC só para esse fim. Então, é só rodar o aptitude, selecionar o que quer instalar/atualizar e por fim rodar "aptitude -d install", que só fará o download. Para levar os arquivos faço como foi descrito nesse artigo.
Abraços.
Amigo, é possível faze isso também com o kubuntu 8.10 amd64?
vc poderia postar algumas dicas de como fazer isso?
eu tentei dá os comandos que vc indicou:
$ tar -cvf lists.tar /var/lib/apt/lists/
$ tar -cvf archives.tar /var/cache/apt/archives
… só que apareceu deu um erro:
acrisiojr@Kubuntu:~$ tar -cvf archives.tar /var/cache/apt/archives
tar: Removendo `/' do inicio do nome dos membros
/var/cache/apt/archives/
tar: /var/cache/apt/archives/lock: Não pode open: Permissão negada
/var/cache/apt/archives/libxml2-utils_2.6.32.dfsg-4ubuntu1.1_amd64.deb
/var/cache/apt/archives/gnome-doc-utils_0.13.1-0ubuntu1_all.deb
/var/cache/apt/archives/yelp_2.24.0-0ubuntu2_amd64.deb
/var/cache/apt/archives/libfreezethaw-perl_0.43-4_all.deb
/var/cache/apt/archives/aptoncd_0.1.98-0ubuntu3_all.deb
/var/cache/apt/archives/librarian0_0.8.1-1ubuntu2_amd64.deb
/var/cache/apt/archives/doc-base_0.8.16_all.deb
/var/cache/apt/archives/partial/
/var/cache/apt/archives/libuuid-perl_0.02-3_amd64.deb
/var/cache/apt/archives/libmldbm-perl_2.01-2_all.deb
/var/cache/apt/archives/xsltproc_1.1.24-1ubuntu2_amd64.deb
tar: Error exit delayed from previous errors
e também abri a pasta pelo konkeror e percebi que os arquivos não tinham nem 50 mb. Achei muito pequeno já que as atualizações e os programas baixados e instalados via apt foram muito mais de 50 mb.
será que a pasta onde ficam estes arquivos baixados eh diferente no kubuntu?
Aí, mas que saudades do kurumin.
valew.
É só fazer como usei dentro do script:
tar -cvf lists.tar /var/lib/apt/lists/ --exclude=lock
Esse arquivo lock é criado quando o apt-get está em uso.
Eu uso o AptonCD e funciona que é uma beleza!!
mas gostei muito de saber como fazer isso na mão mesmo!!!
obrigado mais uma vez Morimoto-San!! rsrsrs.
Excelente dica Morimoto!!!!
É possível utilizar este procedimento buscando a versão estável disponível com uso do apt-get para um programa específico ex:(apt-get install virtualbox)?
Muito boa a dica…
Obrigado a utilizar o Kubuntu com a descontinuidade do kurumin, lembro quando saiu o AptOnCD e na hora me lembrei do Kokar usado no kurumin. Nunca usei o AptOnCD mas já me vi obrigado a fazer backup dos pacotes baixados no kubuntu 8.10 e procurei ajuda no script do kokar para fazer o backup.
Concordando com o acrisiojr, êta saudades do kurumin…
Aprendi muito com ele, hehehe.:D
Abraços
Não seria necessário fazer backup da pasta /usr/lib também?
No caso de uma atualização do sistema, como do Ubuntu 8.10 para o 9.04, posso usar um backup do sistema novo para facilitar essa atualização?
Poderiam me ajudar tenho o windows istalado mas só tem o Pad não tenho o Word off como posso fazer para coloca-lo em meu computador tem como ser retirado pela Internet e trasportado para o computador.
Estou novo ainda como internauta, agradeço desde já a cooperação dos amigos.
Ivan, pelo que entendi você quer um editor de textos avançado. O Word faz parte do programa Microsoft Office e, até onde sei, não pode ser baixado pela internet diretamente, apenas comprando nas lojas do ramo. Contudo existe uma versão nacional, já com corretor ortografico para a nova norma e que é bastante usado por aqui, o BrOffice. No link abaixo tem algumas informações e um atalho para o site oficial, onde pode baixar gratuitamente:
Dicas para o OpenOffice e BrOffice
Não dá pra fazer isso usando o modo gráfico, simplesmente copiando, colando e restaurando depois, cada pasta em seu lugar?
(Iniciante)
luizmarins, até dá pra fazer do modo gráfico mas devido a lances de permissão e coisas assim é bem mais simples fazer no terminal mesmo.
abraços,
Gostaria de usar o script do marimoto, esse aqui que ta zipado
http://www.gdhpress.com.br/blog/arquivos/backup-cache-apt.zip
puxei e baixei no meu micro na pasta downloads que eu criei na home,,,,, quando eu clico nele ele se descompacta e mostra outra pasta com ele aberto,,,,a questão e o que faço, descompacto onde,,,,como uso esse script e so clicar nele e pronto ou como faço para usar,,,,francamente to na pior quebrando a cabeça e não sei como começar a fazer o cd dos baixados no ubuntu 9.4 ,,,,da para algem me ajudar,,,,,
Não precisão responder ja descobri,,,,,,pena ninguem ter se manifestado para me ajudar,,,mas me virei
Por favor Flaminde, diga-nos como foi que voçê resolveu o problema. Vamos compartilhar as coisas boas.
Abraços
Não consigo instalar o KERNEL 2.6.31.5.Uso o biglinux 4.2 muito bom; só falta a placa ENLTV-FM SAA7134 funcionar.