Prima la risposta scadente: dipende
Se rilasci binari, supponi che la risposta sia "no" a meno che tu non stia distribuendo tutte le librerie che mai coinvolge con esso (da zero, il che è fastidioso a meno che tu non stia fornendo un sistema davvero enorme che si regge da solo ) o collegano staticamente l'equivalente.
... ma maghi e soldi, e maghi soldi ...
IBM ha alcuni installatori "Unixish generali" che mi hanno scioccato lavorando ovunque io li abbia provati: diversi Linuce di diverse generazioni di kernel, OpenSolaris (o come si chiama ora), Solaris e BSD. Ma sono enormi. E le cose che forniscono sono ugualmente enormi. Nessun piccolo programma di auto da corsa viene pubblicato in questo modo, ma solo le grandi cose di tipo aziendale che ti aspetteresti da IBM.
Per quanto riguarda il semplice restare su Linux, ma funziona bene su gran parte di Linuxdom, questo sembra essere possibile in forma binaria, come evidenziato dalla varietà di programmi di installazione binari di tipo "per Linux (generale)" che vedrai da alcuni fornitori. Diverse chat, browser, giochi, meta-installer, ecc. Sono pubblicati in questo modo, ma sempre da grandi venditori che possono passare il tempo per farlo bene. È un po 'sorprendente che possano dire "per Linux" ed essere generalmente fiduciosi che funzionerà, ma questo sembra essere il caso.
Ma...
Distribuisco il mio software come sorgente con un'utilità di creazione. Faccio questo in C, Erlang, Python, Guile, ecc. Questo mi dà molta più flessibilità sul fatto che funzionerà o meno, ed è molto più facile scrivere un buildscript che assicuri che esistano le cose giuste al momento della compilazione rispetto a assicurarsi che tutto sia a posto in fase di esecuzione. Una volta che esiste, è banale scrivere un auto-aggiornamento per il tuo programma se distribuisci il sorgente: il sorgente è di solito molto più piccolo di un binario che include tutti i deps e altre follia. Usando questo metodo non ho avuto molti problemi a distribuire in modo affidabile su Unices (e talvolta su Windows, ma è un po 'più di un lavoro ingrato).
Abbastanza bambino, armati!
Quando stai diventando serio, come srsly srs, per adattarti senza problemi al mondo Linux, distribuisci sorgenti C o ti rivolgi a un ambiente completamente gestito per un linguaggio deliziosamente hacking che è già pre-costruito. Se stai scrivendo codice Python, ad esempio, puoi controllare le versioni e sapere con quale versione di CPython funziona la tua, e generalmente ti aspetti che esista una versione compatibile su un dato Linux (e questo è molto più facile da controllare rispetto a una vasta gamma di librerie C / versioni che potresti utilizzare). Erlang, Guile, Python, Perl, CL, ecc. Sono tutti molto obiettivi facili per questo tipo di distribuzione, e molti di essi hanno un repository centrale come CPAN o pip (o qualsiasi altra cosa) in cui gli utenti possono eseguire un comando per estrarre da soli la fonte firmata quando lo desiderano e sanno che le cose generalmente funzioneranno come previsto .
[Addendum: 1. Anche Haskell può generalmente farlo tramite Cabal , anche se sarei cauto nel farlo in un ambiente di produzione. 2. Esistono diverse strategie di distribuzione "a rilascio" con Erlang che garantiscono che il codice disponga di un ambiente completo. 3. Python fa un passo avanti con gli ambienti virtuali; non tutti i tempi di esecuzione ti aiutano tanto.]
Quest'ultimo aspetto degli ambienti gestiti su Linux è davvero fantastico . E, come bonus, ti consente di definire dipendenze molto più generali, di risolverle automaticamente senza alcuno sforzo aggiuntivo da parte tua, non richiede la scrittura di un pacchetto per distribuzione e puoi smettere di preoccuparti se un sistema è 32 o 64 bit (generalmente, comunque).