Perché il mio pacchetto è stato installato su / opt?


8

Qualche tempo fa ho installato couchdb dalla sorgente sulla mia macchina debian. Sembrava installarsi bene e tutto ha funzionato.

Alcune settimane dopo volevo aggiornare e installare da un .deb usando dpkg. Ora sembra che tutto sia stato installato sotto /opt. Tutto sembra funzionare bene, ma non capisco davvero perché sia ​​stato installato sotto /opt. Non è "liscio" come quando le cose venivano installate direttamente in /usr/local/bine /etce /var/log. È più complicato da configurare rispetto a quando in precedenza avevo appena modificato i file di configurazione installati in / etc / couchdb

Qualcuno potrebbe spiegarmi perché l'installazione /optè "una buona cosa" e perché questo è un modo migliore di fare le cose rispetto all'installazione precedente che proveniva dalla fonte?

So che questa è una domanda piuttosto vaga ma sono competente solo con Linux, non un esperto e non capisco il pensiero dietro l'installazione /opt


Forse manca un tag / debian?
D4RIO,

Stai dicendo che un pacchetto Debian è installato in / opt? Se è così, sta facendo la cosa sbagliata. Ho anche un'applicazione Google Chrome (non attualmente installata) installata in / opt. Tutto ciò che è gestito dal sistema di pacchetti dovrebbe andare nel sistema principale.
Faheem Mitha,

Osservando questo con più attenzione, non sono riuscito a trovare una chiara dichiarazione nella politica che l'installazione del pacchetto Debian (indipendentemente dal fatto che sia ufficiale o meno) non dovrebbe essere installata in / opt, anche se ho la forte impressione che ciò non debba essere fatto, e lì sono vari commenti in rete che farlo è la cosa sbagliata. Se trovo qualcosa di più preciso, lo pubblicherò. AFAIK, Debian non si aspetta né richiede l'installazione di pacchetti non ufficiali in un posto diverso dai pacchetti ufficiali.
Faheem Mitha,

Risposte:


10

Lo standard di gerarchia dei filesystem fornisce queste definizioni:

  • /opt : Pacchetti software applicativi aggiuntivi
  • /usr/local : Gerarchia locale (utilizzata dall'amministratore di sistema durante l'installazione del software in locale)

Il modo in cui ho letto che:

  • Le applicazioni di sistema standard dovrebbero entrare /bine /usr/bin(implicito)
  • I pacchetti di terze parti dovrebbero entrare /opt
  • Qualcosa dovrebbe essere installato solo /usr/localse l'amministratore di sistema lo desidera

Per estensione, se il sysadmin installa qualcosa usando dpkgo rpm, non dovrebbe andare /usr/localper impostazione predefinita.

Quindi probabilmente fa la cosa giusta.


Il server delle app Websphere di IBM va in / opt. Inoltre, quando installo qualcosa come IBM JDK, lo inserisco in / opt / java.
Djangofan,

5

Debian Policy dice

9.1.2 Programmi specifici del sito

Come richiesto dall'FHS, i pacchetti non devono inserire alcun file /usr/local, sia inserendoli nell'archivio del file system che devono essere decompressi da dpkg o manipolandoli nei loro script del manutentore.

Non esiste un divieto così specifico contro /opt. La politica aggiunge anche

La posizione di tutti i file e le directory installati deve essere conforme allo Filesystem Hierarchy Standard (FHS), versione 2.3, con le eccezioni indicate di seguito, e salvo dove ciò violerebbe altri termini della Debian Policy.

e dice il File Hierarchy Standard

Le directory /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, e /opt/mansono riservati per l'uso all'amministratore di sistema locale.

e poi più in basso

Le distribuzioni possono installare software /opt, ma non devono modificare o eliminare il software installato dall'amministratore di sistema locale senza il consenso dell'amministratore di sistema locale.

Si noti che la politica è per Debian stessa, ma generalmente corrisponde a una raccomandazione di buone pratiche. Il risultato, se sto leggendo correttamente, è che non va bene installare pacchetti binari (deb) /usr/local, ma va bene installarlo /optfintanto che non interferisce con l'uso dello spazio da parte di sysadmin.

La mia opinione personale è che è una cattiva idea avere pacchetti deb in uno /usr/localo /opt. Non sono d'accordo con D4RIO quando dice:

Esiste un pacchetto Couchdb per Debian (intendo, ufficiale), quindi se ne hai scaricato un altro, va bene, deve essere installato in /opto /usr/local/binentrambi.

In genere non si desidera installare due diversi pacchetti deb corrispondenti allo stesso software installato e se in realtà hanno lo stesso nome pacchetto, dpkg non lo consentirà comunque. I pacchetti di software Debian non ufficiali disponibili come pacchetto ufficiale comunemente (ma non sempre) hanno lo stesso nome di quelli ufficiali; devi solo installare l'uno o l'altro, non entrambi.

Per quello che vale, penso che inserire pacchetti deb /optsia una cattiva idea, e l'unica cosa recente che ho visto è con Google Chrome. Tuttavia, Google non segue sempre le migliori pratiche.


Concordo pienamente sul fatto che un pacchetto non dovrebbe essere installato su / opt, specialmente se inserisce file altrove come in / usr / bin. Imho / opt dovrebbe contenere un software completamente autonomo in modo da poterlo eliminare dall'orbita semplicemente cancellandolo da / opt.
Arrowmaster,

Va bene grandi risposte grazie ma è installato su / opt per impostazione predefinita. Se non per / optare, allora dove dovrei installarlo? E come farlo usando dpkg?

@Duke: se riesci a ottenere l'origine del pacchetto deb, puoi ricostruire il deb per installarlo nel sistema come i normali pacchetti. Ciò richiederà un po 'di lavoro se non si ha già familiarità con la procedura, ma è la cosa giusta da fare qui.
Faheem Mitha,

1
non sono d'accordo con questa risposta. Ci sono molte situazioni in cui desideri installare due versioni di software, puoi facilmente desiderare un pitone specifico per un'applicazione specifica. Un amministratore di sistema locale potrebbe voler impacchettare questo python, dove dovrebbe andare? Il software installato localmente (make install) va in / usr / local, il 3o pacchetto software va in / opt / - la definizione dei pacchetti è mantenuta ampia: via dpkg, via installatori, via PIP, via (inserire il sistema di imballaggio preferito). Sono d'accordo che è una buona pratica di "provider / pacchetti" autonomi.
Ashwoods

4

/optè per software di terze parti. Esiste un pacchetto couchdb per debian (intendo, ufficiale), quindi se ne hai scaricato un altro, va bene, deve essere installato in /opto /usr/local/binentrambi.


2

Anche se non è Debian, le Linee guida per il packaging di Fedora sono abbastanza chiare al riguardo:

... nessun pacchetto Fedora può avere file o directory in / opt o / usr / local ...

La ragione per cui i pacchetti non inseriscono / optano per le cose è abbastanza semplice: Come è stato sottolineato in precedenza, il File Hierarchy Standard afferma che ...

Le distribuzioni possono installare il software in / opt, ma non devono modificare o eliminare il software installato dall'amministratore di sistema locale senza il consenso dell'amministratore di sistema locale.

Questo è qualcosa che non può essere garantito dai pacchetti in quanto un'installazione o un aggiornamento possono modificare tali dati.

So che Fedora non è Debian, ma credo che in questo caso siano abbastanza simili. Soprattutto da quando Lintian, lo strumento di controllo dei pacchetti per Debian, ha un errore speciale per questo: dir-o-file-in-opt

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.