2010-04-25 9 views
6

Di solito memorizzo le applicazioni Java ei file JAR che ho scaricato dal Web nella cartella ~/Java sul mio computer (una macchina OS X). Lo sto facendo dai tempi in cui ero un utente di Windows. Tuttavia, penso che nei sistemi basati su UNIX le app locali degli utenti siano convenzionalmente archiviate in un'altra directory. Ho la sensazione che questa directory dovrebbe essere /usr/local/, /usr/local/USERNAME, /opt/local o /opt/local/USERNAME ma non sono sicuro. Qualche idea quale directory posso usare per questo scopo?La posizione convenzionale per l'archiviazione delle mie librerie e applicazioni Java in sistemi basati su UNIX

Si prega di notare che, sto parlando di file di archivio che ho scaricato dal Web, spacchettare e uso a livello locale e non i programmi che hanno script di installazione o MacPorts, ecc

+2

Memorizzarli in /home/USERNAME/.maybeEvenAHiddenFolder. "/ usr /" btw non ha nulla a che fare con "utente" ma in realtà è un abbreviazione di risorse di sistema unix. – Tedil

+2

1. OS X è un unix 2. A meno che non si voglia installarli per tutti gli utenti nel sistema, non c'è niente di sbagliato nel metterli nella propria directory home .. – xenoterracide

+0

@xenoterracide: lo so! E ho usato ~/Java per anni senza problemi! La mia domanda riguardava le convenzioni però. – Behrang

risposta

2

Non c'è alcun modo benedetto di farlo. Potresti, comunque, avere più versioni di un barattolo, e poi scendere da lì.

Di solito scarica i contenitori di cui ho bisogno come distribuzione e lo sposto nella sua cartella, quindi aggiungo i vasi ai progetti di cui ho bisogno per il mio IDE. Per le biblioteche un approccio comune è usare Maven e la sua gestione delle dipendenze.

Quindi, il mio suggerimento è quello di mantenere il vostro modo attuale di fare è, se vi piace questo, ma hanno ogni progetto nella propria cartella, come

~/Java/jakarta-commons-net-1.1.8/commons-net.jar 
+0

@ Thorbjørn: so degli scontri JAR, ecc. e al momento li sto organizzando esattamente come il tuo esempio. Comunque stavo solo chiedendo delle convenzioni. Sembra però che non ci siano convenzioni ... :) – Behrang

+0

Usiamo ancora CVS e abbiamo stabilito l'abitudine delle librerie usate che sono state inserite nel proprio progetto Eclipse con origine e javadoc definite, e anche quelle sono state controllate in CVS. Questo ci permette di usare Importa -> ProjectSet per ottenere uno spazio di lavoro completamente popolato senza analisi e completamente in-house. –

2

Si potrebbe voler leggere il Filesystem Hierarchy Standard/opt o/usr/local sono probabilmente appropriati ma dovresti prima leggere le definizioni FHS.

+0

o vedere la versione di Apple http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man7/hier.7.html#//apple_ref/doc/man/7/hier Note/opt/local è usato dai macport quindi potresti star meglio su/usr/local per il codice condiviso – Mark

3

di Apple hanno un note dare/Library/Java/Estensioni come directory per jar condivisi e ~/Library/Java/Extensions per jar solo per te. Questi percorsi sono sul classpath.

I barattoli possono essere ovunque fintanto che la directory si trova sul percorso della classe. (Io uso una versione di stile di Thorbjørn Ravn Andersen che uso ~/Libreria/Jar/jakarta-commons-net-1.1.8/commons-net.jar)

Vedere la risposta di Tom Anderson per un modo migliore di farlo usando ivy etc

13

La para-risposta è che non dovresti scaricare i vasi a mano affatto, dovresti usare Gradle, Ivy, Maven, o qualcosa di simile per gestire i tuoi vasi per te. Questi strumenti prendono una semplice specifica delle dipendenze come input e vanno a cercare, scaricare, memorizzare e rendere disponibili tutti i file jar necessari. Ci vuole un po 'per abituarsi, ma sono piuttosto meravigliosi una volta che ci si sta muovendo.

Una risposta diretta, tuttavia, è che su unix ortodosso, questi file appartengono a /usr/local/share. usr perché sono dati di sola lettura che non fanno parte del sistema operativo di base, local perché non vengono forniti dal sistema operativo (che possiede il resto di /usr) e share perché i file jar sono indipendenti dall'architettura.

Si noti che su FreeBSD, il sistema di gestione dei pacchetti 'ports' mette i file in /usr/local, ma credo che lo condivida con l'amministratore locale. Non c'è un altro luogo in cui andare file puramente locali.

Se il sistema dispone di una convenzione per i contenitori in cui è gestito il pacchetto, copiarlo sotto /usr/local. Ad esempio, su Ubuntu, c'è /usr/share/java, quindi dovresti usare /usr/local/share/java.

Inoltre, se il sistema ha una convenzione per la gestione delle versioni, copiarlo. Ancora una volta, su Ubuntu, i giare sono tutti memorizzati in una directory, con i numeri di versione nel nome, ma con un collegamento simbolico senza versione che punta alla versione predefinita/più recente. Quindi, ho un file a /usr/share/java/xstream-1.3.1.jar e un link simbolico a /usr/share/java/xstream.jar che punta ad esso. Userei lo stesso approccio in /usr/local/share/java.

Ora, questo è per unix ortodosso. Sei su OS X, che non è unix ortodosso. Tuttavia, i principi si applicano: trova in che modo il sistema memorizza i jar forniti e lo traspone in uno spazio del filesystem gestito dall'utente.

1

Sui sistemi FreeBSD la posizione è ${LOCALBASE}/share/java - e le relative sottodirectory. Non che tutte le porte del software lo rispettino, ma dovrebbero.

LOCALBASE è in genere /usr/local - a meno che non venga sovrascritto dall'amministratore di sistema.

Problemi correlati