Como vários respondentes disseram, não é tanto que um determinado formato de pacote seja claramente superior. Tecnicamente, eles podem ser mais ou menos comparáveis. Na minha perspectiva, muitas das diferenças e por que as pessoas preferem uma à outra têm a ver com:
- A filosofia do design original da embalagem e o público-alvo
- O tamanho da comunidade e, por extensão, a qualidade e a riqueza dos repositórios
Filosofia:
No mundo Ubuntu / Debian / Mint / ..., os usuários esperam que o pacote instalado "apenas funcione" depois de instalado. Isso significa que, durante a instalação, espera-se que os pacotes cuidem de tudo o que for necessário para que eles funcionem bem, incluindo, mas não se limitando a:
- configurando tarefas cron necessárias ou opcionais
- configurando alternativas / aliases
- configurando scripts de inicialização / desligamento
- incluindo todos os arquivos de configuração necessários com padrões que fazem sentido
- mantendo versões antigas de bibliotecas e adicionando os links simbólicos com versão correta às bibliotecas (.so) para compatibilidade com versões anteriores
- suporte limpo para binários com vários arcos (32 e 64 bits) na mesma máquina e assim por diante.
No mundo do rpm - é certo que essa era a situação há vários anos e pode ter melhorado desde então - eu tive que executar etapas adicionais (por exemplo, chkconfig, habilitando tarefas cron) para realmente fazer os pacotes realmente funcionarem. Isso pode ser bom para administradores de sistemas ou pessoas que conhecem o Unix, mas faz com que as experiências para iniciantes sofram. Observe que não é que o próprio formato de pacote RPM impeça que isso aconteça, é apenas que muitos pacotes não são "totalmente concluídos" da perspectiva de um novato.
Tamanho, participação e riqueza da comunidade dos repositórios:
Como a comunidade ubuntu / debian / mint / ... é maior, mais pessoas estão envolvidas no empacotamento e teste de software. Eu achei a riqueza e a qualidade dos repositórios superiores. No ubuntu, raramente, se é que preciso, fazer o download do código-fonte e construir a partir dele. Quando eu mudei do Red Hat para o Ubuntu em casa, o repositório RHEL típico tinha ~ 3000 pacotes, enquanto, ao mesmo tempo, o ubuntu + universe + multiverse, todos disponíveis diretamente de qualquer espelho canônico, tinha ~ 30.000 pacotes (aproximadamente 10x). A maioria dos pacotes que eu estava procurando no formato RPM não era facilmente acessível por meio de pesquisa simples e clique no gerenciador de pacotes. Eles precisavam mudar para repositórios alternativos, pesquisar no site do serviço rpmfind etc. Isso, na maioria dos casos, em vez de resolver o problema, interrompeu minha instalação ao não restringir quais dependências podem ou não ser atualizadas corretamente. Eu bati no fenômeno do "inferno da dependência", como descrito acima por Shawn J. Goff.
Em contraste no Ubuntu / Debian, descobri que quase nunca preciso construir a partir do código-fonte. Também por causa de:
- O ciclo de lançamento rápido do Ubuntu (6 meses)
- A existência de CAE totalmente compatíveis que funcionam imediatamente
- Os repositórios de fonte única (todos hospedados pela Canonical) não precisam procurar repositórios alternativos / complementares
- Experiência perfeita do usuário, do clique para executar
Eu nunca tive que me comprometer com versões mais antigas de pacotes que me importavam, mesmo quando elas não eram mantidas por desenvolvedores oficiais (Canonical). Eu nunca tive que sair do meu gerenciador de pacotes GUI amigável favorito para realizar uma pesquisa conveniente por palavra-chave, para encontrar e instalar qualquer pacote que eu desejasse. Além disso, algumas vezes eu instalei pacotes debian (não Canonical) no Ubuntu e eles funcionaram muito bem, apesar dessa compatibilidade não ser oficialmente garantida.
Note que isso não pretende iniciar uma guerra de chamas, é apenas compartilhar minha experiência de ter usado os dois mundos em paralelo por vários anos (trabalho versus casa).
debian
diretório existe no diretório para o qual a fonte upstream foi extraída, e o Debian valoriza muito o conceito de um tarball original da fonte upstream. Quando um pacote fonte é construído, existem três arquivos (dois para pacotes nativos) que juntos são chamados de pacote fonte: o tarball upstream (preferencialmente intocado, a política Debian exige que alguns projetos sejam reembalados), um tarball do dir debian para o novo formato 3.0 (um diff para o antigo formato 1.0) e um .dsc.