Risposte:
I "sistemi basati su Unix" sono una categoria troppo generica per effettuare qualsiasi tipo di determinazione generalmente applicabile che si applicherà a tutti i sistemi basati su Unix. Il problema è che la struttura del filesystem (e il posto "corretto" / "convenzionale" per mettere le cose) è così selvaggiamente diversa tra i diversi gusti di "Unix" (se puoi anche chiamarlo così) che devi praticamente gestirlo caso per caso.
Alcuni esempi:
La risposta è che la convenzione canonica, socialmente accettabile e ben integrata per dove archiviare qualsiasi cosa su qualsiasi sistema operativo, che si tratti di una distribuzione di Linux, BSD, Solaris, HP-UX, ecc. Dipende dalle circostanze esatte . In particolare:
apt-get
o yum
installarlo direttamente senza scaricare un programma di installazione da un sito Web?Non esiste una risposta diretta per questo senza considerare tutti i fattori. Tuttavia, per Ubuntu 12.04 in particolare , se stai costruendo il tuo pacchetto in un .deb
file da distribuire in un PPA o per l'invio ai repository di pacchetti di Ubuntu ( main
o universe
), consiglierei di archiviare la cache /var/cache
. Ma questo è solo per Ubuntu e non dovresti certamente applicare il presupposto che ogni sistema operativo basato su Unix o distro lo considererà accettabile.
Inoltre, se non ci sono vantaggi nel salvare i dati della cache negli boot del sistema, penso che potrebbe anche appartenere a / tmp.
Si noti che si verificheranno questi problemi relativi alla convenzione di percorso per ogni tipo di file utilizzato dal programma: dati condivisi, file eseguibili, librerie, file della guida, immagini, audio, pagine Web e così via. Quindi mi chiedo, se stai chiedendo dei file di cache, come stai pianificando di gestire gli altri tipi di file. Stai solo facendo ipotesi ingenue e speri che nessuno sia in disaccordo con te? Se non hai letto documenti o standard di Ubuntu che suggeriscano dove metterli, è una cattiva idea assumere solo una cosa o l'altra. Ad esempio, attaccare sempre le librerie in / usr / lib potrebbe essere un errore, poiché a seconda della situazione a cui potrebbero appartenere altrove.
Inoltre, come sviluppatore di software, penso che la cosa più responsabile da fare sia consentire all'utente finale di decidere dove inserire i propri file. Puoi impostare le impostazioni predefinite, ma gli utenti (e i distributori) possono e personalizzeranno la build per adattarla alla loro distribuzione.
Il modo più semplice per farlo è costruire il tuo programma usando GNU Autoconf . Autoconf è un sistema di build in cui l'utente può passare argomenti della riga di comando allo script di build per modificare i percorsi dei vari "tipi di directory" lontano dalle impostazioni predefinite. Quasi ogni distribuzione ha uno script di build per ogni pacchetto di Autoconf che imposta le directory convenzionali appropriate per ogni tipo. Hanno anche specificamente un tipo di directory per la cache: sharedstatedir .
gem
strumento. Tuttavia, probabilmente non sarebbe appropriato creare file in fase di esecuzione all'interno della stessa directory in cui l'applicazione viene scaricata dalla gemma. D'altra parte, se stai eseguendo l'app come utente, hai bisogno di una directory che sia in lettura e scrittura per gli utenti e ciò significhi cambiare le autorizzazioni (che richiede un lavoro di integrazione del sistema ancora maggiore al momento dell'installazione come la creazione di un gruppo ecc.) o utilizzando una directory globale di lettura / scrittura, ad esempio / tmp.
/usr
, /lib
o /bin
dalla vostra applicazione.
/tmp
cartella. Le risposte alle tue domande sarebbero (download, no, no, no, no, no, no). Probabilmente sembra normale per la maggior parte delle persone concludere che sia,/tmp
ma sono nuovo sui sistemi unix e le convenzioni basate su Ubuntu OS non mi sono familiari. Questo apre un'idea interessante per gem per consentire la memorizzazione nella cache del disco agnostico (agnostico dell'utente). Grazie, +1 da parte mia.