Um kokar para o Ubuntu e outras distribuições
16 de fevereiro de 2009 | Autor: antonini
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