Versão 3.1.3
Copyright © 1999 Jason Gunthorpe
Aviso de Licença
"APT" e este documento são software livre; você pode distribuí-lo e/ou modifica-lo sob os termos da GNU General Public License como publicada pela Free Software Foundation; seja na versão 2 da Licença, ou (por sua opção) qualquer versão posterior. |
Para mais detalhes em sistemas Debian, veja o ficheiro /usr/share/common-licenses/GPL para a licença completa. |
Resumo
Este documento descreve como usar o APT num ambiente sem rede, especificamente uma aproximação 'sneaker-net' para executar actualizações.
Índice
Índice
Normalmente o APT requer acesso direto a um arquivo Debian, seja duma media local ou através de rede. Outra queixa comum e que uma máquina Debian está numa ligação lenta, como um modem e outra máquina tem uma ligação muito rápida mas estão fisicamente distantes. |
A solução para isto é usar grandes médias amovíveis como um disco Zip ou um disco SuperDisk. Estes discos não são suficientemente grandes para armazenar o arquivo Debian inteiro mas podem facilmente conter um subconjunto suficientemente grande para a maioria dos utilizadores. A ideia é usar o APT para gerar uma lista de pacotes que são necessários e depois obter-los para o disco usando outra máquina com boa ligação. É até possível usar outra máquina Debian com APT ou usar um SO completamente diferente e uma ferramenta de download como o wget. Deixe remote host representar a máquina que descarrega os pacotes, e target host aquela com má ou nenhuma ligação. |
Isto é conseguido ao manipular com criatividade o ficheiro de configuração do APT. A premissa essencial para dizer ao APT para procurar num disco pelos seus ficheiros de arquivo. Note que o disco deve estar formatado com um sistema de ficheiros que saiba lidar com nomes de ficheiros longos como o ext2, fat32 ou vfat. |
Estando o APT disponível em ambas máquinas dá a configuração mais simples. A ideia básica é colocar uma cópia do ficheiro de estado no disco e usar a máquina remota para obter os ficheiros de pacotes mais recentes e decidir quais pacotes descarregar. A estrutura de directórios do disco deverá parecer-se com: |
/disc/
archives/
partial/
lists/
partial/
status
sources.list
apt.conf
|
O ficheiro de configuração deve dizer ao APT para armazenar os seus ficheiro no disco e usar os ficheiros de configuração do disco também. O sources.list deve conter os sites apropriados que deseja usar a partir da máquina remota, e o ficheiro de estado deve ser uma cópia de /var/lib/dpkg/status a partir do target host. Por favor note, se está a usar um arquivo local você deve usar copy URIs, a sintaxe é idêntica a file URIs. |
apt.conf tem de conter a informação necessária para fazer o APT usar o disco: |
APT
{
/* Isto não é necessário se as duas máquinas forem da mesma arquitectura, diz
ao APT remoto que arquitectura tem a máquina de destino */
Architecture "i386";
Get::Download-Only "true";
};
Dir
{
/* Usa o disco para informação de estado e redireciona o ficheiro de estado a partir de
the /var/lib/dpkg default */
State "/disc/";
State::status "status";
// Caches binárias serão armazenadas localmente
Cache::archives "/disc/archives/";
Cache "/tmp/";
// Localização da lista de fontes.
Etc "/disc/";
};
|
Mais detalhes podem ser vistos ao examinar o manual do apt.conf e o exemplo de ficheiro de configuração em /usr/share/doc/apt/examples/apt.conf. |
Na máquina de destino a primeira coisa a fazer é montar o disco e copiar /var/lib/dpkg/status para ele. Você também precisa de criar os directórios delineados na Visão Geral, archives/partial/ e lists/partial/. Depois leve o disco até à máquina remota e configure o sources.list. Na máquina remota execute o seguinte: |
# export APT_CONFIG="/disc/apt.conf" # apt-get update [ APT obtém os ficheiros de pacotes ] # apt-get dist-upgrade [ APT obtém todos os pacotes necessários para actualizar a máquina de destino ] |
O comando dist-upgrade pode ser substituído por qualquer outro comando APT standard, particularmente dselect-upgrade. Você até pode usar um front-end do APT como o dselect. No entanto isto apresenta um problema ao comunicar as suas selecções de volta ao computador local. |
Agora o disco contém todos os ficheiros de índice e os arquivos necessários para actualizar a máquina de destino. Devolva o disco e corra: |
# export APT_CONFIG="/disc/apt.conf" # apt-get check [ APT gera uma cópia local dos ficheiros de cache ] # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade [ Ou qualquer outro comando APT ] |
Para uma função apropriada é necessário re-especificar que o ficheiro de estado seja o ficheiro local. Isto é muito importante! |
Se está a usar dselect você pode fazer a operação muito arriscada de copiar disc/status para /var/lib/dpkg/status para que quaisquer selecções que faça na máquina remota sejam actualizadas. Eu recomendo altamente que as pessoas apenas façam selecções na máquina local - mas isto pode nem sempre ser possível. NÃO copie o ficheiro de estado se entretanto correu o dpkg ou o APT!! |
wget é uma ferramenta popular e portável de download que pode correr praticamente em qualquer máquina. Ao contrário do método acima, este requer que a máquina Debian já tenha uma lista de pacotes disponíveis. |
A ideia básica é criar um disco que tem apenas os ficheiros de arquivo descarregados do site remoto. Isto é feito ao usar a opção --print-uris no apt-get e depois preparar um script wget para realmente ir buscar os pacotes. |
Ao contrário da técnica anterior, não são necessários ficheiros de configuração especiais. Nós usamos meramente os comandos standard do APT para gerar a lista de ficheiros. |
# apt-get dist-upgrade
[ Escolha não quando perguntado, certifique-se que está contente com as acções ]
# apt-get -qq --print-uris dist-upgrade > uris
# awk '{print "wget -O " $2 " " $1}' < uris > /disc/wget-script
|
Qualquer comando além do dist-upgrade pode ser usado aqui, incluindo dselect-upgrade. |
O ficheiro /disc/wget-script irá agora conter uma lista de comandos do wget para executar de modo a obter os arquivos necessários. Este script deve ser corrido com o directório actual sendo o ponto de montagem do disco para que grave os resultados no disco. |
A máquina remota deverá fazer algo como |
# cd /disc # sh -x ./wget-script [ wait.. ] |
Após os arquivos serem descarregados e o disco retornado à máquina Debian, a instalação pode prosseguir usando, |
# apt-get -o dir::cache::archives="/disc/" dist-upgrade |
O qual irá usar os arquivos já obtidos e que estão no disco. |