Página seguinte Página anterior Índice

4. Questões sobre compatibilidade

4.1 Quão compatível é a Debian com outras distribuições do Linux?

Desenvolvedores Debian se comunicam com outros criadores de distribuições do Linux para manter compatibilidade binária entre as distribuições. A maior parte dos produtos comerciais para Linux rodam tão bem na Debian quanto no sistema sobre o qual foram construídos.

A Debian GNU/Linux adere à Estrutura de Sistema de Arquivos do Linux (Linux File System Structure). Apesar disso, existe espaço para interpretações em algumas das regras dentro desse padrão, então podem existir diferenças entre um sistema Debian e outros sistemas Linux. A mais nova versão desse padrão FSSTND é chamada de FHS e planejamos mudar para ela em pouco tempo.

4.2 Quão compatível, a nível de código fonte, a Debian é em relação a outros sistemas Unix?

Para a maior parte dos aplicativos, o código fonte do Linux é compatível com outros sistemas Unix. Ele tem suporte a praticamente tudo o que está disponível em sistemas Unix System V e derivados livres e comerciais do BSD. No mundo Unix, porém, essa afirmação praticamente não tem valor, pois não há como prová-la. Na área de desenvolvimento de software é necessário haver compatibilidade completa ao invés de compatibilidade na "maioria" dos casos. Por causa disso, anos atrás surgiu a necessidade de padrões, e hoje em dia o POSIX.1 (IEEE Standard 1003.1-1990) é um dos principais padrões para compatibilidade a nível de código fonte entre sistemas operacionais estilo Unix.

O Linux pretende aderir ao POSIX.1, mas os padrões POSIX custam muito dinheiro e o certificado POSIX.1 (e FIPS 151-2) é realmente caro; isso dificulta o trabalho de conformidade completa com o POSIX por parte dos desenvolvedores do Linux. Os custos da certificação fazem com que seja improvável que a Debian receba um certificado de conformidade oficial mesmo que ela passe completamente pelo conjunto de validação. (O conjunto de validação agora está disponível livremente, portanto espera-se que mais pessoas trabalhem em questões acerca do POSIX.1.)

A Unifix GmbH (Braunschweig, Alemanha) desenvolveu um sistema Linux que recebeu certificação de conformidade ao FIPS 151-2 (um superconjunto do POSIX.1). Essa tecnologia esteve disponível na distribuição da própria Unifix, chamada Unifix Linux 2.0, e no Linux-FT da Lasermoon.

4.3 Posso usar pacotes Debian (arquivos ".deb") em meu sistema RedHat/Slackware/...? Posso usar pacotes RedHat (arquivos ".rpm") em meu sistema Debian GNU/Linux?

Diferentes distribuições do Linux usam diferentes formatos de pacotes e programas de gerenciamento de pacotes.

Você provavelmente pode:

Existe um programa para descompactar um pacote Debian num computador com outra distribuição do Linux, e normalmente irá funcionar no sentido de que os arquivos vão ser descompactados. A recíproca provavelmente também é verdadeira, ou seja, um programa para descompactar um pacote do RedHat ou Slackware num computador baseado no Debian Linux provavelmente conseguirá descompactar o pacote e colocar a maior parte dos arquivos nos lugares corretos. Isso é conseqüência da existência do (e grande conformidade com o) Padrão de Hierarquia para o Sistema de Arquivos do Linux (Linux File System Standard).

Você provavelmente não quer:

A maior parte dos gerenciadores de pacotes escrevem arquivos de administração quando são usados para descompactar um arquivo. Esses arquivos de administração geralmente não são padronizados. Portanto, o efeito de descompactar um pacote Debian em um computador "estranho"

irá gerar efeitos imprevisíveis (certamente improdutivos) no gerenciador de pacotes daquele sistema. Do mesmo modo, utilitários de outras distribuições podem conseguir descompactar seus arquivos em sistemas Debian, mas provavelmente farão o sistema de gerenciamento de pacotes da Debian falhar quando chegar a hora de atualizar ou remover alguns pacotes, ou simplesmente listar exatamente quais pacotes estão presentes em um sistema.

Uma maneira melhor:

O Padrão de Hierarquia para o Sistema de Arquivos do Linux (e portanto Debian GNU/Linux) exige que subdiretórios sob /usr/local/ fiquem completamente sob a responsabilidade do usuário. Portanto, os usuários podem descompactar pacotes "estranhos" dentro desse diretório, e gerenciar sua própria configuração, atualização e remoção individualmente.

4.4 A Debian pode rodar meus antiqüíssimos programas "a.out"?

Você ainda tem um programa assim?

Para executar um programa cujo binário esteja em formato a.out (isto é, QMAGIC ou ZMAGIC),

