Slackware - Instalação com Tagfiles

Esse artigo aborda a criação de tagfiles para instalação personalizada do Slackware em modo texto. Esse artigo possui o nível de dificuldade intermediário.

[ Hits: 8.840 ]

Por: Perfil removido em 06/10/2015


Conceitos Básicos



Tagfiles

Internamente, a estrutura da mídia de instalação do Slackware possui um diretório slackware (slackware64 para a versão 64 bits). Esse diretório possui 16 subdiretórios sendo um para cada categoria. Cada um destes subdiretórios contém os pacotes binários (arquivos .txz) prontos para instalação. Além disso, existem os arquivos com uma breve descrição do pacote (.txt) e uma assinatura GPG para checagem da segurança da integridade do pacote (.txz.asc) durante a instalação. Por exemplo, para o pacote acl você deve encontrar esses arquivos.
  • acl-2.2.52-i486-1.txt
  • acl-2.2.52-i486-1.txz
  • acl-2.2.52-i486-1.txt.asc

Dentro de cada diretório de categoria (a, ap, d, n, l etc) existe um shell script chamado maketag. Esse script é executado durante a instalação e permite que o usuário possa selecionar quais pacotes serão instalados. O script maketag gera um arquivo tagfile personalizado (em tempo de execução do instalador) para cada série. Entretanto, selecionar manualmente cada pacote não é produtivo para alguém que faça várias instalações ou mesmo para o usuário comum que fica confuso e acaba instalando dezenas de pacotes desnecessários.

Apesar de parecer complexo, maketag é um shell script relativamente simples que usa funções do sistema dialog para criar menus interativos apresentados durante a instalação. Esses menus permitem ao usuário selecionar ou remover pacotes de cada uma das séries durante a instalação. Após a seleção do usuário um arquivo tagfile temporário é criado em /var/log/setup/tmp com o nome de SeTnewtag. Mais tarde esse arquivo é usado para continuar a instalação com as opções de pacotes já selecionadas para a série.

Segundo [3], um pacote está sujeito aos seguintes estados de instalação:
  • Requerido - Este pacote será instalado SEMPRE. Essa informação aparece para o usuário no menu de seleção. Slackware é tão flexível, que mesmo os pacotes requeridos podem não ser instalados; afinal a decisão final é sua.
  • Opcional - Esse pacote é opcional, e pode ou não ser instalado. Por padrão, pacotes opcionais SÃO instalados (isso gera um pouco de confusão).
  • Recomendado - Alguns pacotes são recomendados e também instalados por padrão (isso gera um pouco de confusão).
  • Não instalado - Esses pacotes não são instaláveis automaticamente.

Internamente, a opção de instalar ou não um pacote é feita no script maketag de cada categoria. Na programação do script isso é traduzido como uma decisão binária (on ou off). Para o usuário isso é descrito como marcado ou desmarcado no menu interativo. A partir das decisões do usuário, o script maketag gera um arquivo tagfile temporário com a seguinte estrutura lógica:

nome_do_pacote: estado

O nome do pacote é a parte que não incluí informações sobre a versão. Por exemplo, no pacote bash-4.3.039-i586-1.txz o nome do pacote é bash. O número 3.039 indica a versão, o valor i586 indica a arquitetura (x86), o valor 1 indica a release dessa versão e o .txz indica o tipo de arquivo (MIME).

Num arquivo tagfile personalizado o estado é binário (on ou off) as tags que identificam isso são respectivamente ADD (adicionado) ou SKP (não-adicionado do inglês SKIP). Na tagfile original de cada série não são encontrados estados SKP, pois as escolhas originais do editor do Slackware definem que esses pacotes serão instalados se você selecionou a série e não modificou a tagfile original.

Na tagfile original o valor ADD, REC e OPT acabam tendo o mesmo significado prático fazendo com que o pacote acabe instalado automaticamente. Isso é improdutivo sob vários aspectos e pode até ser bom para um iniciante, mas é terrível para um usuário que acaba com dezenas de pacotes que nunca serão utilizados, abrindo brechas na segurança, requerendo dezenas de megabytes durante a atualização do sistema e ocupando espaço em disco de modo desnecessário. A seguir um trecho (editado) da tagfile original da série "A" encontrado na mídia de instalação em slackware/a/tagfile.

