<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>updatealternatives &amp;mdash; Cyberdyne Systems</title>
    <link>https://noblogo.org/aytin/tag:updatealternatives</link>
    <description>&#34;Fare o non fare. Non c&#39;è provare!&#34;</description>
    <pubDate>Tue, 22 Sep 2026 20:19:00 +0000</pubDate>
    <item>
      <title>Gestire link con update-alternatives</title>
      <link>https://noblogo.org/aytin/gestire-link-con-update-alternatives</link>
      <description>&lt;![CDATA[pills-tux&#xA;&#xA;Le shell nix sono delle miniere di chicche utili per l&#39;amministratore di sistema.&#xA;&#xA;Fra queste, ce n&#39;è una che ho sempre trovato particolarmente intrigante ed è update-alternatives (o alternatives nei sistemi redhat-based).&#xA;&#xA;Questo comando permette di gestire link simbolici e risulta comodo quando  ci sono gruppi di oggetti (alternative) a cui deve afferire il link.&#xA;!--more--&#xA;Ad es. supponiamo di avere 4 oggetti e un link che, in base alla necessità, possa puntare ad uno dei 4.&#xA;&#xA;Si tratta quindi di avere:&#xA;&#xA;/path/oggetto/1&#xA;/path/oggetto/2&#xA;/path/oggetto/3&#xA;/path/oggetto/4&#xA;&#xA;Se ad es. volessi un link generico che punti prima al 2, poi al 4 , poi all&#39;1 e poi di nuovo al 2, una gestione ordinaria di detto link avverrebbe grossomodo così:&#xA;ln -s /path/oggetto/2 /path/link/oggetto&#xA;...&#xA;rm /path/link/oggetto&#xA;ln -s /path/oggetto/4 /path/link/oggetto&#xA;...&#xA;rm /path/link/oggetto&#xA;ln -s /path/oggetto/1 /path/link/oggetto&#xA;...&#xA;rm /path/link/oggetto&#xA;ln -s /path/oggetto/1 /path/link/oggetto&#xA;Creo un link, lo cancello, lo ricreo, lo cancello... e così via.&#xA;&#xA;Tutto questo può essere semplificato con update-alternatives, che centralizza questo tipo di gestione dei link, creando tutti i possibili link per poi eleggere il &#34;link leader&#34; (il link effettivamente attivo) in base all&#39;esigenza.&#xA;Aggiungere alternatives&#xA;Per creare il gruppo di alternative si usa --install:&#xA;sintassi&#xA;--install pathlink nome pathfisico priorità&#xA;la priorità è un intero, l&#39;intero più grande diventa il link di default&#xA;sudo update-alternatives --install /path/link/oggetto &#34;nome gruppo&#34; /path/oggetto/1 100&#xA;sudo update-alternatives --install /path/link/oggetto &#34;nome gruppo&#34; /path/oggetto/2 110&#xA;sudo update-alternatives --install /path/link/oggetto &#34;nome gruppo&#34; /path/oggetto/3 150&#xA;sudo update-alternatives --install /path/link/oggetto &#34;nome gruppo&#34; /path/oggetto/4 120&#xA;Attivare un alternative (elezione del link leader)&#xA;Nell&#39;esempio che seguirà, vogliamo che il link che punta ad oggetto2, punti ad oggetto1:&#xA;&#xA;È possibile modificare interattivamente il link leader con --config:&#xA;&#xA;--config nome&#xA;sudo update-alternatives --config &#39;nome gruppo&#39;&#xA;Ci sono 4 programmi che forniscono &#39;nome gruppo&#39;.&#xA;&#xA;  Selezione    Comando&#xA;-----------------------------------------------&#xA;   1           /path/oggetto/1&#xA;2           /path/oggetto/2&#xA; 3           /path/oggetto/3&#xA;   4           /path/oggetto/4&#xA;&#xA;Invio per mantenere l&#39;attuale selezione[+], o inserire il numero di selezione: 1&#xA;oppure da cli (la modalità scriptabile):&#xA;--set nome pathfisico &#xA;sudo update-alternatives --set &#34;nome gruppo&#34; /path/oggetto/1&#xA;oppure automaticamente (scriptabile anche questa), con la selezione automatica della voce con priorità più alta:&#xA;--auto nome&#xA;sudo update-alternatives --auto &#39;nome gruppo&#39;&#xA;Rimuovere un link&#xA;La rimozione di un alternative dal gruppo, si fa con --remove. Rimuoviamo &#34;oggetto2&#34; ad es.:&#xA;--remove nome pathfisico&#xA;sudo update-alternatives --remove &#39;nome gruppo&#39; /path/oggetto/2&#xA;Per la rimozione di tutto il gruppo invece:&#xA;-- remove-all nome&#xA;sudo update-alternatives --remove-all &#39;nome gruppo&#39;&#xA;Visualizzare i gruppi di link&#xA;Per elencare tutti i gruppi di link presenti (ce ne sono diversi già a sistema) si usa il flag --list:&#xA;sudo update-alternatives --list&#xA;google-chrome         &#x9;auto  &#x9;/usr/bin/google-chrome-stable&#xA;jre25                &#x9;manual&#x9;/usr/lib/jvm/java-latest-openjdk&#xA;java                  &#x9;manual&#x9;/usr/lib/jvm/java-25-openjdk/bin/java&#xA;jreopenjdk           &#x9;auto  &#x9;/usr/lib/jvm/java-25-openjdk&#xA;wine-dxgi(x86-32)     &#x9;auto  &#x9;/usr/lib/wine/i386-windows/wine-dxgi.dll&#xA;javadocdir            &#x9;auto  &#x9;/usr/share/javadoc/java-24-openjdk/api&#xA;jre26                &#x9;auto  &#x9;/usr/lib/jvm/java-latest-openjdk&#xA;jre25openjdk        &#x9;auto  &#x9;/usr/lib/jvm/java-25-openjdk&#xA;javadocdir25         &#x9;auto  &#x9;/usr/share/javadoc/java-latest-openjdk/api&#xA;libnssckbi.so.x8664  &#x9;auto  &#x9;/usr/lib64/pkcs11/p11-kit-trust.so&#xA;w&#xA;...&#xA;che restituisce la lista delle alternatives.&#xA;Visualizzare le info di un gruppo di link&#xA;La visualizzazione delle info di una particolare alternative può avvenire con --config (che è più una modalità di configurazione come sappiamo), o col più verboso --display.&#xA;&#xA;--config mostra l&#39;id dell&#39;oggetto e il path fisico:&#xA;sudo update-alternatives --config &#39;nome gruppo&#39;&#xA;Ci sono 4 programmi che forniscono &#39;nome gruppo&#39;.&#xA;&#xA;  Selezione    Comando&#xA;-----------------------------------------------&#xA;   1           /path/oggetto/1&#xA;2           /path/oggetto/2&#xA; 3           /path/oggetto/3&#xA;   4           /path/oggetto/4&#xA;&#xA;Invio per mantenere l&#39;attuale selezione[+], o inserire il numero di selezione:&#xA;Notare che nel display di  --config, il simbolo [] rappresenta la voce con priorità più alta, il simbolo [+] rappresenta quella attiva.&#xA;&#xA;--display fornisce informazioni in più:&#xA;sudo update-alternatives --display &#39;nome gruppo&#39;&#xA;&#39;nome gruppo&#39; - stato: manuale.&#xA; il link attualmente punta a /path/oggetto/2&#xA;/path/oggetto/1 - priorità 100&#xA;/path/oggetto/2 - priorità 110&#xA;/path/oggetto/3 - priorità 150&#xA;/path/oggetto/4 - priorità 120&#xA;La migliore versione attuale è /path/oggetto/3.&#xA;Restituisce info sullo stato del link leader, manuale (se il leader è stato scelto con --config o --set) o automatico (se il leader è stato scelto con --auto), elenca i path fisici, le loro priorità e i follower che vedremo subito dopo.&#xA;Link correlati&#xA;Un altro flag interessante è l&#39;ex --slave mutato nel più politicamente corretto --follower che dà la possibilità di aggiungere molteplici triple, \nome gruppo, link, path\ tutte associate al link leader.&#xA;&#xA;Se il contesto afferito dal link leader prevede che vi siano altri contesti associati che devono variare di conseguenza, piuttosto che gestire n contesti separatamente, ne gestisco sempre uno che trascinerà tutti i contesti associati con --follower&#xA;&#xA;I follower possono essere aggiunti in blocco durante la creazione delle alternatives:&#xA;--follower pathlinkfollower nomefollower pathfisicofollower&#xA;sudo update-alternatives \&#xA;  --install /usr/bin/mytool mytool /usr/bin/mytool-1.0 10 \&#xA;  --follower /usr/share/man/man1/mytool.gz mytool.gz /usr/share/man/man1/mytool-1.0.1.gz&#xA;O aggiunti in un secondo momento:&#xA;--add-follower nome pathlink pathlinkfollower nomefollower pathfisicofollower&#xA;sudo update-alternatives \&#xA;  --add-follower mytool /usr/bin/mytool-1.0 /usr/share/applications/mytool.desktop  mytool.desktop /usr/share/applications/mytool-1.0.1.desktop&#xA;Così come i follower possono essere aggiunti singolarmente, allo stesso modo possono anche essere rimossi:&#xA;--remove-follower nome pathfisico nomefollower&#xA;sudo update-alternatives \&#xA;  --remove-follower mytool /usr/share/applications/mytool-1.0.1.desktop mytool.desktop&#xA;Aggiungiamo una seconda alternative all&#39;esempio iniziale per avere un link leader che punti al binario e due follower che puntino ai rispettivi man e lanciatore:&#xA;sudo update-alternatives \&#xA;--install /usr/bin/mytool mytool /usr/bin/mytool-2.0 20 \&#xA;--follower /usr/share/man/man1/mytool.gz mytool.gz /usr/share/man/man1/mytool-2.0.1path followername.gz \&#xA;--follower /usr/share/applications/mytool.desktop  mytool.desktop /usr/share/applications/mytool-2.0.1.desktop&#xA;possiamo notare come sia semplice cambiare parecchi link con un colpo solo a differenza di una gestione manuale&#xA;sudo update-alternatives --config  mytool&#xA;&#xA;Ci sono 2 programmi che forniscono &#39;mytool&#39;.&#xA;&#xA;  Selezione    Comando&#xA;-----------------------------------------------&#xA;   1           /usr/bin/mytool-1.0&#xA;*+ 2           /usr/bin/mytool-2.0&#xA;&#xA;Invio per mantenere l&#39;attuale selezione[+], o inserire il numero di selezione:&#xA;La selezione, in un colpo solo, trascinerà con sè il link all&#39;eseguibile, al man e al lanciatore .desktop.&#xA;&#xA;--display mostra per bene quanto sia articolata la sua configurazione:&#xA;sudo update-alternatives --display mytool&#xA;&#xA;mytool - stato: manuale.&#xA; il link attualmente punta a /usr/bin/mytool-2.0&#xA;/usr/bin/mytool-1.0 - priorità 10&#xA; seguace mytool.desktop: /usr/share/applications/mytool-1.0.1.desktop&#xA; seguace mytool.gz: /usr/share/man/man1/mytool-1.0.1.gz&#xA;/usr/bin/mytool-2.0 - priorità 20&#xA; seguace mytool.desktop: /usr/share/applications/mytool-2.0.1.desktop&#xA; seguace mytool.gz: /usr/share/man/man1/mytool-2.0.1.gz&#xA;La migliore versione attuale è /usr/bin/mytool-2.0.&#xA;Per usare update-alternatives anche senza avere privilegi di amministrazione, si può ricorrere ai flag --altdir e --admindir che servono per specificare le cartelle (su cui chiaramente si devono avere permessi r/w) in cui vengono depositati, rispettivamente, i puntamenti ai path fisici e le configurazioni mostrate da --display &#xA;&#xA;mkdir -p $HOME/.local/var/lib/alternatives&#xA;mkdir -p $HOME/.local/etc/alternatives&#xA;&#xA;bonus: definizione di un alias in .bashaliases per esempio&#xA;alias update-local-alternatives=&#39;/usr/bin/update-alternatives --altdir &#34;$HOME/.local/etc/alternatives&#34; --admindir &#34;$HOME/.local/var/lib/alternatives&#34;&#39;&#xA;In questo modo è possibile usare update-alternatives con l&#39;alias nella propria home, senza privilegi di amministrazione, sacrificando un pizzico di bash-completion.&#xA;&#xA;#bash #pills #updateAlternatives #link]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://pixelfed.uno/storage/m/_v2/489827599091373610/f0975049d-79c41a/Q9su2BwQBfCX/PxX9uhOnuAOxwQgN5OgtAqPLMw7Zv6nCC2ZmSjMS.jpg" alt="pills-tux"></p>

<p>Le shell *nix sono delle miniere di chicche utili per l&#39;amministratore di sistema.</p>

<p>Fra queste, ce n&#39;è una che ho sempre trovato particolarmente intrigante ed è <code>update-alternatives</code> (o <code>alternatives</code> nei sistemi redhat-based).</p>

<p>Questo comando permette di gestire link simbolici e risulta comodo quando  ci sono gruppi di oggetti (alternative) a cui deve afferire il link.

Ad es. supponiamo di avere 4 oggetti e un link che, in base alla necessità, possa puntare ad uno dei 4.</p>

<p>Si tratta quindi di avere:</p>
<ul><li><code>/path/oggetto/1</code></li>
<li><code>/path/oggetto/2</code></li>
<li><code>/path/oggetto/3</code></li>
<li><code>/path/oggetto/4</code></li></ul>

<p>Se ad es. volessi un link generico che punti prima al 2, poi al 4 , poi all&#39;1 e poi di nuovo al 2, una gestione ordinaria di detto link avverrebbe grossomodo così:</p>

<pre><code class="language-bash">ln -s /path/oggetto/2 /path/link/oggetto
...
rm /path/link/oggetto
ln -s /path/oggetto/4 /path/link/oggetto
...
rm /path/link/oggetto
ln -s /path/oggetto/1 /path/link/oggetto
...
rm /path/link/oggetto
ln -s /path/oggetto/1 /path/link/oggetto
</code></pre>

<p>Creo un link, lo cancello, lo ricreo, lo cancello... e così via.</p>

<p>Tutto questo può essere semplificato con <code>update-alternatives</code>, che centralizza questo tipo di gestione dei link, creando tutti i possibili link per poi eleggere il “<strong>link leader</strong>” (il link effettivamente attivo) in base all&#39;esigenza.</p>

<h2 id="aggiungere-alternatives">Aggiungere alternatives</h2>

<p>Per creare il gruppo di alternative si usa <code>--install</code>:</p>

<pre><code class="language-bash"># sintassi
# --install &lt;path_link&gt; &lt;nome&gt; &lt;path_fisico&gt; &lt;priorità&gt;
# la priorità è un intero, l&#39;intero più grande diventa il link di default
sudo update-alternatives --install /path/link/oggetto &#34;nome gruppo&#34; /path/oggetto/1 100
sudo update-alternatives --install /path/link/oggetto &#34;nome gruppo&#34; /path/oggetto/2 110
sudo update-alternatives --install /path/link/oggetto &#34;nome gruppo&#34; /path/oggetto/3 150
sudo update-alternatives --install /path/link/oggetto &#34;nome gruppo&#34; /path/oggetto/4 120
</code></pre>

<h2 id="attivare-un-alternative-elezione-del-link-leader">Attivare un alternative (elezione del link leader)</h2>

<p>Nell&#39;esempio che seguirà, vogliamo che il link che punta ad <code>oggetto_2</code>, punti ad <code>oggetto_1</code>:</p>

<p>È possibile modificare interattivamente il <strong>link leader</strong> con <code>--config</code>:</p>

<pre><code class="language-bash"># --config &lt;nome&gt;
sudo update-alternatives --config &#39;nome gruppo&#39;
Ci sono 4 programmi che forniscono &#39;nome gruppo&#39;.

  Selezione    Comando
-----------------------------------------------
   1           /path/oggetto/1
+  2           /path/oggetto/2
 * 3           /path/oggetto/3
   4           /path/oggetto/4

Invio per mantenere l&#39;attuale selezione[+], o inserire il numero di selezione: 1
</code></pre>

<p>oppure da cli (la modalità scriptabile):</p>

<pre><code class="language-bash"># --set &lt;nome&gt; &lt;path_fisico&gt; 
sudo update-alternatives --set &#34;nome gruppo&#34; /path/oggetto/1
</code></pre>

<p>oppure automaticamente (scriptabile anche questa), con la selezione automatica della voce con priorità più alta:</p>

<pre><code class="language-bash"># --auto &lt;nome&gt;
sudo update-alternatives --auto &#39;nome gruppo&#39;
</code></pre>

<h2 id="rimuovere-un-link">Rimuovere un link</h2>

<p>La rimozione di un alternative dal gruppo, si fa con <code>--remove</code>. Rimuoviamo “oggetto_2” ad es.:</p>

<pre><code class="language-bash"># --remove &lt;nome&gt; &lt;path_fisico&gt;
sudo update-alternatives --remove &#39;nome gruppo&#39; /path/oggetto/2
</code></pre>

<p>Per la rimozione di tutto il gruppo invece:</p>

<pre><code class="language-bash"># -- remove-all &lt;nome&gt;
sudo update-alternatives --remove-all &#39;nome gruppo&#39;
</code></pre>

<h2 id="visualizzare-i-gruppi-di-link">Visualizzare i gruppi di link</h2>

<p>Per elencare tutti i gruppi di link presenti (ce ne sono diversi già a sistema) si usa il flag <code>--list</code>:</p>

<pre><code class="language-bash">sudo update-alternatives --list
google-chrome         	auto  	/usr/bin/google-chrome-stable
jre_25                	manual	/usr/lib/jvm/java-latest-openjdk
java                  	manual	/usr/lib/jvm/java-25-openjdk/bin/java
jre_openjdk           	auto  	/usr/lib/jvm/java-25-openjdk
wine-dxgi(x86-32)     	auto  	/usr/lib/wine/i386-windows/wine-dxgi.dll
javadocdir            	auto  	/usr/share/javadoc/java-24-openjdk/api
jre_26                	auto  	/usr/lib/jvm/java-latest-openjdk
jre_25_openjdk        	auto  	/usr/lib/jvm/java-25-openjdk
javadocdir_25         	auto  	/usr/share/javadoc/java-latest-openjdk/api
libnssckbi.so.x86_64  	auto  	/usr/lib64/pkcs11/p11-kit-trust.so
w
...
</code></pre>

<p>che restituisce la lista delle <strong>alternatives</strong>.</p>

<h2 id="visualizzare-le-info-di-un-gruppo-di-link">Visualizzare le info di un gruppo di link</h2>

<p>La visualizzazione delle info di una particolare alternative può avvenire con <code>--config</code> (che è più una modalità di configurazione come sappiamo), o col più verboso <code>--display</code>.</p>

<p><code>--config</code> mostra l&#39;id dell&#39;oggetto e il path fisico:</p>

<pre><code class="language-bash">sudo update-alternatives --config &#39;nome gruppo&#39;
Ci sono 4 programmi che forniscono &#39;nome gruppo&#39;.

  Selezione    Comando
-----------------------------------------------
   1           /path/oggetto/1
+  2           /path/oggetto/2
 * 3           /path/oggetto/3
   4           /path/oggetto/4

Invio per mantenere l&#39;attuale selezione[+], o inserire il numero di selezione:
</code></pre>

<p>Notare che nel display di  <code>--config</code>, il simbolo <code>[*]</code> rappresenta la voce con priorità più alta, il simbolo <code>[+]</code> rappresenta quella attiva.</p>

<p><code>--display</code> fornisce informazioni in più:</p>

<pre><code class="language-bash">sudo update-alternatives --display &#39;nome gruppo&#39;
&#39;nome gruppo&#39; - stato: manuale.
 il link attualmente punta a /path/oggetto/2
/path/oggetto/1 - priorità 100
/path/oggetto/2 - priorità 110
/path/oggetto/3 - priorità 150
/path/oggetto/4 - priorità 120
La migliore versione attuale è /path/oggetto/3.
</code></pre>

<p>Restituisce info sullo stato del link leader, <strong>manuale</strong> (se il leader è stato scelto con <code>--config</code> o <code>--set</code>) o <strong>automatico</strong> (se il leader è stato scelto con <code>--auto</code>), elenca i path fisici, le loro priorità e i <strong>follower</strong> che vedremo subito dopo.</p>

<h2 id="link-correlati">Link correlati</h2>

<p>Un altro flag interessante è l&#39;ex <code>--slave</code> mutato nel più politicamente corretto <code>--follower</code> che dà la possibilità di aggiungere molteplici triple, &lt;nome gruppo, link, path&gt; tutte associate al link leader.</p>

<p>Se il contesto afferito dal link leader prevede che vi siano altri contesti associati che devono variare di conseguenza, piuttosto che gestire <em>n</em> contesti separatamente, ne gestisco sempre uno che trascinerà tutti i contesti associati con <code>--follower</code></p>

<p>I <strong>follower</strong> possono essere aggiunti in blocco durante la creazione delle alternatives:</p>

<pre><code class="language-bash"># --follower &lt;path_link_follower&gt; &lt;nome_follower&gt; &lt;path_fisico_follower&gt;
sudo update-alternatives \
  --install /usr/bin/mytool mytool /usr/bin/mytool-1.0 10 \
  --follower /usr/share/man/man1/mytool.gz mytool.gz /usr/share/man/man1/mytool-1.0.1.gz
</code></pre>

<p>O aggiunti in un secondo momento:</p>

<pre><code class="language-bash"># --add-follower &lt;nome&gt; &lt;path_link&gt; &lt;path_link_follower&gt; &lt;nome_follower&gt; &lt;path_fisico_follower&gt;
sudo update-alternatives \
  --add-follower mytool /usr/bin/mytool-1.0 /usr/share/applications/mytool.desktop  mytool.desktop /usr/share/applications/mytool-1.0.1.desktop
</code></pre>

<p>Così come i follower possono essere aggiunti singolarmente, allo stesso modo possono anche essere rimossi:</p>

<pre><code class="language-bash"># --remove-follower &lt;nome&gt; &lt;path_fisico&gt; &lt;nome_follower&gt;
sudo update-alternatives \
  --remove-follower mytool /usr/share/applications/mytool-1.0.1.desktop mytool.desktop
</code></pre>

<p>Aggiungiamo una seconda alternative all&#39;esempio iniziale per avere un link leader che punti al binario e due follower che puntino ai rispettivi man e lanciatore:</p>

<pre><code class="language-bash">sudo update-alternatives \
--install /usr/bin/mytool mytool /usr/bin/mytool-2.0 20 \
--follower /usr/share/man/man1/mytool.gz mytool.gz /usr/share/man/man1/mytool-2.0.1path follower_name.gz \
--follower /usr/share/applications/mytool.desktop  mytool.desktop /usr/share/applications/mytool-2.0.1.desktop
</code></pre>

<p>possiamo notare come sia semplice cambiare parecchi link con un colpo solo a differenza di una gestione manuale</p>

<pre><code class="language-bash">sudo update-alternatives --config  mytool

Ci sono 2 programmi che forniscono &#39;mytool&#39;.

  Selezione    Comando
-----------------------------------------------
   1           /usr/bin/mytool-1.0
*+ 2           /usr/bin/mytool-2.0

Invio per mantenere l&#39;attuale selezione[+], o inserire il numero di selezione:
</code></pre>

<p>La selezione, in un colpo solo, trascinerà con sè il link all&#39;eseguibile, al man e al lanciatore .desktop.</p>

<p><code>--display</code> mostra per bene quanto sia articolata la sua configurazione:</p>

<pre><code class="language-bash">sudo update-alternatives --display mytool

mytool - stato: manuale.
 il link attualmente punta a /usr/bin/mytool-2.0
/usr/bin/mytool-1.0 - priorità 10
 seguace mytool.desktop: /usr/share/applications/mytool-1.0.1.desktop
 seguace mytool.gz: /usr/share/man/man1/mytool-1.0.1.gz
/usr/bin/mytool-2.0 - priorità 20
 seguace mytool.desktop: /usr/share/applications/mytool-2.0.1.desktop
 seguace mytool.gz: /usr/share/man/man1/mytool-2.0.1.gz
La migliore versione attuale è /usr/bin/mytool-2.0.
</code></pre>

<p>Per usare <code>update-alternatives</code> anche senza avere privilegi di amministrazione, si può ricorrere ai flag <code>--altdir</code> e <code>--admindir</code> che servono per specificare le cartelle (su cui chiaramente si devono avere permessi r/w) in cui vengono depositati, rispettivamente, i puntamenti ai path fisici e le configurazioni mostrate da <code>--display</code></p>

<pre><code class="language-bash">mkdir -p $HOME/.local/var/lib/alternatives
mkdir -p $HOME/.local/etc/alternatives

# bonus: definizione di un alias in .bash_aliases per esempio
alias update-local-alternatives=&#39;/usr/bin/update-alternatives --altdir &#34;$HOME/.local/etc/alternatives&#34; --admindir &#34;$HOME/.local/var/lib/alternatives&#34;&#39;
</code></pre>

<p>In questo modo è possibile usare <code>update-alternatives</code> con l&#39;alias nella propria home, senza privilegi di amministrazione, sacrificando un pizzico di bash-completion.</p>

<p><a href="/aytin/tag:bash" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">bash</span></a> <a href="/aytin/tag:pills" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">pills</span></a> <a href="/aytin/tag:updateAlternatives" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">updateAlternatives</span></a> <a href="/aytin/tag:link" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">link</span></a></p>
]]></content:encoded>
      <guid>https://noblogo.org/aytin/gestire-link-con-update-alternatives</guid>
      <pubDate>Sat, 19 Sep 2026 19:17:19 +0000</pubDate>
    </item>
  </channel>
</rss>