Che cos'è un "AppImage"? Come lo installo?


231

Ho appena letto Meet Etcher, un elegante strumento di scrittura di immagini USB open source . Parla del download di un'AppImage.

Sì, Linux; i pacchetti Linux sono distribuiti come .appimage per le distribuzioni a 32 e 64 bit e dovrebbero funzionare senza problemi su tutte le principali distribuzioni Linux. Il team al momento non ha in programma di fornire un programma di installazione nativo .deb (o .rpm).

Cosa sono AppImages? In che cosa differiscono dagli snap?


10
Penso che il appimagetag possa diventare utile, quindi l'ho appena creato. Nel caso in cui non avremo bisogno o desideriamo mantenerlo, ci sarebbe sempre la possibilità di masterizzarlo di nuovo comunque.
Byte Commander

Risposte:


283

Informazioni di base

Per quanto riguarda l'installazione

Sto citando la pagina del progetto appImage qui:

AppImages può essere scaricato ed eseguito senza installazione o necessità di diritti di root.

Rendendolo eseguibile

È possibile rendere eseguibile l'appImage come segue:

chmod a+x exampleName.AppImage

Eseguendolo

È possibile eseguire un'appImage come segue:

./exampleName.AppImage

Informazioni aggiuntive

Informazioni su appImage

Puoi trovare alcune informazioni generali su appImage qui .

Sto citando la pagina del progetto appImage qui:

L'idea chiave del formato AppImage è un'app = un file. Ogni AppImage contiene un'app e tutti i file necessari per l'esecuzione dell'app. In altre parole, ogni AppImage non ha dipendenze oltre a ciò che è incluso nei sistemi operativi di base di destinazione.

Aggiunge Wikipedia

AppImage (e i predecessori klik e portablelinuxapps) non installano il software nel senso tradizionale (cioè, non inseriscono file ovunque nel sistema).

Utilizza un file per applicazione. Ognuno è autonomo: include tutte le librerie dalle quali l'applicazione dipende e che non fanno parte del sistema di base. A questo proposito, è simile alla "virtualizzazione delle applicazioni". È possibile utilizzare un file AppImage anche se non sono un superutente o utilizzano un CD live. I file di AppImage sono spesso più semplici della compilazione e dell'installazione di un'applicazione, poiché in realtà non è stata eseguita alcuna installazione. Il file AppImage è un'immagine compressa che viene temporaneamente montata per consentire l'accesso al programma, ma non è necessario estrarre il programma o modificare il sistema sottostante.

Il README.mddel AppImageKit progetto offre un sacco le informazioni supplementari come casi d'uso , lo spazio problema e obiettivi .

Casi d'uso

  • Come utente, voglio andare a una pagina di download a monte, scaricare un'applicazione dall'autore originale ed eseguirla sul mio sistema desktop Linux proprio come farei con un'applicazione Windows o Mac.

  • Come tester, voglio essere in grado di ottenere l'ultima versione all'avanguardia di un'applicazione da un server di generazione continua e testarla sul mio sistema, senza la necessità di compilare e senza doversi preoccupare di poter rovinare il mio sistema.

  • Come autore di applicazioni o ISV, voglio fornire pacchetti per sistemi desktop Linux proprio come faccio per Windows e OS X, senza la necessità di inserirlo "in" una distribuzione e senza dover costruire per milioni di distribuzioni diverse.

