GNU/Linux >> Linux Esercitazione >  >> Linux

Introduzione al comando alternatives in Linux

Le astrazioni possono essere utili per gli utenti perché molti utenti non si preoccupano di come il loro computer riesca a portare a termine un'attività purché sia ​​in linea con l'obiettivo. In effetti, anche le applicazioni non si preoccupano sempre di come ottenere qualcosa fintanto che tutte le sue chiamate di sistema ricevono una risposta corretta. In teoria, un amministratore di sistema Linux può offrire molti strumenti di sistema in base alla funzione piuttosto che in base al nome esatto dell'eseguibile, ma ciò spesso richiede molto collegamento simbolico e monitoraggio della versione. A meno che non utilizzi le alternatives comando.

Le alternatives comando ha iniziato la sua vita come, cosa interessante, un'alternativa. Originariamente, questa era una comoda utility, scritta in Perl, dal progetto Debian Linux, chiamata update-alternatives . Red Hat ha riscritto il comando senza Perl ed è stato diffuso in tutte le distribuzioni basate su Fedora come Red Hat e CentOS, così come in altre distribuzioni che si affidano a Red Hat per la definizione funzionale di Linux Standard Base (LSB).

Quando usare il comando alternative

Un esempio semplice e realistico:hai un comando sul tuo sistema chiamato em , che avvia un semplice editor di testo. È stato l'editor di riferimento per la tua base di utenti per anni, molte persone hanno basato i flussi di lavoro su di esso e alcuni mantengono configurazioni altamente personalizzate per esso. Tuttavia, la tua base di utenti ti ha chiarito di recente che non possono più sopravvivere senza il supporto delle emoji nei loro editor di terminali e em non supporta Unicode.

Trovi un fork abilitato per Unicode di em chiamato nem , ma sai che il 99% dei tuoi utenti è abituato a em , hanno script che chiamano em e continueranno a considerare qualsiasi applicazione sostitutiva come em non importa quello che fai. La soluzione facile a questa situazione, ea molti altri esempi simili, è designare il nuovo nem binario come alternativa preferita a em binario quando em viene utilizzato il comando.

La creazione manuale di un collegamento simbolico potrebbe sembrare allettante, ma non è resistente agli aggiornamenti di un gestore di pacchetti, né è centralizzata.

Le alternatives comando è molto utile quando si gestiscono nomi di applicazioni "generiche". Ovviamente nel mondo UNIX, "generico" non è sempre generico più di quanto lo sia "Kleenex" o "Xerox" nel mondo reale, quindi termini come java , (x)emacs(-nox) , (n)vi(m) , chi è e iptables sono spesso tra i primi ad avere delle alternative definite per loro. Per termini veramente generici, come EDITOR e CC , le alternatives comando non è considerata una soluzione appropriata. Per quei termini, perché sono variabili d'ambiente e dovrebbero essere definite in /etc o $HOME/.profile .

Creare una nuova alternativa

Continuando con lo scenario di esempio di un vecchio binario chiamato em essendo soppiantato dalla nuova variante nem , è facile creare una voce alternativa. In questo esempio, devi rinominare il comando originale, anche se in altri casi questo non è necessario perché il comando non è esattamente quello che la gente pensa che sia in primo luogo (java , ad esempio, si trova raramente in /usr/bin direttamente). Se è necessario modificare il nome di un binario, il modo corretto per farlo è nel suo file delle specifiche RPM, in modo tale che l'RPM che installa il comando fornisca il binario con il nuovo nome.

In un pizzico, specialmente se stai comunque eliminando gradualmente il comando, potresti rimuovere il comando dalla gestione dei pacchetti del sistema e mantenere una versione personalizzata del vecchio comando disponibile /opt o simili.

Per questo esempio, supponi di aver rinominato l'editor originale em2 (indicando il suo numero di versione più recente).

Ora hai due binari (em2 e nem ) da associare a un comando:em . Per aiutare a mantenere chiari i diversi ruoli della terminologia, supponi che em e nem sono entrambi editor in stile micro Emacs. In tal caso, un termine molto generico per indicare l'alternativa creata potrebbe essere µemacs (usando il simbolo µ per indicare "micro") o uemacs per semplicità.

Crea un'alternativa all'originale fornendo:

  • una posizione per il collegamento simbolico "generico"
  • un nome per l'alternativa (ho deciso per uemacs , per chiarire che si tratta di un nome di riferimento anziché di un binario specifico)
  • il binario da eseguire quando vengono chiamati questi collegamenti simbolici
  • un livello di priorità per indicare quale alternativa è preferita
$ sudo alternatives --install /usr/bin/em uemacs /opt/em-legacy/em2 1

Crea un'alternativa per il nuovo binario, con una priorità alta perché è il tuo binario preferito:

$ sudo alternatives --install /usr/bin/em uemacs /usr/local/bin/nem 99

Questi comandi creano un nuovo collegamento simbolico, /usr/bin/em , puntando a /etc/alternatives/em , che a sua volta puoi puntare a o /opt/em-legacy/em2 o /usr/local/bin/nem . Il riferimento umano a questo pacchetto di alternative è uemacs , scelto arbitrariamente dall'amministratore di sistema perché descrittivo e memorabile. Puoi scegliere la destinazione del collegamento simbolico alternativo usando il --config opzione:

$ sudo alternatives --config uemacs
[sudo] password for seth: 

There are 2 programs which provide 'uemacs'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/local/bin/nem
   2           /opt/em-legacy/em2

Rimozione di un'alternativa

A volte le alternative sono soluzioni a lungo termine, altre volte servono solo ad aiutare gli utenti o gli amministratori a passare a qualcosa di nuovo. Se hai bisogno di rimuovere un'alternativa per qualsiasi motivo, puoi farlo con il --remove-all opzione, seguito dal nome "generico" dell'alternativa. In questo esempio, è uemacs :

$ sudo alternatives --remove-all uemacs

Questo rimuove tutto ciò che riguarda uemacs dalle alternatives sottosistema:il collegamento simbolico in /usr/bin e /etc/alternatives . Se vuoi rimuovere solo una scelta da un'alternativa, usa --remove opzione, fornendo il nome alternativo (uemacs in questo esempio) e il percorso della scelta che vuoi rilasciare:

$ sudo alternatives --remove uemacs /opt/em-legacy/em2

Alternative

Le alternatives comando ha molte più funzionalità, inclusa la possibilità di collegare simbolicamente i componenti dipendenti quando viene scelta un'alternativa specifica. Oltre a gestire gran parte del lavoro pesante, alternatives mantiene le tue incongruenze centralizzate. Puoi controllare quali alternative sono in atto, così non devi ricordare giorno per giorno che emacs è in realtà emacs-26.3 o quel java non è java-1.8 ma /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0 , e così via:

$ alternatives --list

Linux è tutto incentrato sulla scelta, sulla flessibilità e sulle alternatives command è un esempio di come sia gli utenti che gli amministratori possono trarre vantaggio da alcuni astuti giochi di prestigio.

Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente.


Linux
  1. Introduzione al comando Linux chmod

  2. Introduzione al comando chown di Linux

  3. Padroneggia il comando ls di Linux

  4. Il comando locate in Linux

  5. Annulla il comando cestino di Linux

Il comando timer in Linux

Il comando curl di Linux

Esempi essenziali del comando ps in Linux

Qual è il comando kill in Linux?

Comprendere il comando dell'ora in Linux

Uso del comando grep in Linux