Como fazer um diskete ninja de tags
Sabe quando (se você num for adepto da deselegância de se instalar sistemas full no seu hd) chega aquela hora gostosa da instalação do slackware onde você tem que escolher os pacotes um por um? Aquela chateação de olhar na descrição do pacote pra que serve o pacote tal?
Bem, se você não tem memória fotográfica e se você se preocupa em não deixar serviços desnecessários ou programas sem sentido boiando no seu path o slackware te provê uma excelente ferramenta para instalação pré-programada de pacotes. Os tagfiles.
Dentro do CD da sua versão de slackware, os pacotes estão agrupados em "séries". Os arquivos com os pacotes, info dos pacotes e md5´s estão organizados em diretórios. Cada diretório tem o nome da série. Série a, série ap, série k etc. Dentro de cada diretório destes tem um arquivo chamado "tagfile", com o conteúdo semelhante à essa pequena amostra, do tagfile da série a, do slack 11:
groo@cacic:~$ cat /mnt/cdrom/slackware/a/tagfile | grep -v ^# aaa_base: ADD aaa_elflibs: ADD acl: ADD acpid: REC apmd: REC attr: ADD bash: ADD bin: ADD bzip2: ADD coreutils: ADD cpio: ADD cups: REC cxxlibs: ADD dcron: ADD devs: ADD e2fsprogs: ADD elvis: ADD etc: ADD findutils: ADD floppy: ADD etc...
Em uma instalação do slackware os scripts de instalação verificam nos arquivos tagfile e se o pacote estiver marcado como:
ADD: vem marcado para instalar; Exemplo: aaa_base: ADD
REC: não vem marcado, mas vem com uma dica de recomendação (<RECOMMENDED>); Exemplo: cups: REC
SKP: não vem marcado para instalar.
Para você que já fez uma instalação 'expert', perceba que quando você seleciona ou não um pacote nos menus, os scripts de instalação marcam esse pacote como ADD ou SKP. Os pacotes marcados como ADD são instalados (dã), os pacotes marcados como SKP não são instalados (dã²) e para os pacotes marcados como REC, abre-se uma janela pop-up recomendando aquele pacote e você pode instalá-lo ou não.
"Eric, eric, socorro!!! Eu tenho tendinite, sentirei dor excruciante ao editar tagfile por tagfile!!" Calma, amigo, se você já usa linux e sua intenção é instalar um novo servidor ou desktop, com exatamente os mesmo pacotes já instalados em um box rodando, scripts nindja, toscamente programados por mim, mas que dão conta do recado podem salvar sua saúde.
Para criar os tagfiles decentes para uma nova instalação você vai precisar de duas coisas basicamente:
- Da lista de pacotes instaladas no servidor atual
- Dos tagfiles do CD da versão que você pretende instalar no servidor novo
Primeiro, logado na máquina que está rodando, crie um diretorio chamado tagfiles no seu home:
$ cd
$ mkdir tagfiles
Pra "pegar" todos os pacotes instalados no seu box atual, rode o seguinte comando:
ls /var/log/packages/ > ~/tagfiles/packs.txt
edite o arquivo packs.txt e retire as informaçôes de versão dos pacotes.
Exemplo:
No seu packs.txt vai ter :
openssh-3.9p1-i486-1
Então edite e deixe como :
openssh
Agora, mounte seu cd do slack em /mnt/cdrom (caso no servidor que esteja rodando não tenha drive de CD/DVD ROM, basta você fazer esse procedimento em uma máquina que tenha o drive, nesse caso, lembre-se de criar o diretorio ~/tagfiles no seu home).:
$mount /dev/cdrom /mnt/cdrom
e rode o seguinte script:
for i in `find /mnt/cdrom/slackware/ -type d | cut -d "/" -f5`; do mkdir ~/tagfiles/$i; cat /mnt/cdrom/slackware/$i/tagfile | grep -v "^#" | sed -e 's/ADD/SKP/g' | sed -e 's/OPT/SKP/g' | sed -e 's/REC/SKP/g' > ~/tagfiles/$i/tagfile ; echo $i; done
Ou baixe o script aqui tags.sh.
groo@cacic:~$ cat tagfiles/a/tagfile aaa_base: SKP aaa_elflibs: SKP acl: SKP acpid: SKP apmd: SKP attr: SKP bash: SKP bin: SKP bzip2: SKP coreutils: SKP cpio: SKP cups: SKP cxxlibs: SKP dcron: SKP devs: SKP e2fsprogs: SKP elvis: SKP etc: SKP findutils: SKP floppy: SKP ...etc
Você percebeu que nosso script pegou os tagfiles do cd, e marcou todos os pacotes como SKP. Não percebeu? ...
Foda-se. Continuando, percebendo ou não que os pacotes foram todos marcados como SKP, significa que agora você vai ter que marcar como ADD os pacotes que vc quer instalar.
"Eric, Groo, Alemão (ou outra alcunha qualquer), socorro! Meu teclado é velho e as teclas travam, terei trabalho para editar um por um". Calma, menina. Um shell script escrito pro mim usando técnicas POG (http://desciclo.pedia.ws/wiki/POG) fará isso pra você.
#---------------------------------------------------------------------------------------------------------------------#
#
# Tagfile packages generator
# By groo
# microbiu@terra.com.br
#
#!/bin/sh
for i in `cat ~/tagfiles/packs.txt`; do
grep "^$i:" ~/tagfiles/* -rn > /dev/null
if [ $? = 0 ];then
STD=$(grep "^$i:" ~/tagfiles/* -rn)
FILE=$(echo "$STD" | cut -d ":" -f1)
NUMBER=$(echo "$STD" | cut -d ":" -f2)
TAG=$(echo "$STD" | cut -d " " -f2)
if [ $TAG != 'SKP' ];then
echo -e "Pacote \e[0;32m $i \e[0;37m já previamente configurado para instalação automática"
else
echo -e "Pacote \e[0;32m $i \e[0;37m configurado para instalação automática"
sleep 1
sed "/^$i:/s/SKP/ADD/g" $FILE > /tmp/file
cat /tmp/file > $FILE
rm /tmp/file
fi
else
clear
dialog --msgbox "\n\nO pacote $i nao existe no seu CD.\
\n\nAntes de prosseguir a configuração, verifique no seu arquivo packs.txt o nome do pacote!" 15 30
clear
exit
fi
done
#---------------------------------------------------------------------------------------------------------------------#
Crie (ou baixe aqui tagfiles.sh o script e o execute:
groo@cacic:~$ sh tagfiles.sh
Prontxo. Se não der erro nenhum, você tem um árvorezinha de tagfiles prontos pra qualquer versão do seu slack. Se der erro esta ferramenta maravilhosa vai te avisar como proceder.
Então copie o diretório tagfiles todo pra dentro de um diskette:
groo@cacic:~$ su Password: root@cacic:/home/groo# mount /dev/fd0 /mnt/floppy/ root@cacic:/home/groo# cp tagfiles /mnt/floppy/ -r root@cacic:/home/groo# sync root@cacic:/home/groo# umount /mnt/floppy/
Agora tá fáci1, é só dar o boot com o cd 1 do slackware.
Caso você não tenha nenhuma necessidade especial quanto ao kernel do boot, aperte enter. A partir do slack11 o kernel padrão no boot do cd é o sata.i. Caso seu hd seja IDE, selecione bare.i e aperte enter.
A primeira opção que você terá que interagir é na escolha do layout do seu teclado.
Aperte a tecla 1 e o enter. Em seguida escolha o seu lay-out de teclado e aperte <enter<. Uma tela te pedirá pra digitar 1 se estiver ok.
A próxima tela vai te pedir pra logar como root. Simplesmente digite "root" e aperte enter. A proxima tela vai te pedir pra digitar "setup", mas, c tá com pressa? Nasceu de 7 meses?
Calma fio... Vamos primeiro particionar nosso hd:
Vamos usar o bom e velho fdisk. A sintaxe do fdisk é:
#fdisk <device>
No meu caso
#fdisk /dev/hda
Se você tem medo de fdisk, saiba que ele e seu help são seus amigos. Como o prompt do fdisk te diz "aperte m para ajuda". Bem, aperte o m e um maravilhoso mundo se abrirá para você.
Agora que você já é PhD em fdisk graças ao help, vamos criar as partiçõezinhas básicas para o nosso firewall:
Part. de Swap - 500MB
/ - 500MB
/root - 500MB
/usr - 1GB
/var - 1GB
Conforme o fdisk nos disse, para criar uma nova partição, apertaremos o n.
Atenção!!! As imagens abaixo são apenas para ilustrar os comandos. Cada tipo de instalação prevê diferentes tipos de particionamento. Antes de particionar seu disco, tenha em mente o uso que você fará desta instalação Linux. Os exemplos abaixo são simplesmente para visualização dos comandos.
depois o p para uma partição primaria
depois o número da partição.
depois o primeiro e o último "cilindro" da partição, sendo que este último, podemos substituir pelo tamanho total da partição.
Digitando p agora você pode ver sua partição novinha em folha.
Repita os passos para todas as partições que você deseja criar. No meu caso a tabela ficou assim:
Agora precisamos definir nossa partição swap e uma partição "ativa" para o boot.
conforme nosso amigo help (lembra dele? não? aperte m então) nos diz, para definir uma partição ativa, apertamos o a. Para trocar uma partição do tipo "Linux" para "Linux swap" apertamos o t depois digitamos 82 <enter>.
Agora é só apertar o w (ah, help amigo) e sair salvando a nota tabela de partições. Você precisa rebootar a máquina para as notas partições serem lidas pelo kernel.
Depois que a máquina rebootar, sim, siga novamente os passos até aqui e vamos entrar no setup. Digite "setup" no prompt e aperte <enter>.
Como eu já configurei o teclado e "lo help soy yo" a primeira opção que eu vou escolher é "ADDSWAP". Posicione o cursor sobre essa opção e aperte o enter. selecione a partição que você quer usar como swap, selecione se quer ou não checar os badblocks e pronto. Vai mostrar uma telinha de sucesso se tudo correr ok.
A próxima tela vai te perguntar onde você quer que o sistema instale a partição root (/). Selecione a partição, o tipo de formatação (com ou sem checagem de bad blocks), o seu sistema de arquivos favorito e aperte ok.
Na tela seguinte o sistema vai te perguntar se você quer utilizar as outras partições que você tem no seu hd. Selecione a partição que você quer utilizar e aperte o enter.
Novamente você terá que escolher se quer ou não checar bad blocks na formatação e o sistema de arquivos. A diferença é que, no final, você será perguntado onde você quer montar essa partição. Responda com o diretório na caixa de texto e aperte o <enter>. O Setup vai te perguntar isso até terminarem todas as partições disponíveis ou até você apertar o Cancel.
A proxima fase da instalação vai te perguntar de onde você quer instalar o Slack. No meu caso é de um CD. Selecione "Install from a Slackware CD or DVD" e na próxima tela, selecione "auto" para o sistema procurar um cd no seu drive.
A não ser que seu drive de cd seja uma aberração seu cd será reconhecido e a segunte tela vai te aparecer. Se ele achar o CD ou DVD, você vai chegar na tela que é o objetivo desse tuto. A tela de seleção de pacotes.
Ao invés de penarmos escolhendo pacote por pacote em cada menu, ou fazermos a podriça de instalar o cd full, nossos tagfiles farão esse trampo por nós. Selecione todas as séries de pacotes (caso você tenha certeza do que fazer, selecione apenas as séries que lhe convierem) e aperte o enter. Na próxima tela, selecione a opção tagpath.
"Eric, Eric, me salve, apareceram várias palavras em inglês e uma caixa de texto. Oh, o que eu faço?" Calma, donzela. Nessa tela você vai falar pro sistema onde estão seus tagfiles. Muda de console (Alt+F2), introduza o diskete com os tagfiles no drive, mounte-o num lugar propício.
root@slackware:/# mkdir /mnt/floopy root@slackware:/# mount /dev/fd0 /mnt/floppy
Volte para o console do setup (Alt+F1) e coloque o caminho na caixa de texto dessa tela.
Se tudo der certo os pacotes serão instalados fluidamente, como a lava de desce do vulcão, com toda sua beleza e poder ou como a menstruação das búfalas das pradarias (escolhe ai a melhor metáfora).
Bem, daqui pra frente, se vire. Um abraço.

