Conflitto tra pacchetti Java
Come mi succede spesso nel fine settimana, oggi ho fatto gli aggiornamenti della mia installazione di Arch. Di solito, prima di farli, do un’occhiata alle novità sul suo sito, ma oggi non l’ho fatto. Do quindi il comando solito:
$ sudo pacman -Syu
[sudo] password di aldo:
:: Sincronizzazione dei database in corso...
...
:: Aggiornamento del sistema in corso...
risoluzione delle dipendenze in corso...
ricerca dei pacchetti in conflitto in corso...
errore: sono stati rilevati dei conflitti irrisolvibili tra i pacchetti
errore: impossibile eseguire l'operazione richiesta (dipendenze in conflitto)
:: jdk-openjdk e jre-openjdk vanno in conflitto
Al che, ovviamente, vado a vedere se ci sono novità sul sito di Arch ed effettivamente ecco lì la notizia:
We are introducing a change in JDK/JRE packages of our distro.
[…]
To sum it up instead of having JDK and JRE packages coexist in the same system we will be making them conflict.
[…]
This will (potentially) require a manual user action during upgrade […].Arch Developers, Incoming changes in JDK / JRE 21 packages may require manual intervention.
In poche parole, bisogna scegliere uno tra i tre pacchetti Java (JDK/JRE/JRE-headless).
Nel mio sistema avevo tutti e tre i pacchetti installati:
$ pacman -Ss openjdk | grep installato
extra/jdk-openjdk 21.u35-7 [installato: 21.u35-3]
extra/jre-openjdk 21.u35-7 [installato: 21.u35-3]
extra/jre-openjdk-headless 21.u35-7 [installato: 21.u35-3]
Visto che dovevo tenerne solo uno, dovevo capire quale fosse quello necessario. Vedo quindi con pacman quali sono i pacchetti che li hanno richiesti:
jdk-openjdk
$ pacman -Qi jdk-openjdk
Nome : jdk-openjdk
...
Richiesto da : Nessuno
jre-openjdk
$ pacman -Qi jre-openjdk
Nome : jre-openjdk
...
Richiesto da : jdk-openjdk
jre-openjdk-headless
$ pacman -Qi jre-openjdk-headless
Nome : jre-openjdk-headless
...
Richiesto da : bcprov java-commons-lang jre-openjdk pdftk
Quindi jdk-openjdk
e jre-openjdk
possono essere eliminati. Per jre-openjdk-headless
invece c’è pdftk
che lo richiede.
La mia intenzione è di eliminare tutti i pacchetti Java e pdftk
e installare nuovamente quest’ultimo, facendogli installare automaticamente la dipendenza richiesta jre-openjdk-headless
, visto che non ho bisogno di compilare pacchetti Java e dovrebbe essere sufficiente per le mie esigenze.
Rimuovo quindi tutto, compreso pdftk
che richiede Java:
sudo pacman -Rsn jdk-openjdk jre-openjdk jre-openjdk-headless pdftk
Ho quindi installato solo pdftk
:
sudo pacman -Syu pdftk
Durante l’installazione Pacman mi ha chiesto quale Java installare:
:: Ci sono 6 fornitori disponibili per java-runtime-headless
:: Repository extra
1) jdk-openjdk 2) jre-openjdk 3) jre-openjdk-headless 4) jre11-openjdk-headless 5) jre17-openjdk-headless
2) jre8-openjdk-headless
Digita un numero (default=1):
Ho scelto ovviamente il numero 3
e l’installazione è andata avanti senza problemi.