Comentários sobre o artigo de mirrors

Guilherme de S. Pastore gpastore em colband.com.br
Quinta Janeiro 20 13:44:49 BRST 2005


Olá, Jonas, pessoal da lista da DebianZine =)

[ Desculpem pela falta de ânimo pra escrever uma nova historinha a
  cada comentário, vou usar a mesma. ]

Eu gostaria de fazer alguns comentários sobre o artigo, que vão além
de revisão ortográfica e gramatical. Pra facilitar as coisas pra mim
e pra quem vai analisar os comentários, vai no corpo do e-mail mesmo.
A versão que eu vou usar pra comentar também já está com o patch de
correções gramaticais/ortográficas aplicado, btw.

--------

> Criando um Mirror Debian
> Jonas Goes <goes em goes.eti.br>
> 25 NOV 2004

Até aqui nenhum problema =D

> 1. Introdução
> 
> O sistema operacional Debian GNU/Linux possui mirrors espalhados em vários
> pontos da Internet, de onde você poderá obter e instalar uma grande variedade
> de software livre ao custo de sua conexão. Você também poderá obter
> facilmente o código-fonte do software que desejar. Há ainda mirrors
> especializados em armazenar pacotes de software com correções de falhas de
> segurança.

Não sei, mas tive a impressão de que este parágrafo puxou a
distribuição pela Internet muito pro lado de "free beer", hehe.

Os mirrors também são do repositório oficial do Projeto Debian,
não só do Debian GNU/Linux.

Quanto aos mirrors do repositório de segurança, não sei se vale a
pena mencioná-los, uma vez que eles *não* são oficiais. A única
fonte oficial de atualizações de segurança é security.debian.org,
que aponta pra uma máquina só.

> 2. O que é um repositório Debian?
> 
> Um repositório Debian é um conjunto de pacotes ".deb" para instalação
> de software e seus respectivos códigos-fonte.

Um repositório é composto de muito mais que .deb's. Mesmo que o "seus
respectivos códigos-fonte" se refira aos .orig.tar.gz, .diff.gz e
.dsc, ainda tem muito além disso num repositório funcional.

> Uma ótima referência em português para entender bem sobre repositórios Debian está em
> http://www.debian.org/doc/manuals/reference/ch-system.pt-br.html
> 
> --------------------------------
> 
> 3. O que é um mirror Debian?
> 
> Um mirror Debian é um espelho ou uma cópia idêntica, parcial ou integral, de um
> repositório oficial primário do Debian, estando disponível para utilização em
> uma rede.
> 
> Uma lista oficial de mirrors Debian que você poderá utilizar gratuitamente
> está em http://www.debian.org/mirror/list

Olha a puxada pro lado da free beer de novo =D

> --------------------------------
> 
> 4. Por que criar e utilizar um mirror Debian local?
> 
> A principal vantagem, em uma rede privada, é a grande variedade de software, a
> velocidade na aquisição dos pacotes e a economia no consumo de Internet.
> 
> Se você utiliza sistemas Debian em sua rede local, irá querer desfrutar das facilidades
> que o sistema de instalação de software APT (http://www.debian.org/doc/manuals/apt-howto/index.pt-br.html) 
> disponibiliza e da agilidade na aquisição dos pacotes através de um mirror local.

Eu, pessoalmente, preferiria não dizer ao leitor que ele vai,
necessariamente, querer. Você expõe os pontos positivos e negativos,
quem decide se quer ou não é ele =D

By the way, o APT não é exatamente um "sistema de instalação de
software", hehe =)

> 5. Do que vamos precisar?
> 
> Primeiramente instale os seguintes pacotes:
> 
>   # apt-get install debmirror
>   # apt-get install rsync
>   # apt-get install apache2

1) *MORTE AO APT-GET! USEM APTITUDE!*
2) Não acho uma idéia legal você simplesmente mandar o usuário
   sair instalando pacotes sem saber pra que, sem saber o que
   fazem, sem ter escolha. Ele poderia querer usar ftp em vez
   de rsync, apache 1.3 em vez do 2, por exemplo.

> Um link mínimo com a Internet de 256Kb/s será necessário.

De onde você tirou esse número? Eu já fiz um mirror de partes
específicas do archive (15gb, que seriam suficientes, por
exemplo, pra maioria das empresas) com uma ADSL de 128kbps.

1) Acho que não existe número mínimo. Se o cara quer demorar
   um mês pra montar seu mirror, problema é dele. Você
   deveria apenas chamar a atenção pro tamanho gigantesco do
   repositório oficial.

2) Você quis dizer 256Kb/s ou 256kbps (kbits per second)?
   256Kb/s são 2mbps! =)

> --------------------------------
>
> 6. Criando o mirror
> 
> Primeiramente execute os seguintes comandos:
> 
>  # adduser mirror

Ele não necessariamente quer um usuário novo pra isso.

>  # su mirror

Depois do su ele não é mais root =)

>  # cd
>  # mkdir debian
>  # mkdir debian-non-US

Resumindo, não acho que você deveria sair cuspindo um monte de
comandinhos bonitinhos e mandando o usuário digitar cegamente.
Diga as possibilidades, diga o que cada um faz, diga se ele tem
opção.

> Agora será necessário criar dois arquivos scripts para automatizar o processo:

Mesma coisa. Ele pode querer fazer na mão =D

> O script /usr/local/sbin/mirror contém:
>
>  #!/bin/bash
>  su mirror -c "debmirror --method=rsync --host=ftp.br.debian.org --root=:debian --progress --nosource \
>  --dist=stable,testing,unstable --section=main,contrib,non-free --arch=i386 --getcontents \
>  --postcleanup /home/mirror/debian/"

Por que "su mirror"? Ele não pode querer rodar os scripts já como
usuário mirror? Quem disse que ele quer rsync? Por que
ftp.br.debian.org? root = :debian? Quem disse que ele não quer
os sources? Por que ele quer stable, testing e unstable? Por
que você acha que ele quer contrib e non-free? Por que só i386?
Ele não pode ter um sparc? ...

>
> O script /usr/local/sbin/mirror-non-US contém:
> 
>  #!/bin/bash
>  su mirror -c "debmirror --method=rsync --host=ftp.br.debian.org --root=:debian-non-US --progress --nosource \
>  --dist=stable/non-US,testing/non-US,unstable/non-US --section=main,contrib,non-free \
>  --arch=i386 --getcontents --postcleanup /home/mirror/debian-non-US/"

Os comentários de cima tão valendo pra este também =)

O usuário mirror tem permissão pra gravar em /usr/local?

> Dê as permissões corretas para ambos os scripts:
>
>  # chmod 700 /usr/local/sbin/mirror
>  # chmod 700 /usr/local/sbin/mirror-non-US
>

O usuário sabe o que 700 significa?

> --------------------------------
>
> 7. Testando o mirror
>
> Agora execute os scripts acima para ver se eles funcionam corretamente. Se
> ocorrerem problemas, verifique se o seu link com a Internet está ok.

Não me parece razoável chamar o usuário de burro =D

> Faça um ping em ftp.br.debian.org.

ftp.br.debian.org não responde a ping

> Verifique se os pacotes debmirror e rsync
> estão instalados.

Se você mandou o usuário instalar no começo do artigo, deve estar, né?
Usuários não são perfeitos, mas subestimá-los tanto assim é exagero.

> --------------------------------
>
> 8. Disponibilizando o mirror na rede para utilizar com APT
>
> Agora vamos disponibilizar os pacotes na rede para serem copiados e, no próximo item, irei
> explicar como configurar o APT para instalar software e código-fonte a partir desde
> mirror.

Como ele vai "instalar código fonte" se na chamada do debmirror você
mandou ele não baixar os sources?

> Via HTTP:
> 
> No apache2, crie o arquivo /etc/apache2/sites-available/mirror-debian com o seguinte conteúdo:
> 
>  Alias /debian "/home/mirror/debian/"
>  <Directory /home/mirror/debian/>
>      Options Indexes FollowSymLinks MultiViews
>      AllowOverride None
>      Order allow,deny
>      Allow from all
>  </Directory>
>
> Agora crie o seguinte link simbólico:
>
>  ln -s /etc/apache2/sites-available/mirror-debian /etc/apache2/sites-enabled/mirror-debian
>
>Também crie o arquivo /etc/apache2/sites-available/mirror-debian-non-US com o seguite conteúdo:
>
>  Alias /debian-non-US "/home/mirror/debian-non-US/"
>  <Directory /home/mirror/debian-non-US/>
>      Options Indexes FollowSymLinks MultiViews
>      AllowOverride None
>      Order allow,deny
>      Allow from all
>  </Directory>                                
>
> Agora crie o seguinte link simbólico:
>
>  ln -s /etc/apache2/sites-available/mirror-debian-non-US
>  /etc/apache2/sites-enabled/mirror-debian-non-US

Não era bom explicar o que ele tá fazendo com essa montanha de coisa?

> Torne as configurações ativas no apache2:
> 
>  # /etc/init.d/apache2 reload
> 
> Via Local:
> 
> Se o mirror encontra-se no mesmo computador onde você deseja utilizá-lo, basta configurar
> o APT apenas. troque a opção http://example.com/debian por file://home/mirror/debian.

Eu acho que isso fica melhor localizado na seção de configuração do
APT, não acha(m)?

> --------------------------------
> 
> 9. Configurando o APT
>
> Assim que seu mirror estiver completo, basta adicionar as linhas
> necessárias no arquivo /etc/apt/sources.list de todas as máquinas de sua rede que
> passarão a utilizá-lo:
>
> Exemplo:
>
>  ## LOCAL MIRROR
>  deb http://example.com/debian stable main contrib non-free
>  deb http://example.com/debian testing main contrib non-free
>  deb http://example.com/debian unstable main contrib non-free
>  
>  ## LOCAL MIRROR NON-US
>  deb http://example.com/debian-non-US stable/non-US main contrib non-free
>  deb http://example.com/debian-non-US testing/non-US main contrib non-free
>  deb http://example.com/debian-non-US unstable/non-US main contrib non-free
>
>
> Edite as linhas acima de acordo com as características do seu mirror.

Explicar o que cada coisa significa pra ele saber como editar seria
uma idéia razoável, IMHO.

> Feita a configuração, atualize a lista de pacotes que o APT terá disponível para
> instalação. Para isso, execute o comando abaixo em cada máquina:
>
>  # apt-get update

Morte ao apt-get! =)

> --------------------------------
> 
> 10. Algumas considerações finais
> 
> É importante que o ping para a máquina que contém o mirror esteja liberado. Caso
> contrátio, o comando apt-get update consideraria seu mirror muito lento e daria
> prioriade para outros mirrors.

O apt-get faz isso? Eu acho que não. Pra que as máquinas da rede
teriam outro mirror na sources.list se a intenção de um mirror
local é, na maioria das vezes, evitar o acesso à Internet pra esse
tipo de tarefa? Não, o apt não usa nada que não esteja na
sources.list.

>  # echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

E se ele estiver ignorando pings de forma diferente?

>
> Você poderá adicionar os scripts que criou no cron para manter seu mirror sempre atualizado
> automaticamente. Então faça:
>
>  # ln -s /usr/local/sbin/mirror /etc/cron.daily/mirror
>  # ln -s /usr/local/sbin/mirror-non-US /etc/cron.daily/mirror-non-US


Bom, acho que, basicamente, as minhas críticas ao artigo giram em
torno de uma coisa só: sair cuspindo comando pro usuário digitar
sem saber o que tá fazendo, sem saber das opções que tem. =/

Boa sorte!

--
Guilherme de S. Pastore (fatalerror)
<gpastore em colband.com.br>


Mais detalhes sobre a lista de discussão Debian-zine