obiettivi

  1. Sii semplice.

    AppImage vuole essere un formato molto semplice che sia facile da capire, creare e gestire.

  2. Mantieni la compatibilità binaria.

    AppImage è un formato per la distribuzione di software binario. Il software impacchettato come AppImage è concepito per essere il più possibile binario compatibile con il maggior numero possibile di sistemi. La necessità di (ri) compilare il software dovrebbe essere notevolmente ridotta.

  3. Sii agnostico nella distribuzione.

    Un'AppImage deve essere eseguita su tutti i sistemi operativi di base (distribuzioni) per cui è stata creata (e versioni successive). Ad esempio, potresti scegliere come target Ubuntu 9.10, openSUSE 11.2 e Fedora 13 (e versioni successive) contemporaneamente, senza dover creare e mantenere pacchetti separati per ciascun sistema di destinazione.

  4. Rimuovere la necessità di installazione.

    AppImages contiene l'app in un formato che consente di eseguirla direttamente dall'archivio, senza dover prima installare. Questo è paragonabile a un Live CD. Prima di Live CD, i sistemi operativi dovevano essere installati prima di poter essere utilizzati.

  5. Mantieni le app sempre compresse.

    Poiché l'applicazione rimane sempre impacchettata, non viene mai decompressa sul disco rigido. Il computer decomprime l'applicazione al volo mentre vi accede. Poiché la decompressione è più veloce della lettura dal disco rigido sulla maggior parte dei sistemi, questo ha un vantaggio di velocità oltre a risparmiare spazio. Inoltre, il tempo necessario per l'installazione viene completamente rimosso.

  6. Consenti di posizionare le app ovunque.

    Le AppImages sono "trasferibili", permettendo così all'utente di memorizzarle ed eseguirle da qualsiasi posizione (inclusi CD-ROM, DVD, dischi rimovibili, chiavette USB).

  7. Rendi le applicazioni di sola lettura.

    Poiché AppImages è di sola lettura in base alla progettazione, l'utente può essere ragionevolmente sicuro che un'app non si modifichi durante il funzionamento.

  8. Non richiede la ricompilazione.

    AppImages deve essere possibile creare da binari già esistenti, senza la necessità di ricompilare. Ciò accelera notevolmente il processo di creazione di AppImage, poiché non è necessario coinvolgere alcun compilatore. Ciò consente inoltre a terze parti di creare pacchetti di applicazioni a sorgente chiuso come AppImages. (Tuttavia, può essere vantaggioso per gli sviluppatori di applicazioni upstream costruire dall'origine appositamente allo scopo di generare un AppImage.)

  9. Mantenere intatto il sistema operativo di base.

    Poiché AppImages è progettato per funzionare su sistemi semplici che non sono stati appositamente preparati da un amministratore, AppImages potrebbe non richiedere alcuna preparazione insolita del sistema operativo di base. Pertanto, non possono fare affidamento su speciali patch del kernel, moduli del kernel o applicazioni che non vengono fornite con le distribuzioni targetizzate per impostazione predefinita.

  10. Non richiede root.

    Poiché AppImages è progettato per essere eseguito da utenti finali, non devono richiedere un account amministrativo (root) da installare o utilizzare. Tuttavia, possono essere installati da un amministratore (ad esempio, in scenari multiutente), se desiderato.


4
In che modo un'appimage mantiene le impostazioni tra i lanci?
Dan Dascalescu,

1
Potresti approfondire un po 'la funzione di "sola lettura"? Posso salvare le modifiche all'interno di AppImage? O li perde da vicino come LiveCD?
vstepaniuk,

2
@DanDascalescu: la tua domanda merita di essere elevata a una domanda completa su AskUbuntu, non solo a un commento. Lo chiederai?
Kurt Pfeifle,

@vstepaniuk: la tua domanda è simile a quella di Dan. Uno di voi dovrebbe
porlo

1
@KurtPfeifle: dato che non volevi semplicemente andare avanti e chiedertelo tu stesso ... :)
Dan Dascalescu,

22

L'idea di base potrebbe apparire simile tra i due sistemi, ma ci sono alcune differenze di progettazione tra gli snap e Appimages.

Alcuni "grandi" che mi vengono in mente sono:

  1. Sicurezza , in termini di confinamento . Snap i pacchetti di eseguito in una sandbox e non sono autorizzati a fuggire da esso e raggiungere altre parti del sistema che dovrebbero non toccare. Questo è un livello di sicurezza più forte che corre parallelo al sistema di autorizzazioni. Ovviamente è un po 'frustrante affrontarlo all'inizio (e anche in seguito), ma se ci pensate in termini di amministrazione del sistema, questa è la cosa che un amministratore desidera per i propri utenti.

  2. Sicurezza. L'installazione di software prelevati da tutta la rete è sicura come andare in giro a leccare i pali per le strade. A volte non succede nulla, a volte si verificano alcuni problemi di salute molto grandi. I pacchetti di snap hanno i propri repository, controllati da Canonical, come i soliti repository Ubuntu standard. Puoi andare avanti e installare .debfile da tutto, ma questa sarà la tua scelta e non un problema di progettazione.

  3. Installazione. AppImages è pensato per essere l'equivalente dei "file eseguibili di Windows portatili". Tutte le librerie sono autonome e qualsiasi utente può semplicemente scaricare ed eseguire una di queste. D'altra parte, i snappacchetti sono pacchetti adeguati e devono essere installati (come root, o con sudo) tramite l'apposito gestore pacchetti ( snap install tic-tac-toegenera un errore: è necessario sudo!)

  4. Rimozione. Per rimuovere un pacchetto snap, è necessario utilizzare il gestore pacchetti snap remove ...con le autorizzazioni giuste per farlo. Le appimages, invece, sono semplicemente "lì". Quindi, qualsiasi utente non vuole quell'Appimage? Lui / lei rimuove solo il file ed è sparito.

Mentre suggerisco vivamente di essere cauti quando utilizzo Appimages, ne uso personalmente alcuni di loro.

Li trovo particolarmente utili sul mio sistema di lavoro, dove non ho rootaccesso (solo l'amministratore ha quello) ma ho bisogno dell'ultima versione di un particolare software che, fortunatamente, lo sviluppatore ha fornito in forma Appimage.

Ho un po 'paura che un certo codice maligno sia effettivamente contenuto in essi, quindi ho controllato il più possibile l'identità del publisher. Non sono sicuro al 100% che questo software sia benigno, ma ho fatto tutto il possibile.


2
Fondamentalmente, tutti stanno cercando di implementare il packaging delle app OSX su Linux, ma nulla arriva abbastanza.
OrangeDog,

2
Non ho idea di come funzioni :) Sicuramente snap e Appimages non funzionano bene con software con molte dipendenze condivise tra molti altri software. Stanno benissimo con software già autonomo o con poche dipendenze, ma il rischio è avere molte copie della stessa libreria che svolgono la stessa attività, come in Windows. Questo dovrebbe essere risolto in pacchetti di snap (un software che dipende dalla libreria di snap installa quella libreria con quella versione, quindi un altro software che necessita della stessa versione di libreria potrebbe usarlo, come con il solito sistema).
dadexix86,

