Suporte multiarch do Debian
Sobre
Multiarch é o termo usado para se referir à capacidade de um sistema instalar e executar aplicativos de diversos alvos binários diferentes em um mesmo sistema. Por exemplo, executar um aplicativo i386-linux-gnu em um sistema amd64-linux-gnu. Esse exemplo é o caso mais comum, mas muitas outras combinações de funcionamento são possíveis, tais como armel e armhf.
O Multiarch também simplifica a compilação cruzada (cross-building), onde bibliotecas de arquiteturas externas e cabeçalhos (headers) são necessárias em um sistema durante a compilação.
As propostas existentes permitem a co-instalação de bibliotecas e cabeçalhos para diferentes arquiteturas, mas não (ainda) de binários. Então, você pode ter tanto a versão i386 de um binário, quanto a versão amd64, mas não ambas (usando caminhos (paths) /bin convencionais). Todas as dependências estarão instaladas e disponíveis para o binário correspondente.
O multiarch é uma evolução poderosa e significativa, e afeta muitos processos e aspectos do sistema. Os efeitos práticos imediatos são livrar-se dos pacotes ia32-libs e permitir dependências de arquiteturas cruzadas para compilação cruzada.
Ele esteve funcionando primeiro no Ubuntu Natty e Debian Wheezy assim como usado para os bootstraps dos portes arm64 e mips64el.
Documentação
Estes documentos definem a implementação e devem conter tudo o que você precisa saber.
O caso para multiarch
Porque estamos nos pondo em todo esse sofrimento? A lib64 não é boa o suficiente para todos?
Especificação do gerenciamento de pacotes multiarch
Especificação principal, detalhando como os arquivos são estabelecidos, como as dependências são definidas, e como ele funciona em combinação com apt e dpkg.
Multiarch/Tuples. O esquema de tuplas usado para caminhos (paths) multiarch (ao invés de triplas GNU).
HOWTO multiarch para usuários
Informação destinada aos usuários de como usar multiarch: configuração, instalação, compilação cruzada.
Howto de conversão para multiarch
Um documento destinado ao mantenedor, detalhando como você pode converter o seu pacote de biblioteca ao longo de caminhos (paths) multiarch.
Bootstrapping O processo/ordenação/cronograma para obtenção do Debian "unstable" com multiarch.
Problemas para ferramentas O processo de conversão pode provocar problemas para ferramentas que usem apt e dpkg, e os mesmos podem estar documentados aqui.
Especificação da compilação cruzada Multiarch
Como o multiarch é usado para compilação cruzada, incluindo as extensões para suportar dependências de compilação cruzada (cross- build-dependencies).
Linkador e comportamento multilib
Detalhes explicativos sobre o linkador, gcc, libc e multilib. Não fala estritamente de parte da especificação multiarch, mas explica porque ela funciona, e esclarece a discussão sobre desenvolvimentos futuros.
Há muitos outros documentos agora substituídos. O links existentes abaixo são para quem se importa com o histórico do desenvolvimento.
Recursos
Canal de IRC: #multiarch em irc.debian.org (OFTC).
Não há uma lista de discussão específica. A discussão é feita na(s) lista/canais dos pacotes afetados e ferramentas, tais como dpkg, apt, gcc e listas de desenvolvimentos em geral (ex. debian-devel).
Estado atual
Entrando no Ubuntu Natty e Debian Wheezy.
O suporte do apt está no Debian Squeeze e Ubuntu Maverick.
Patches para gcc, eglibc, e uma série de bibliotecas básicas estão disponíveis no Ubuntu natty.ch
O suporte do dpkg está disponível a partir da versão 1.16.2.
Ferramenta Tuple: https://code.launchpad.net/~vorlon/+junk/multiarch-tools
Desenvolvimento futuro
A adição de suporte para binários co-instaláveis é uma provável extensão futura, mas não faz parte do escopo do trabalho de multiarch atual (apenas para isso leva 7 anos, não 15).
O multiarch torna várias coisas possíveis ou até mesmo fáceis: dependências de arquitetura cruzadas, cruzamento de compiladores no repositório, arquiteturas parciais. Uma reunião realizada na debconf11 discutiu essas questões. Multiarch/Debconf11MultiarchRelatedMinutes
Histórico
A gênese do Multiarch tem sido (muito!) longa, e a proposta tem mudado significativamente ao longo do caminho (path). Aqui estão algumas das datas quando as coisas aconteceram, com links para os documentos escritos no momento. Todos eles foram substituídos pelos documentos referidos acima.
- 22.02.2011
Discussão do multiarch no encontro Emdebian - O dpkg começa a reconhecer multiarch.
- 15.02.2011
- 09.2010
- O apt pronto para multiarch (v0.8) entrou no squeeze. O dpkg infelizmente não estava completamente pronto.
- 04.08.2010
Na Debconf10 nós debatemos uma proposta para novos nomes da ABI que são necessários para implementar multiarch corretamente.
- 30.06.2010
A discussão no sprint do Linaro/Ubuntu em Praga produziu este documento muito útil em como compiladores, caminhos (paths), linkadores e carregadores (loaders) se encaixam:
- 25.07.2009
A informação a seguir está desatualizada, é de interesse histórico. Veja MultiarchSpec para o trabalho atual de distro cruzada.
- 23.06.2008
- Patches multiarch para dpkg 1.14.20 atualizados e enviados para o rastreador de patches do Projeto Alioth Multiarch do Debian. Adicionam suporte a MA, exceto para rastreamento de dependência.
- 02.2006
- Encontro Multiarch na FOSDEM
- 07.2005
- Palestra Multiarch na Debconf 5
- 05.2004
- Sessão BOF Multiarch na Debconf 4
Recursos antigos
- Fóruns
- Documentos
Proposta de nomeação em tupla Uma proposta para implementar um novo esquema de tupla ao invés das triplas GNU para caminhos (paths) multiarch. O esquema atual de tuplas pode ser encontrado em Multiarch/Tuples.
Avaliação da estratégia de implementação da Multiarch pdf
Documento de concepção do dpkg2.0 pdf
- Palestras
debconf4 - Multiarch: why and how, a proposal - June 1, 2004 - Tollef Fog Heen, Matt Taggart - Porto Alegre, Brazil html | pdf
debconf5 - Multiarch a proposal and an implementation - July 10, 2005 Tollef Fog Heen html Video: mpeg | ogg
debconf5 - Freezing HEL Over (dpkg2.0)- July 15, 2005 Scott James Remnant mpeg | ogg
- Discussões via IRC
Uma thread interessante sobre -rpath
- O caminho a percorrer
?preparativos necessários para o dpkg do etch