Um kokar para o Ubuntu e outras distribuições

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.’

[Voltar]