Cosa fa esattamente `update-alternatives`?


99

A cosa serve il comando update-alternatives?

Prendi questo esempio:

sudo update-alternatives --install /usr/bin/java java /usr/local/java/jre1.7.0_09/bin/java 1

Che cosa fa? In che cosa differisce dall'aggiunta di jdk al percorso?

Diciamo che ho eseguito il comando. Come potrei tornare allo stato originale?


2
È inoltre possibile utilizzare sudo update-alternatives --config javaed javace javawsdi scegliere tra le versioni installate.
Shayan,

Risposte:


73

Aggiorna i collegamenti /etc/alternativesper indicare il programma a questo scopo. Ci sono molti esempi, come x-www-browser, editorecc. Che si collegheranno al browser o all'editor di tua preferenza. Alcuni script o strumenti di sistema potrebbero voler modificare manualmente un file (ad es. Conflitto di configurazione dpkg) e cercheranno le alternative per darti l'editor di scelta. Per java, questo è l'ambiente di runtime Java - Oracle, OpenJRE, ecc.

I collegamenti in /etc/alternativessono solo collegamenti simbolici. Puoi vederli usando ad esempio

ls -l /etc/alternatives

Inoltre, i /usr/binbinari regolari sono anche collegamenti simbolici. Per esempio:

ls -l /usr/bin/java
  lrwxrwxrwx 1 root root 22 Aug 14 10:33 /usr/bin/java -> /etc/alternatives/java
ls -l /etc/alternatives/java
  lrwxrwxrwx 1 root root 46 Aug 14 10:33 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java

Quindi, non PATHè necessario modificarlo. Utilizza solo collegamenti simbolici.


Quindi, in altre parole, posso digitare un singolo comando e questo mi chiederà delle scelte. Questo è l'unico vantaggio aggiunto rispetto all'impostazione di un percorso corretto. Supponiamo anche che sia installato anche un diverso fornitore di Java Come aggiornerei Java per indicare entrambi i due diversi fornitori?
Sviluppatore Android

Non puoi indicare entrambi come descrivi. Lo scopo è quello di avere un solo puntatore all'implementazione della voce come nell'esempio fornito. Senza domande. E uno qualsiasi dei candidati dovrebbe funzionare - dovrebbe essere solo una preferenza dell'amministratore. E ancora: non ha nulla a che fare con PATHs.
gertvdijk,

1
Va bene. Questo chiarisce le cose. So che sto tornando ai percorsi ma voglio solo capire la differenza tra loro. Nel caso di un percorso dobbiamo specificare esplicitamente la posizione, ma in questo caso si tratta solo di collegamenti sym in modo che quando digitiamo java cerchi prima / etc / alternatives. O sbaglio nel fare questo assunto?
Sviluppatore Android
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.