# Questões sobre compatibilidade.

## Em quais arquiteturas de hardware o Debian GNU/Linux roda?

O Debian GNU/Linux inclui os códigos-fonte completos para todos os programas inclusos, portanto, eles devem rodar em qualquer sistema que seja suportado pelo kernel Linux; veja a FAQ do Linux para detalhes.

A versão atual do Debian GNU/Linux , a 9, contém uma completa distribuição binária para as seguintes arquiteturas:

i386: essa cobre os PCs baseados em Intel e processadores compatíveis, incluindo Intel 386, 486, Pentium, Pentium Pro, Pentium II (tanto Klamath quanto Celeron), e Pentium III, e os processadores compatíveis da AMD, Cyrix e outros, compatíveis com estes.

m68k: essa cobre as máquinas Amiga e Atari que possuem processadores Motorola 680x0 (para x>=2); com MMU.

alpha: sistemas Alpha da Compaq/Digital.

sparc: essa cobre os sistemas SPARC da Sun e a maioria dos sistemas UltraSPARC.

powerpc: essa cobre algumas máquinas IBM/Motorola PowerPC, incluindo máquinas CHRP, PowerMac e PReP.

arm: máquinas ARM e StrongARM.

O desenvolvimento de distribuições binárias do Debian para as arquiteturas Sparc64 (UltraSPARC nativo) e MIPS estão em andamento.

Para informações adicionais na carga (boot), particionamento do drive, habilitando dispositivos PCMCIA (PC Card) e questões similares, por favor, siga as instruções contidas no Manual de Instalação, o qual está disponível no nosso site web em http://www.br.debian.org/releases/stable/i386/install.

## Quão compatível é o Debian com outras distribuições de Linux?

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

O 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.

## Quão compatível, em nível de código fonte, o 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 em 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.

## Posso usar pacotes Debian (arquivos ".deb") em meu sistema Red Hat/Slackware/...? Posso usar pacotes Red Hat (arquivos ".rpm") em meu sistema Debian GNU/Linux?

Diferentes distribuições 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 Red Hat 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.

## O 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),

- Assegure-se que seu kernel tenha suporte a `a.out`, seja diretamente (CONFIG_BINFMT_AOUT=y) ou como módulo (CONFIG_BINFMT_AOUT=m). (O pacote kernel-image do Debian possui o módulo `binfmt_aout`)

  Se seu kernel suporta binários `a.out` por módulo, garanta que o módulo `binfmt_aout` esteja carregado. Você pode fazer isso durante a inicialização incluindo a linha `binfmt_aout` no arquivo `/etc/modules`. Você pode fazer isso a partir da linha de comando executando o comando `insmod NOMEDIR/binfmt_aout.o` onde `NOMEDIR` é o nome do diretório onde os módulos que foram construídos para a versão da kernel sendo rodada estão armazenados. Em um sistema com a versão 2.0.36 da kernel, `NOMEDIR` provavelmente é `/lib/modules/2.2.17/fs/`.

- Instale o pacote `libc4`, encontrado em versões anteriores a versão 2.0 (porque naquele momento nós removemos o pacote). Você pode querer dar uma olhada num CD-ROM antigo do Debian (o Debian 1.3.1 ainda tinha esse pacote), ou veja ftp://archive.debian.org/debian-archive/ na internet.

- Se o programa que você quer executar for um cliente X em `a.out`, então instale o pacote `xcompat` (veja acima sobre a disponibilidade).

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

## O Debian consegue rodar meus antigos programas em libc5?

Sim. Basta instalar as bibliotecas `libc5` necessárias, da seção `oldlibs` (contendo pacotes antigos incluídos para compatibilidade com aplicativos antigos).

## O Debian pode ser usado para compilar programas em libc5?

Sim. Instale os pacotes `libc5-altdev` e `altgcc` (da seção `oldlibs`). Você pode achar os programas `gcc` e `g++` compilados em libc5 no diretório `/usr/i486-linuxlibc1/bin`. Coloque-os em sua variável $PATH para que o `make` e outros programas o executem primeiro.

Se você precisa compilar clientes X em libc5, instale os pacotes `xlib6` e `xlib6-altdev`.

Esteja ciente de que o ambiente libc5 não é mais totalmente suportado por nossos outros pacotes.

## 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 Debian Policy manual (veja debiandocs).

## 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`.

Você pode obter mensagens de erro semelhantes que se referem ao arquivo libXpm.so.4, nesse caso, você precisa instalar a versão libc5 da biblioteca XPM, do pacote `xpm4.7`, também na seção `oldlibs`.

## 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`.

## Por que não consigo instalar o AccelX?

O AccelX usa a biblioteca `termcap` para a instalação. Veja termcap acima.

## Por que minhas velhas aplicações XFree 2.1 Motif travam?

Você precisa instalar o pacote `motifnls`, que provê os arquivos de configuração do XFree-2.1 necessários para permitir aplicativos Motif compilados sobre o XFree-2.1 rodar sobre o XFree-3.1.

Sem esses arquivos, Alguns aplicativos Motif compilados em outras máquinas (como o Netscape) podem travar quando tentarem copiar ou colar de um ou para um campo texto, e podem também exibir outros problemas.