Le app OSX (e iOS) funzionano come AppImage (basta scaricare un singolo file ed eseguirlo) ma con la sicurezza sandbox di snap.
OrangeDog,

OSX sta cercando di sbarazzarsi di questi e consentire solo le installazioni dal loro negozio.
Tenworf,

AppImage dovrebbe infatti contenere un'opzione per Sand Boxing. Speriamo di vederlo in futuro.
Royi,

20

Prima di poter eseguire un AppImage, è necessario renderlo eseguibile. Questa è una funzione di sicurezza di Linux. Esistono due modi principali per rendere eseguibile un AppImage:

1. Utilizzo della GUI

Come rendere eseguibile un AppImage

o

2. Sulla riga di comando

chmod a+x Some.Appimage

Ora fai doppio clic sul file per eseguirlo O fai clic con il pulsante destro del mouse> Esegui


15

Mentre lo snap si concentra solo su Ubuntu, AppImage è distribuito in modo incrociato e funziona anche su Fedora, Debian, OpenSUSE, CentOS ecc.

AppImage non ha bisogno di supporto di runtime o infrastruttura dalla distribuzione Linux e quindi funziona quasi ovunque. Permette agli autori di applicazioni di spedire il loro software direttamente agli utenti Linux come fanno per Windows e OS X; senza Canonical o nessun altro "tra" l'autore del software e l'utente finale.

Se un'applicazione viene fornita in formato AppImage, un utente può visitare il sito Web dell'autore originale per scaricarla, ad esempio MuseScore da https://musescore.org/it/download . Rendi eseguibile AppImage (utilizzando il tuo file manager o chmod a+x ./yourAppImage), quindi puoi eseguire l'applicazione semplicemente facendo doppio clic.


Quindi, se voglio installare Leafpad, faccio clic su "Configura"? Cosa succederà allora? E come posso disinstallare un'AppImage? Sto guardando bintray.com/probono/AppImages ma non ho trovato la risposta. Se non ti dispiace, puoi modificare la tua risposta per includere le informazioni e qualsiasi altra cosa che pensi possa piacere agli utenti.
DK Bose,

2
Non sono sicuro che sarebbe una soluzione anche per te - ma leafpad è disponibile nelle fonti 16.04 immediatamente (versione: 0.8.18.1). La versione leafpad offerta da bintray è 'solo' 0.8.17 - quindi anche più vecchia.
dufte,

1
È vero, ma per qualcuno che vuole solo testare le acque, è, come dice il sito, un tipo di cosa "Hello, World".
DK Bose,

Eccellente. Dopodiché puoi semplicemente fare doppio clic. Questo è quello di cui avevo bisogno!
Dawoodjee,

5

AppImages richiede l'esecuzione di FUSE. Il filesystem in Userspace (FUSE) è un sistema che consente agli utenti non root di montare filesystem.

Installa FUSE

Molte distribuzioni hanno una configurazione FUSE funzionante pronta all'uso. Tuttavia, se non funziona, potrebbe essere necessario installare e configurare FUSE manualmente.

Ad esempio, su Ubuntu:

sudo apt-get install fuse
sudo modprobe fuse
sudo usermod -a -G fuse $USER

Ad esempio, su openSUSE:

sudo zypper install fuse

Ricaderci

Se non si desidera installare FUSE, è possibile montare o estrarre AppImage.

Per montare AppImage ed eseguire l'applicazione, è sufficiente eseguire

sudo mount -o loop Some.AppImage /mnt
/mnt/AppRun

Se ciò non funziona, potresti avere un'AppImage di tipo 2 sperimentale . Questi richiedono di passare -o offset=...al mountcomando. Esegui l'AppImage con --appimage-offsetper scoprire il numero corretto per l'offset.


Dopo aver scritto la terza riga ( sudo usermod -a -G fuse) seguita dal mio nome utente, continuo a ottenere il usermod: group 'fuse' does not exist... Qualche idea sul perché?
Martin,

Ciao @Martin, in Ubuntu per es. se stai tentando di eseguire un'AppImage i686 (32 bit) in un sistema x86_64 (64 bit), otterrai questo errore a meno che tu non abbia installato le librerie a 32 bit. Probabilmente dovresti specificare il sistema operativo e l'app che stai tentando di eseguire la prossima volta per assistenza.
Leo,

Ciao @Leo, è stato tanto tempo fa, ma ho appena inserito le sudo apt-get install fuse sudo modprobe fuse sudo usermod -a -G fuse $USERrighe sul mio Windows 10 64. La risposta che sto commentando non specifica alcuna specifica 32/64 e non vedo dove dovrei specificare che o perché ...
Martin,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.