Capitolo 4. Problemi di compatibilità

Indice

4.1. Su quali architetture o sistemi hardware funziona Debian?
4.2. Quali kernel può eseguire Debian GNU/Linux?
4.3. Quanto è compatibile Debian con le altre distribuzioni Linux?
4.4. Quanto è compatibile Debian con altri sistemi Unix a livello di codice sorgente?
4.5. Si possono usare i pacchetti Debian (file ".deb") sul proprio sistema Linux RedHat/Slackware/...? Si possono usare i pacchetti RedHat (file ".rpm") sul proprio sistema Debian GNU/Linux?
4.6. Come installare un programma non-Debian?

4.1. Su quali architetture o sistemi hardware funziona Debian?

Debian GNU/Linux include il codice sorgente completo per tutti i programmi inclusi, così dovrebbe funzionare su tutti i sistemi che sono supportati dal kernel Linux; si veda la FAQ Linux per i dettagli.

L'attuale rilascio 12 di Debian GNU/Linux contiene una distribuzione binaria completa per le seguenti architetture:

  • amd64: questa copre i sistemi basati su CPU AMD a 64bit con estensione AMD64 e tutte le CPU Intel con estensione EM64T ed uno spazio utente a 64bit comune.

  • arm64: per i dispositivi basati su ARM a 64 bit più recenti.

  • armel: macchine ARM little-endian.

  • armhf: un'alternativa ad armel per macchine ARMv7 con hard-float.

  • i386: questa copre i sistemi basati su processori Intel e compatibili, inclusi gli Intel 386, 486, Pentium, Pentium Pro, Pentium II (sia Klamath che Celeron) e Pentium III e la maggior parte dei processori compatibili di AMD, Cyryx ed altri.

  • ia64: computer Intel IA-64 ("Itanium").

  • mips: sistemi MIPS big-endian della SGI, Indy e Indigo2; mipsel: macchine MIPS little-endian, DECstation Digital.

  • powerpc: questa copre alcune macchine PowerPC IBM/Motorola, incluse i modelli PowerMac di Apple Macintosh e le macchine CHRP e PReP a architettura aperta.

  • ppc64el: port per PowerPC a 64 bit little-endian, per diversi processori PowerPC/POWER recenti.

  • s390x: port a 64 bit per macchine IBM System z, ha sostituito s390.