Se você possui um aplicativo comercial em a.out, este seria um bom momento para pedir que enviem uma atualização em ELF.

4.5 A Debian consegue rodar meus antigos programas em libc5?

Sim. Basta instalar os pacotes necessários da seção oldlibs, que estão incluídos na Debian 2.0 para manter a compatibilidade com aplicativos antigos.

4.6 A Debian pode ser usada para compilar programas em libc5?

Sim. Na Debian, seu sistema pode ser completamente atualizado para libc6 (incluindo os pacotes de desenvolvimento), e ainda assim é possível desenvolver programas para libc5. Basta instalar os pacotes -altdev necessários. O conjunto mínimo de pacotes de que você vai precisar é: altgcc na seção devel e libc5-altdev na seção oldlibs.

Então você terá que colocar as ferramentas libc5 antes das ferramentas normais em seu path. Ou seja, execute o comando export PATH=/usr/i486-linuxlibc1/bin:$PATH (Isso não é essencial, apenas vantajoso.) Se você irá fazer isso apenas uma vez, pode executar: PATH=/usr/i486-linuxlibc1/bin:$PATH make [target].

4.7 Como devo instalar um pacote não-Debian?

Arquivos sob o diretório /usr/local/ não estão sob controle do sistema de gerenciamentos de pacotes Debian. Assim sendo, é boa prática colocar o código fonte de seu programa em /usr/local/src/. Por exemplo, você pode extrair os arquivos de um pacote chamado "foo.tar" dentro do diretório /usr/local/src/foo. Depois de compilá-lo, coloque os binários em /usr/local/bin/, as bibliotecas em /usr/local/lib, e os arquivos de configuração em /usr/local/etc.

Se seus programas e/ou arquivos realmente precisam ser colocados em algum outro diretório, você ainda pode mantê-los em /usr/local/ e fazer as ligações simbólicas apropriadas a partir do lugar necessário para sua localização em /usr/local/. Por exemplo, você pode fazer a ligação

ln -s /usr/local/bin/foo /usr/bin/foo

De qualquer modo, se você obtiver um pacote cujo copyright permita redistribuição, você deve pensar em fazer um pacote Debian a partir dele, e enviá-lo para o sistema Debian. Guias sobre como se tornar um desenvolvedor de pacotes estão incluídos no manual de políticas da Debian.

4.8 Por que não consigo compilar programas que exigem a libtermcap?

A Debian usa o banco de dados terminfo e a biblioteca de rotas de interfaces de terminal ncurses, ao invés do banco de dados termcap e a biblioteca termcap. Os usuários que compilam programas que necessitam de algum conhecimento da interface de terminal devem substituir referências a libtermcap por referências a libncurses.

Para dar suporte a binários que já foram ligados à biblioteca termcap e para os quais você não possui o código fonte, a Debian oferece um pacote chamado termcap-compat. Ele possui os arquivos libtermcap.so.2 e /etc/termcap. Instale esse pacote caso o programa falhe com a mensagem de erro "can't load library 'libtermcap.so.2'" ("impossível carregar biblioteca 'libtermcap.so.2'"), ou caso ele reclame da falta do arquivo /etc/termcap.

4.9 Por que não consigo instalar o AccelX?

O AccelX usa a biblioteca termcap para a instalação. Leia sobre termcap acima.

4.10 Por que aparece "Can't find libX11.so.6" ("Impossível encontrar libX11.so.6") quando tento rodar foo?

Essa mensagem de erro pode significar que o programa está ligado à versão libc5 das bibliotecas do X11. Nesse caso você precisa instalar o pacote xlib6, da seção oldlibs.

4.11 Posso instalar e compilar uma kernel sem modificações específicas da Debian?

Sim. Mas você deve entender a política da Debian em relação a headers (cabeçalhos).

As bibliotecas C da Debian são construídas com as versões estáveis mais recentes dos headers do gcc.

Por exemplo, a versão Debian-1.2 usava a versão 5.4.13 dos headers. Essa prática contrasta com os pacotes do código fonte da kernel do Linux distribuídos em todos os sites de FTP do Linux, que usam versões ainda mais recentes dos headers. Os headers distribuídos com o código fonte da kernel estão em /usr/include/linux/include/.

Se você precisa compilar um programa com headers da kernel mais novos que os oferecidos pelo pacote libc6-dev, você deve adicionar -I/usr/src/linux/include/ à sua linha de comando quando quiser compilar. Isto surgiu em um ponto, por exemplo, com o pacote do automounter daemon (amd). Quando novas versões da kernel mudavam algumas seções internas que lidam com NFS, o amd precisava saber sobre elas. Isso obrigou a inclusão da última versão dos cabeçalhos da kernel.


Página seguinte Página anterior Índice