aaa_base:ADD
acpid:REC
apmd:REC
bash:ADD
coreutils:ADD
cpio:ADD
cryptsetup:OPT

Editar tagfiles originais na mão não é uma boa ideia, pois você pode remover algo requerido ou mesmo gerar uma tagfile inutilizável. Para criar tagfiles consistentes e seguras vamos modificar levemente cada um dos scripts maketag para termos um método de criação de tagfiles bem simples e eficiente.

Editando maketag

Cada série possuí um script maketag. Basicamente eles fazem a mesma coisa em cada série: geram uma tagfile para a série em questão. Podemos modificar levemente esse script para termos nosso próprio gerador de tagfiles. Para modificarmos o script vamos entender um pouco de seu funcionamento e de sua estrutura lógica. O funcionamento básico do script maketag é pegar uma lista com o nome do pacote, uma breve descrição e seu estado, um pacote por linha, e a partir desta seleção gerar um tagfile. Observe um trecho do maketag.

"bash" "GNU bash shell - REQUIRED" "on" \
"cpufrequtils" "Kernel CPUfreq utilities" "off" \

Os trechos do maketag da série "A", (acima) mostram que o pacote bash é requerido e seu estado é "on" (ADD), enquanto o pacote cpufrequtils não será instalado e tem o estado "off" (SKP). Essas duas linhas geram um tagfile no seguinte formato:

bash:ADD
cpufrequtils:SKP

As modificações necessárias para ter seu sistema de criação de tagfile são:

1. No diretório de seu usuário ou do root crie um subdiretório slackware ou slackware64 conforme sua arquitetura.

2. Modifique a variável TMP em cada um dos scripts maketag ajustando para a série correspondente. Por exemplo, para a série "A" faça:

TMP=/var/log/setup/tmp

Fica como:

TMP=/root/slackware/a

3. O nome do arquivo criado deve ser tagfile. Então basta renomear SeTnewtag após sua criação para tagfile (assim em minúscula). Adicione a linha abaixo no fim de cada arquivo maketag para renomear SeTnewtag para tagfile.

mv $TMP/SeTnewtag $TMP/tagfile

4. Faça os ajustes nos pacotes modificando os campos "on" para instalar e "off" para não instalar. Salve o script.

5. Não modifique mais nada no código do script maketag. Ajuste as permissões para 0700 ou outro valor de acordo com sua necessidade de execução e teste.

Fazendo isso para cada uma das séries que pretende utilizar você terá um sistema automatizado para gerar tagfiles personalizadas rapidamente. Após executar cada um dos scripts maketag personalizados você terá uma estrutura de acordo com as séries que selecionou:

/root/slackware/
			a/
				tagfile
			ap/
				tagfile
			d/
				tagfile
			l/
				tagfile
			n/
				tagfile

Página anterior     Próxima página

Páginas do artigo
   1. Categorias de Pacotes
   2. Conceitos Básicos
   3. Utilizando tagfiles durante a instalação
Outros artigos deste autor

Montando partições em memória

Introdução a Threads e como implementá-las em Python

Melhorando o tempo de boot do Fedora e outras distribuições

Criando Arrays, Arrays Multidimensionais e Hashes em BASH Script

antiX: uma distro versátil

Leitura recomendada

Instalando Prolink Pixelview PV-BT878P+

Instalação dos servidores web Apache e Thttpd no Debian Linux

Instalando o modem Onda MSA110UP em distribuições Linux que utilizam o NetworkManager

Ubuntu Lucid Lynx - Instalação mínima (mini-iso) de 13MB

Criando wallpapers animados para o Enlightenment 17

  
Comentários
[1] Comentário enviado por xerxeslins em 06/10/2015 - 23:49h


Interessante e bem explicado! Curti!

[2] Comentário enviado por rrodrigues345 em 08/10/2015 - 18:18h


Muito bom! E bem explicado!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts