# Os repositórios FTP do Debian.

## O que são todos aqueles diretórios nos repositórios FTP do Debian?

Os programas que foram empacotados para o Debian GNU/Linux estão disponíveis em várias árvores de diretórios em cada espelho do Debian.

O diretório `dists` contém as "distribuições", e é o modo canônico de acessar as versões Debian atualmente disponíveis (e versões antigas).

## Quantas distribuições Debian existem no diretório `dists`?

Normalmente existem três distribuições, a distribuição "stable" (estável), a distribuição "testing" (teste) e a distribuição "unstable" (instável). Às vezes, também há a distribuição "frozen" (paralizada).

## O que são todos esses nomes, como "slink", "potato", etc.?

São apenas "codinomes". Quando uma distribuição Debian está em estágio de desenvolvimento, ela não possui um número de versão, e sim um codinome. O objetivo desses codinomes é facilitar o espelhamento das distribuições Debian (se um diretório de verdade como `unstable` de repente mudasse seu nome para `stable`, muita coisa teria que ser baixada novamente).

Atualmente, `stable` é uma ligação simbólica para `potato` (isto é, Debian GNU/Linux 9), `testing` é uma ligação simbólica para `woody` e `unstable` é uma ligação simbólica para `sid`, o que significa que `potato` é a atual distribuição estável e `woody` é a atual distribuição teste. `sid` é sempre a distribuição instável (veja sid).

## E sobre a "frozen" (paralizada)?

Quando a distribuição teste está madura o suficiente, ela é paralizada, significando que nenhum código novo é admitido, somente ajustes e consertos no código, se necessários. Além disso, uma nova árvore teste é criada no diretório `dists`, com um novo codinome. A distribuição paralisada passa por alguns meses de testes, com atualizações intermitentes e ciclos de testes. Mantemos um registro de bugs na distribuição "frozen" que pode impedir que um pacote seja lançado. Uma vez que o número de bugs desça até níveis aceitáveis, a distribuição "frozen" torna-se estável e é lançada, e a distribuição estável anterior torna-se obsoleta (e é movida para o arquivo).

## Que outros codinomes foram usados no passado?

Outros codinomes que já foram usados são: `buzz` para a versão 1.1, `rex` para a versão 1.2, `bo` para as versões 1.3.x, `hamm` para a versão 2.0, e `slink` para a versão 2.1.

## De onde vieram esses codinomes?

Até agora eles vieram de personagens do filme "Toy Story" da Pixar.

- buzz (Buzz Lightyear) era o astronauta;

- rex era o tiranossauro;

- bo (Bo Peep) era a menina que cuidava da ovelha;

- hamm era o porquinho-cofre;

- slink (Slinky Dog) era o cachorro de brinquedo;

- potato era, claro, o Mr. Potato (Sr. Batata);

- woody era o vaqueiro.

## E sobre a "sid"?

A sid ou unstable (instável) é o lugar onde a maioria dos pacotes é inicialmente inserida à distribuição. Ela nunca será lançada diretamente, porque pacotes que estão para serem lançados, terão primeiro que ser incluídos na testing, de maneira a ser lançada na stable. A sid contém pacotes para as arquiteturas lançadas e as que ainda não foram oficialmente lançadas.

O nome "sid" também veio do desenho animado "Toy Story": Sid era o garoto na casa ao lado, que destruía brinquedos :-)

### Notas históricas sobre a "sid".

Quando a sid ainda não existia, a organização do site de FTP tinha uma falha grave: havia uma presunção de quando uma arquitetura fosse criada na unstable, ela seria lançada quando aquela distribuição se tornasse a nova stable. Para muitas arquiteturas esse não era o caso, de forma que aqueles diretórios tinham que ser movidos na hora do lançamento. Isso não era prático, pois essa tarefa diminuía a largura de banda.

Os administradores trabalharam sobre esse problema por vários anos, colocando binários de versões ainda não lançadas em diretórios especiais chamados "sid". Para aquelas arquiteturas que não haviam sido lançadas ainda, a primeira vez que elas foram lançadas, isso se deu através de uma ligação da stable atual com a sid, e a partir desse momento, eles eram criados dentro da árvore unstable normalmente. Esse esquema era um tanto confuso para os usuários.

Com o advento dos conjuntos de pacote (veja pools), pacotes binários começaram a ser armazenados em um local canônico nesse conjunto, qualquer que fosse a distribuição, portanto, o lançamento de uma distribuição não causa mais o consumo de grande largura de banda nos espelhos (há, na verdade, um consumo gradual da largura de banda através do processo de desenvolvimento).

## O que o diretório "stable" contém?

- stable/main/: este diretório contém os pacotes que constituem formalmente a versão mais recente do sistema Debian GNU/Linux.

  Todos esses pacotes estão em conformidade com as Orientações sobre Software Livre do Debian, e são todos livremente utilizáveis e distribuíveis.

- stable/non-free/: este diretório contém pacotes cuja distribuição é restrita de tal modo que requer que os distribuidores considerem cuidadosamente as exigências de copyright especificadas.

  Por exemplo, alguns pacotes têm licenças que proíbem distribuição comercial. Outros podem ser redistribuídos, mas são na verdade shareware, e não freeware. As licenças de cada um desses pacotes devem ser estudadas e possivelmente negociada antes que os pacotes sejam incluídos em qualquer redistribuição (por exemplo, em um CD-ROM).

- stable/contrib/: este diretório contém pacotes que são DFSG-free e podem ser livremente distribuídos, mas que por alguma razão dependem de um pacote que não é livremente distribuível e, portanto, disponível somente na seção non-free.

