Páginas

segunda-feira, 26 de julho de 2021

29. Slackware: como baixar e criar uma ISO da versão current

Slackware é uma das distros mais clássicas e queridas do mundo Linux, embora não seja uma das mais fáceis. No entanto, é sempre uma boa recomendação para quem deseja aprender mais a fundo sobre o Linux. O Slack ocupa a 23ª posição no ranking de acessos do DistroWatch.com.

No site oficial a versão estável é a 14.2. Para baixar a imagem basta clicar no link <<Get Slack>> à esquerda da página principal. Você pode baixar através de torrent ou de um dos muitos mirrors. Nos mirros clique em <<Slackware ISO Images>> na esquerda.

O problema é que a versão 14.2 é de 2016! Nós queremos baixar a versão de desenvolvimento, atualizada diariamente. Essa versão é chamada de Sackware current. E ela é meio escondida no site, bem difícil achar.

Então eu vou lhes dar um link de um mirror oficial no Brasil! Siga os passos abaixo.

1. Baixando

Este é o mirror do Slackware current: http://slackware-brasil.com.br. Aí você seleciona a pasta da versão que você deseja. Tem pra 32 bits (slackware-current) e 64 bits (slackware64-current), entre outras versões mais antigas.

Se você clicar nele vai acabar se perguntando: como eu baixo tudo isso? Cadê a ISO??? A verdade é que não tem ISO, porque é uma versão de desenvolvimento, então você mesmo tem que criar a ISO. Parece trabalhoso, mas não é, o Linux permite automatizar todo esse processo.

No meu exemplo nós vamos criar um shell script para baixar o conteúdo da pasta da versão 64 bits e mantê-lo sempre atualizado.

Primeiro criamos uma pasta Slackware onde quisermos. Vou criar na minha HOME e depois vou entrar dentro dela:

$ mkdir ~/Slackware
$ cd ~/Slackware

OBS.: o "~" é atalho para a pasta home do seu usuário.

Agora vamos criar um arquivo de shell script, vamos chamar o arquivo de download-rsync. Não precisa colocar a extensão ".sh" no final. Pode deixar sem extensão mesmo.

$ echo '#!/bin/bash' > download-rsync

OBS.: aqui tem que usar as aspas simples, se usar as duplas não funciona.

É claro que dá pra fazer tudo isso no seu gerenciador de arquivos preferido. Basta criar a pasta, o arquivo e colocar a shebang #!/bin/bash (sem aspas) na primeira linha.

Agora altere as permissões do arquivo para poder ser executado como um programa:

$ chmod +x download-rsync

Nós vamos usar o programa rsync para baixar tudo desse mirror, mas não apenas isso. O rsync tem a vantagem de comparar a pasta do seu computador com a do mirror, baixando os pacotes novos e modificados, e apagando o que foi deletado. Ou seja, ele registra as diferenças. E mantém sua pasta local atualizada em relação ao repositório oficial.

Adicione a linha:

$ echo 'rsync -aP --delete-before rsync://slackware-brasil.com.br/slackware/slackware64-current .' >> download-rsync

Esse comando adiciona o comando rsync e seus argumentos ('o conteúdo entre as aspas simples') ao final do arquivo download-rsync. Repare no ">>", da primeira vez usamos apenas ">". Se usassemos ">" novamente em vez de ">>", todo o conteúdo do arquivo seria apagado e teríamos apenas essa nova linha. Não queremos apagar a linha #!/bin/bash criada anteriormente!

Argumentos rsync:

  • -a = arquive mode, equivalente a digitar "-rlptgoD", isto é, ele copia diretórios recursivamente (subdiretórios), copia links, mantém as permissões dos arquivos, as datas e horas de criação e modificação, os grupos, o proprietário e arquivos de dispositivos.
  • -P = --partial e --progress, isto é, mantém arquivos transferidos parcialmente e mostra o progresso do download. Bom caso haja interrupção, e podemos acompanhar o download.
  • --delete-before é o argumento que permite ao rsync deletar da sua pasta local os arquivos que tenham sido deletados do repositório no mirror.

O link do mirror é óbvio, mas repare no PONTO "." colocado logo após o link (demos um espaço antes do ponto). O ponto indica ao comando que o conteúdo daquele mirror tem que ser baixado para a pasta onde está sendo executado o nosso script, que no caso é ~/Slackware. Porque é lá que vamos deixar ele.

Agora vamos adicionar só uma linha de aviso, pra sabermos que terminou de baixar os arquivos:

$ echo 'echo -e "\nEncerrado. Pressione qualquer tecla para sair..."' >> download-rsync

Só que temos que fazer uma "pausa" ou o terminal será encerrado rápido demais e nem conseguiremos ler e analisar o que foi baixado!

$ echo 'read' >> download-rsync

O read serve para armazenar respostas dadas pelo usuário a perguntas feitas num script. Para isso precisamos de uma variável. Por exemplo, para a pergunta: "Qual sua cor favorita?", poderíamos armazenar a resposta na variável cor: read cor. O script faz uma pausa, espera o usuário responder a pergunta, e quando ele der ENTER, a resposta fica salva na variável "cor". Só que no nosso exemplo não precisamos disso, o read só está lá pra fazer aquela pausa. Quando dermos ENTER o script fecha.

Seu script vai ficar assim:

#!/bin/bash
rsync -aP --delete-before rsync://slackware-brasil.com.br/slackware/slackware64-current .
echo -e "\nEncerrado. Pressione qualquer tecla para sair..."
read

O que vai acontecer quando você executar esse script é que ele vai criar a pasta slackware64-current dentro da pasta ~/Slackware, e baixar tudo pra lá. Estamos falando de quase 11 Gb. A vantagem de usar o rsync é que da segunda vez que você executar o script, ele vai deletar tudo que foi deletado do mirror e baixar os arquivos novos que foram inseridos e baixar os arquivos modificados! Ou seja, o que será baixado da segunda vez será MUITO MENOR. Só o que mudou mesmo.

No screenshot acima, todos os meus arquivos já estão atualizados, por isso nada é baixado.

2. Criando a ISO

Vamos criar um outro script para automatizar a criação da ISO, mas primeiro vamos instalar os pacotes necessários para isso. Pressupondo que você está usando o Debian:

$ sudo apt install xorriso live-build syslinux squashfs-tools isolinux

Criando o arquivo de script "makeiso" e alterando permissões:

$ echo '#!/bin/bash' > makeiso
$ chmod +x makeiso

O seu arquivo vai ter que se parecer com isso aqui, copie e cole:

#!/bin/bash
# DEBIAN dependencies:
# sudo aptitude install xorriso live-build syslinux squashfs-tools isolinux

clear
cd ./slackware64-current

DATE="$(find . -type f -printf '%TY-%Tm-%Td\n' 2>/dev/null | sort | tail -n 1)"
OUTDIR="/home/daniel/Sistemas/Slackware"
ISO="slackware64-current-install-dvd-$DATE.iso"

xorrisofs \
   -iso-level 3 \
   -full-iso9660-filenames \
   -R -J -A "Slackware Install" \
   -hide-rr-moved \
   -v -d -N \
   -eltorito-boot isolinux/isolinux.bin \
   -eltorito-catalog isolinux/boot.cat \
   -no-emul-boot -boot-load-size 4 -boot-info-table \
   -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
   -eltorito-alt-boot \
   -e isolinux/efiboot.img \
   -no-emul-boot -isohybrid-gpt-basdat \
   -m 'source' \
   -volid "SLACKWARE" \
   -output $OUTDIR/$ISO \
   .

chmod 777 $OUTDIR/$ISO

echo -e "\nEncerrado. Pressione qualquer tecla para sair..."
read

Esse script é um pouco mais complicado de explicar:

  • function find_last : esta função pega a data de modificação de todos os arquivos e ordena essa lista pela data mais recente.
  • variável DATE : executa a função anterior, e pega a primeira data, a data de modificação mais recente.
  • variável OUTDIR : diz onde a imagem ISO deve ser salva depois de criada.
  • variável ISO : diz o nome da ISO a ser criada, repare que ela insere a data de modificação armazenada na variável DATE, que é chamada com $DATE.
  • cd ./slackware64-current : o script entre na pasta onde está salvo os arquivos do Slack. Porque é lá que as variáveis serão executadas.
  • xorriso : é esse programa e seus inúmeros argumentos que vão compilar a ISO. Eu copiei esse código dos arquivos de instrução do próprio Slack. Está lá nem /slackware64-current/isolinux/README.TXT. Não vou explicar os detalhes, até mesmo porque eu não os entendo, eu apenas copiei e adaptei.
  • chmod 777 : só altera as permissões da imagem ISO criada para leitura, escrita e execução, para todos os usuários e grupos.
  • O encerramento você já conhece.

Nenhum comentário:

Postar um comentário