Sicuramente ti sarà capitato di installare programmi su Linux che se non settavi qualcosa del dpkg che necessita di “foreign architectures” cioè architetture straniere.
Cosa significa dunque “foreign architectures” (architetture straniere)?
Le “foreign architectures” (architetture straniere) di Linux si riferiscono ad architetture di processori diverse da quelle supportate nativamente dal sistema operativo su cui si sta lavorando. Ad esempio, se si sta lavorando su un sistema operativo basato su processori x86 o x86-64, le architetture straniere potrebbero includere ARM, PowerPC, MIPS, ecc.
Attivare queste architetture esterne su un sistema operativo consente di eseguire applicazioni e software specifici per quelle architetture. Ad esempio, se si vuole eseguire un’applicazione progettata per ARM su un sistema operativo basato su processori x86-64, è necessario abilitare l’architettura ARM come architettura straniera.
L’abilitazione delle architetture straniere non è sempre necessaria e dipende dalle esigenze dell’utente o dello sviluppatore; tuttavia, può essere utile per eseguire applicazioni legacy o per sviluppare e testare software su diverse piattaforme di hardware senza dover utilizzare una macchina virtuale o un dispositivo fisico separato.
La loro attivazione dipende dal comando dpkg, ma cos’è?
Il comando dpkg è uno strumento di gestione dei pacchetti su sistemi operativi basati su Debian come Ubuntu, Debian e derivate; esso consente di installare, rimuovere e gestire i pacchetti software sul sistema operativo.
In particolare, dpkg è il sistema di gestione dei pacchetti di basso livello su sistemi operativi basati su Debian, che fornisce un’interfaccia a riga di comando per installare, rimuovere e gestire i pacchetti del sistema operativo. Con il comando dpkg, gli utenti possono:
- Installare pacchetti software sul sistema operativo.
- Rimuovere pacchetti software dal sistema operativo.
- Verificare lo stato dei pacchetti installati.
- Configurare pacchetti software sul sistema operativo.
- Gestire le dipendenze dei pacchetti e risolvere eventuali problemi di conflitto.
Inoltre, dpkg può essere utilizzato in combinazione con altri strumenti di gestione dei pacchetti, come apt, che fornisce un’interfaccia a più alto livello per installare, rimuovere e gestire i pacchetti, semplificando l’utilizzo di dpkg.
Se dpkg non è già installato sul sistema operativo, sarà necessario installarlo prima di poterlo utilizzare per la gestione dei pacchetti. Per installare dpkg, è possibile utilizzare il gestore dei pacchetti predefinito del sistema operativo, ad esempio apt su Debian o Ubuntu, oppure yum su Fedora o CentOS.
Ad esempio, per installare dpkg su Ubuntu o Debian, è possibile utilizzare il seguente comando da terminale:
sudo apt-get install dpkg
E successivamente premere “s” per sì (o Y se hai impostato il sistema operativo in lingua inglese).
Dopo l’installazione di dpkg, sarà possibile utilizzarlo per gestire i pacchetti sul sistema operativo.
A cosa può servire attivare le architetture straniere su Linux?
L’attivazione di architetture straniere su un sistema operativo può servire per diversi scopi, ad esempio:
- Eseguire applicazioni a 32 bit su un sistema operativo a 64 bit: molti programmi sono ancora disponibili solo in versione a 32 bit. L’attivazione dell’architettura i386 su un sistema a 64 bit consente di eseguire questi programmi senza dover installare un’intera macchina virtuale (vale anche per gli altri tipi di architetture).
- Utilizzare pacchetti software disponibili solo per un’architettura specifica: alcuni programmi o librerie sono disponibili solo per alcune architetture, ad esempio ARM o PowerPC. Attivando queste architetture straniere si possono utilizzare questi pacchetti anche su sistemi che non li supportano nativamente.
- Sperimentare con diversi sistemi operativi o architetture: l’utilizzo di macchine virtuali o container consente di eseguire diversi sistemi operativi o architetture all’interno di un unico sistema. Ciò può essere utile per sperimentare con diversi ambienti di sviluppo o testare software su diverse piattaforme.
In sintesi, l’attivazione di architetture straniere consente di ampliare le possibilità di un sistema operativo e utilizzare una vasta gamma di pacchetti software disponibili per diverse architetture o sistemi operativi.
Facendo un esempio concreto se vuoi giocare per bene usando Steam su Linux è molto probabile dovrai installare l’architettura i386 (sudo dpkg –add-architecture i386), questo perché su Steam girano molti videogiochi che appartengono all’era 32-bit e avrai bisogno di questo “trucchetto” per la comptibilità.
Alcuni esempi di architetture straniere che si possono attivare su sistemi operativi Linux
Di seguito sono elencati alcuni comandi dpkg che possono essere utilizzati per attivare le architetture straniere su un sistema basato su Debian:
Abilitare l’architettura i386:
sudo dpkg –add-architecture i386
Abilitare l’architettura ARM64:
sudo dpkg –add-architecture arm64
Abilitare l’architettura ARM:
sudo dpkg –add-architecture armhf
Abilitare l’architettura PowerPC:
sudo dpkg –add-architecture powerpc
Dopo aver utilizzato questi comandi, è necessario aggiornare la cache dei pacchetti utilizzando il comando sudo apt update per rendere disponibili i pacchetti per l’architettura appena abilitata.
Ricorda che non tutte le architetture sono supportate da tutte le distribuzioni e versioni del sistema operativo; verifica sempre che la tua distribuzione supporti l’architettura che vuoi abilitare prima di utilizzare questi comandi, poiché alcune distribuzioni di Linux potrebbero ad esempio supportare i386 e non supportare ARM64 (vedi Ubuntu o ZorinOS per esempio), se non tramite qualche escamotage macchinoso.
Un piccolo resoconto di alcune architetture straniere
Le architetture menzionate nell’esempio di prima possono essere associate a diversi tipi di dispositivi, a seconda della loro implementazione e delle loro prestazioni, ma qui ne vedrai anche altre.
- Architettura arm64: Questa architettura è stata progettata per dispositivi mobile e incorporati come smartphone, tablet, dispositivi IoT e altre apparecchiature mobili. Questa architettura è basata sulla tecnologia ARM e offre un’efficienza energetica elevata, che la rende ideale per l’utilizzo in dispositivi mobili e incorporati.
- Architettura i386: Questa architettura è stata utilizzata principalmente nei PC a 32 bit e nei sistemi operativi di vecchia generazione. Questa architettura è stata introdotta da Intel nel 1985 ed è stata utilizzata in molti PC negli anni 90 e nei primi anni 2000. Tuttavia, ora è diventata obsoleta poiché è stata sostituita dall’architettura x86-64.
- Architettura ppc64el: Questa architettura è basata su processori PowerPC ed è utilizzata in diversi sistemi embedded e server. Ad esempio, l’architettura ppc64el è utilizzata nei server IBM Power Systems e nei cluster HPC (High-Performance Computing).
- Architettura s390x: Questa architettura è utilizzata principalmente nei mainframe IBM System z e offre prestazioni elevate per le applicazioni aziendali di grandi dimensioni.
- Architettura powerpc: Questa architettura è basata sui processori PowerPC sviluppati da IBM e Motorola e viene utilizzata principalmente in server di fascia alta e in alcune console di gioco come la console per videogiochi Sony PlayStation 3. L’architettura powerpc è stata introdotta nel 1991 ed è stata utilizzata in vari dispositivi embedded e server.
- Architettura armhf: Questa architettura è basata sulla tecnologia ARM ed è stata progettata per dispositivi embedded come Raspberry Pi e altri microcomputer a basso consumo energetico. L’architettura armhf è una versione ottimizzata dell’architettura ARMv7 che utilizza il set di istruzioni ARM hard float (armhf) per migliorare le prestazioni dei calcoli floating point.
In generale, le architetture sono state progettate per supportare diversi tipi di dispositivi e applicazioni, in base alle loro prestazioni e ai requisiti di sistema; da precisare che le prestazioni e l’affidabilità del dispositivo dipendono anche dalla qualità dei componenti hardware e dal design complessivo del sistema.
Le architetture straniere si possono anche rimuovere?
Per rimuovere un’architettura straniera da un sistema Debian o Ubuntu, è possibile utilizzare il comando dpkg –remove-architecture. Ad esempio, per rimuovere l’architettura i386, si può eseguire il seguente comando:
sudo dpkg –remove-architecture i386
Una volta eseguito il comando, il sistema rimuoverà tutti i pacchetti relativi a quell’architettura e l’architettura stessa verrà eliminata dal sistema, ricordarsi sempre di fare sudo apt update successivamente, esattamente come quando ne metti una.
È importante notare che la rimozione di un’architettura straniera può comportare la rimozione di alcuni pacchetti essenziali per il funzionamento del sistema. Pertanto, prima di rimuovere un’architettura, è importante verificare attentamente quali pacchetti verranno rimossi e assicurarsi che non siano necessari per il funzionamento del sistema o delle applicazioni installate.
Ma come faccio a sapere quali architetture straniere ho installate?
Per sapere quali architetture straniere sono attualmente installate nel sistema Debian o Ubuntu, è possibile utilizzare il comando dpkg –print-foreign-architectures. Eseguendo questo comando dalla linea di comando, verrà visualizzata la lista delle architetture straniere attualmente abilitate.
Dopo aver digitato tale comando l’output potrebbe essere qualcosa del genere:
i386
armhf
In questo esempio, l’output indica che le architetture straniere i386 e armhf sono attualmente abilitate nel sistema.
In conclusione
Come vedi esistono miriadi di possibilità con le architetture straniere presenti su Linux, che ti permetteranno di avere accesso ad una serie di applicazioni in alcuni casi senza dover installare macchine virtuali o emulatori.
Non è una cosa da poco: ciò significa che avrai le applicazioni che ti servono in locale, esattamente dove le vedi, non sul tuo PC “per modo di dire” come quando fai partire DosBox o programmi analoghi.
Purtroppo i sistemi operativi Linux non sono popolari come Windows ed è un peccato: questo è solo uno degli innumerevoli esempi della loro enorme versatilità.
Una lista completa delle architetture disponibili con i pacchetti dpkg la puoi trovare qui.