## O que o diretório "testing" contém?

Pacotes são instalados no diretório "testing" depois que eles sofrem algum um certo grau de teste na unstable. Eles devem estar em sincronismo em todas as arquiteturas para que eles foram construídos e não podem possuir dependências que os tornem instáveis; eles também devem ter poucos bugs críticos em relação as versões atualmente na "testing". Desse modo, esperamos que a "testing" esteja sempre perto de ser uma candidata a lançamento.

## O que o diretório "unstable" contém?

O diretório "unstable" contém uma imagem do atual sistema em desenvolvimento. Usuários são bem vindos a usar e testar esses pacotes, mas são avisados sobre seu estado incompleto. A vantagem de se usar a distribuição "unstable" é que você está sempre atualizado com os mais recentes lançamentos da indústria GNU/Linux, mas se ele falhar: você terá que manter ambas as partes :-)

Há também os subdiretórios main, contrib e non-free na "unstable", separados pelos mesmos critérios da "stable".

## O que são todos aqueles diretórios dentro de `dists/stable/main`?

Dentro de cada árvore de diretório principal (`dists/stable/main`, `dists/stable/contrib`, `dists/stable/non-free`, and `dists/unstable/main/`, etc.), os pacotes binários residem em subdiretórios cujos nomes indicam a arquitetura do processador para a qual eles foram compilados:

- binary-all/, para pacotes que são independentes da arquitetura. Isso inclui, por exemplo, scripts Perl, ou documentação simples.

- binary-i386/, para pacotes que são executados em máquinas PC 80x86.

- binary-m68k/, para pacotes que são executados em máquinas baseadas no processador Motorola 680x0. Atualmente, isto é feita principalmente para computadores Atari e Amiga, e também para algumas placas baseadas no padrão industrial VME.

- binary-sparc/, para pacotes que são executados em Sun SPARCStations.

- binary-alpha/, para pacotes que são executados em máquinas DEC Alpha.

- binary-powerpc/, para pacotes que são executados em máquinas PowerPC.

- binary-arm/, para pacotes que são executados em máquinas ARM.

Veja arches para mais informações.

## Onde está o código-fonte?

O código fonte é incluído para tudo no sistema Debian. Além disso, os termos de licenças de muitos programas do sistema, requerem que o código-fonte seja distribuído com os programas, ou que uma oferta de obtenção do código-fonte acompanhe o programa.

Normalmente o código-fonte é distribuído através do diretório "source", que é paralelo a todos os diretórios binários específicos a cada arquitetura, ou atualmente, no diretório `pool` (veja pools). Para obter o código-fonte sem ter que estar familiarizado com a estrutura do repositório de FTP, tente um comando como `apt-get source MeuNomeDePacote`.

Códigos-fonte podem ou não estar disponíveis para pacotes pertencentes ao diretório "contrib" e "non-free", que não são partes formais do sistema Debian.

## O que existe no diretório `pool`?

Historicamente, pacotes foram mantidos nos subdiretórios correspondentes do diretório `dists`. Isso demonstrou ser a causa de vários problemas, como o grande consumo de largura de banda nos espelhos quando grandes mudanças eram feitas.

Pacotes agora são mantidos em grandes "repositórios", estruturados de acordo com o nome do pacote fonte. Para fazer isso administrável, o repositório é subdividido por seções ("main", "contrib" e "non-free") e pela primeira letra do nome do pacote fonte. Esses diretórios contém vários arquivos: os arquivos binários para cada arquitetura, e os pacotes fonte de onde os pacotes binários são gerados.

Você pode descobrir onde cada pacote é colocado executando um comando como `apt-cache showsrc NomeDoMeuPacote` e olhando na linha "Directory:". Por exemplo, os pacotes `apache` são armazenados em `pool/main/a/apache/`. Como existem tantos pacotes `lib*`, estes são tratados especialmente: por exemplo, pacotes `libpaper` são armazenados em `pool/main/libp/libpaper/`.

Os diretórios `dists` ainda são usados para os arquivos índices usados por programas como `apt`. Também, na hora de escrever, velhas distribuições não foram convertidas para o uso de repositórios, deste modo, você verá caminhos contendo distribuições como "potato" ou "woody" no campo de cabeçalho "Filename".

Normalmente, você não terá que se preocupar com isso, já que o `apt` e provavelmente o `dpkg-ftp` (veja howtocurrent) resolverá isso automaticamente. Se você deseja mais informações, veja o FAQ dos repositórios de pacotes Debian.

## Ok, e sobre os outros diretórios, que não estão dentro de `dists` ou `pool`?

Os seguintes diretórios adicionais existem:

/tools/:

- Utilitários DOS para a criação de discos de boot, particionamento de seu disco rígido, compressão/descompressão de arquivos, e inicializar o Linux.

/doc/:

- Documentação Debian, FAQ do Debian, instruções de como enviar relatórios de bugs.

/indices/:

- Vários índices, mantenedores, arquivos Packages-master, arquivos ignorados.

/project/:

- Muito material somente para desenvolvedores, como:

  project/experimental/:

- Este diretório contém pacotes e ferramentas que ainda estão sendo desenvolvidas, e ainda estão do estágio alpha de testes. Usuários não devem usar pacotes daqui, porque eles podem ser perigosos e prejudiciais até mesmo para pessoas experientes.

project/orphaned/:

- Pacotes que foram abandonados por seus desenvolvedores, e retirados da distribuição.