Lo sviluppo di distribuzioni binarie di Debian per architetture hurd-i386 (per kernel GNU Hurd su PC i386 a 32-bit), mipsel64 (per MIPS a 64 bit in modalità little-endian), powerpcspe (port per l'hardware «Signal Processing Engine»), sparc64 (per processori SPARC a 64 SPARC processors), sh (per i processori Hitachi SuperH) e x32 (per CPU amd64/x86_64 che usano puntatori a 32 bit) è attualmente in corso.

Il supporto per l'architettura m68k è stato abbandonato nel rilascio Etch (Debian 4.0) perché non soddisfaceva i criteri definiti dai Debian Release Manager. Questa architettura copre macchine Amiga e ATARI con processore Motorola 680x0, dove x>=2, con MMU. Tuttavia il port è ancora attivo e disponibile per l'installazione anche se non fa parte del rilascio stable ufficiale e potrebbe essere riattivato nei rilasci futuri.

Il supporto per hppa (macchine PA-RISC della Hewlett-Packard) e alpha (sistemi Alpha Compaq/Digital) è stato abbandonato nel rilascio Squeeze (Debian 6.0) per ragioni simili. Anche arm è stato abbandonato in questo rilascio, dato che è stato reso obsoleto dall'architettura armel.

Il supporto per il port a 32 bit s390 (s390) è stato abbandonato e sostituito in Jessie (Debian 8) da s390x. In aggiunta è stato necessario rimuovere i port per IA-64 e Sparc da questo rilascio a causa di un insufficiente supporto da parte degli sviluppatori.

Per ulteriori informazioni sui port disponibili vedere le pagine dei port sul sito web.

Per ulteriori informazioni su come fare l'avvio, partizionare le proprie unità, abilitare i dispositivi PCMCIA (PC Card) e per questioni simili si seguano le istruzioni date nel manuale di installazione, che è disponibile dal sito WWW di Debian all'indirizzo https://www.debian.org/releases/stable/installmanual.

4.2. Quali kernel può eseguire Debian GNU/Linux?

Oltre a Linux, Debian fornisce una distribuzione binaria completa per i seguenti kernel per sistemi operativi:

  • FreeBSD: fornito attraverso i port kfreebsd-amd64 e kfreebsd-i386, per i PC a 64 bit e 32 bit rispettivamente. Questi port sono stati rilasciati per la prima volta in Debian 6.0 Squeeze come anteprima tecnologica. Tuttavia non facevano parte del rilascio Debian 8 Jessie.

In aggiunta a questi, sono in fase di lavorazione i seguenti adattamenti:

  • avr32, port per architettura RISC a 32 bit di Atmel,

  • hurd-i386, un port per PC a 32 bit. Questo port userà GNU Hurd, il nuovo sistema operativo che il gruppo GNU sta creando,

  • sh, port per processori Hitachi SuperH.

Ci sono stati tentativi di fare il port della distribuzione per il kernel NetBSD, fornendo netbsd-i386 (per PC a 32 bit) e netbsd-alpha (per macchine Alpha) ma questi port non sono mai stati rilasciati e sono al momento abbandonati.

Per ulteriori informazioni sui port disponibili vedere le pagine dei port sul sito web.

4.3. Quanto è compatibile Debian con le altre distribuzioni Linux?

Gli sviluppatori Debian comunicano con i produttori delle altre distribuzioni Linux nel tentativo di mantenere la compatibilità binaria tra le varie distribuzioni Linux. [1] La maggior parte dei prodotti commerciali per Linux funziona bene sotto Debian come sul sistema su cui è stata compilata.

Debian GNU/Linux aderisce al Linux Filesystem Hierarchy Standard (Standard per la gerarchia del file system Linux). Comunque, c'è spazio per interpretazioni diverse di alcune regole all'interno di questo standard, così ci possono essere piccole differenze tra un sistema Debian e altri sistemi Linux.

4.4. Quanto è compatibile Debian con altri sistemi Unix a livello di codice sorgente?

Per la maggior parte delle applicazioni il codice sorgente di Linux è compatibile con altri sistemi Unix. Supporta quasi tutto ciò che è disponibile per i sistemi Unix basati su System V ed i sistemi liberi e commerciali derivati da BSD. Tuttavia nel mondo Unix una tale affermazione non ha quasi nessun valore perché non c'è modo di provarla. Nell'area di sviluppo del software è richiesta una completa compatibilità piuttosto della compatibilità nella "maggioranza" dei casi. Così, anni fa, è sorta la necessità della presenza di standard e al giorno d'oggi POSIX.1 (IEEE Standard 1003.1-1990) è uno dei principali standard per la compatibilità del codice sorgente nei sistemi operativi simil-Unix.

Linux si propone di aderire al POSIX.1, ma gli standard POSIX hanno un costo elevato e la certificazione di POSIX.1 (e FIPS 151-2) è abbastanza onerosa; questo ha reso più difficile agli sviluppatori Linux il lavorare per una completa conformità a POSIX. Il costo della certificazione rende improbabile che Debian ottenga una certificazione di conformità ufficiale anche se passasse completamente la suite di validazione. (La suite di validazione è ora liberamente disponibile, così è previsto che più persone lavoreranno sui problemi relativi a POSIX.1.)

L'Unifix GmbH (Braunschweig, Germania) ha sviluppato un sistema Linux che è stato certificato come conforme a FIPS 151-2 (un sovrainsieme di POSIX.1). Questa tecnologia era disponibile nella distribuzione di Unifix chiamata Unifix Linux 2.0 e nel Linux-FT della Lasermoon.

4.5. Si possono usare i pacchetti Debian (file ".deb") sul proprio sistema Linux RedHat/Slackware/...? Si possono usare i pacchetti RedHat (file ".rpm") sul proprio sistema Debian GNU/Linux?

Differenti distribuzioni Linux usano differenti formati dei pacchetti e differenti programmi di gestione dei pacchetti.

Probabilmente si può:

È disponibile un programma per spacchettare un pacchetto Debian su un sistema Linux che è sato creato da una distribuzione "straniera", e generalmente funziona, nel senso che quei file verranno spacchettati. Anche l'inverso è probabilmente vero, cioè un programma che apre un pacchetto RedHat o Slackware su di un sistema basato su Debian GNU/Linux probabilmente riuscirà a spacchettare il pacchetto e a mettere la maggior parte dei file nelle directory di destinazione appropriate. Questo è in gran parte una conseguenza dell'esistenza dello standard Linux Filesystem Hierarchy (e della diffusa conformità ad esso). Il pacchetto Alien viene usato per fare conversioni tra i diversi formati dei pacchetti.

Probabilmente non si vuole:

La maggior parte dei gestori dei pacchetti scrive alcuni file di amministrazione quando viene usata per spacchettare un archivio. Questi file di amministrazione sono generalmente non standardizzati. Quindi, aprire un pacchetto Debian su un sistema "straniero" avrà effetti imprevedibili (certamente non utili) sul gestore dei pacchetti di quel sistema. Similmente, le utilità di un'altra distribuzione possono riuscire ad aprire i loro archivi su sistemi Debian, ma probabilmente causeranno dei guasti al sistema di gestione dei pacchetti Debian al momento di aggiornare o rimuovere alcuni pacchetti, o anche semplicemente nel riportare esattamente quali pacchetti sono presenti sul sistema.

Un metodo migliore:

Il Linux File System Standard (e quindi Debian GNU/Linux) richiede che le sottodirectory che si trovano sotto /usr/local/ siano interamente sottoposte alla discrezione dell'utente. Quindi, gli utenti possono spacchettare pacchetti "stranieri" dentro queste directory e poi possono gestire individualmente la loro configurazione, aggiornamento e rimozione.

4.6. Come installare un programma non-Debian?

I file sotto la directory /usr/local/ non sono sotto il controllo del sistema di gestione dei pacchetti Debian. Quindi è buona abitudine mettere il codice sorgente del proprio programma in /usr/local/src/. Per esempio, si potrebbero estrarre i file da un pacchetto che si chiama "pippo.tar" dentro la directory /usr/local/src/pippo. Dopo averli compilati, si mettano i file binari in /usr/local/bin/, le librerie in /usr/local/lib/ e i file di configurazione in /usr/local/etc/.

Se i propri programmi o i file devono essere realmente messi in altre directory, si potrebbe sempre memorizzarli in /usr/local/ e creare i collegamenti simbolici appropriati dalla posizione richiesta alla loro collocazione in /usr/local/; per esempio, si potrebbe creare il collegamento

ln -s /usr/local/bin/pippo /usr/bin/pippo

In ogni caso, se si ottiene un pacchetto il cui copyright permette la redistribuzione, si dovrebbe considerare di trasformarlo in un pacchetto Debian e caricarlo per il sistema Debian. Le linee guida per diventare uno sviluppatore sono incluse nel manuale Debian Policy (si veda Sezione 12.1, «Quale altra documentazione esiste su e per un sistema Debian?»).



[1] La Linux Standard Base è una specifica per permettere allo stesso pacchetto binario di essere utilizzato su più distribuzioni. Dopo il rilascio di Jessie (Debian 8), Debian ha abbandonato la ricerca della compatibilità con LSB. Vedere questo messaggio del 3 luglio 2015 di Didier Raboud e la discussione che ne è scaturita per informazioni a riguardo.