YUM, perbacco! YUM! Oltre a essere stata la mia espressione di quando ho saputo della novità, YUM è anche un ottimo gestore di pacchetti già presente in altri distribuzioni Linux come Fedora o CentOS.
In questo modo il nostro caro IBM i si dota finalmente di un sistema di installazione di applicazioni moderno, del quale vi indico alcuni vantaggi, almeno secondo me:
- installazione delle utility tramite un semplice comando da shell,
- le utility vengono pubblicate in un repository remoto pubblicamente accedibile,
- i pacchetti possono essere aggiornati in automatico sempre con un comando shell, il sistema rileva in automatico le nuove versioni disponibili,
- affrancamento dal sistema legacy di installazione dei programmi (GO LICPGM per intederci), almeno per quanto riguarda l'installazione di software opensource per il PASE (l'opzione 5733-OPS non è più supportata, se ne avete sentito parlare).
Insomma una bella notizia, ma come fare per installare il tutto? Intanto vi rimando alla pagina ufficiale che lo spiega, per i più aggiornati di voi che hanno l'ultima versione di ACS, si tratta solo di trovare la giusta opzione nel menu Strumenti (Tools) e poi "Open Source Package Management Interface". Avendo selezionato il sistema su cui installare il tutto, dovreste trovarvi già tutto pronto su quel sistema. Dico "dovrebbe" perché io invece non sono aggiornato - ahimè - e quindi ho dovuto optare per l'opzione 2, altrettanto semplice: scaricate questo script sql ed eseguitelo sempre con ACS sul sistema su cui volete installare l'utility.
Dal menu Azioni -> Database -> Esegui script SQL
Fate "File" -> "Apri" per caricare lo script e poi su "Esegui" -> "Tutti" e avete la vostra utility installata.
Tutto qui? Sì!
Beh, no dai, ancora qualche accorgimento giusto per poter utilizzare al meglio tutto quanto. Le utility verranno installate nella cartella /QOpenSys/pkgs, solo che non risiede nel PATH per cui non verrebbero trovate se non indirizzandole direttamente, ma risulterebbe scomodo scrivere /QOpenSys/pkgs/bin/yum, ad esempio.
Per cui dobbiamo settare il PATH, sul sito di riferimento consiglia di impostare un file .profile nella home dell'utente, che è sicuramente una buona consuetudine, però questo comporta di 1) creare una home per ogni utente, 2) creare un file .profile per ogni utente, insomma non proprio pratico.
Alternativamente si può impostare un file profile globale nella cartella /QOpenSys/etc.
Come impostare il PATH nel file globale? E qui inizio una piccola digressione.
Il repository YUM è ampio e in continua crescita, ma non tutte le utility del mondo opensource sono già presenti (Ghostscript, ad esempio, vi suona famigliare?), potreste voler utilizzare un'utility che non c'è e allora l'unica alternativa è quella di avventurarsi nel mondo della compilazione da sorgente. Il repository vi mette a disposizione il necessario: il GCC e gli strumenti di compilazione già variamente utilizzati in distribuzione unix-like (Linux, AIX), la famose triade ./configure - make - make install , per intenderci (se non vi risulta famigliare vi rimando qua). Normalmente in questo modo è possibile configurare l'installazione in una cartella specifica, ma non vi consigliere di utilizzare /QOpenSys/pkgs per il semplice fatto di non far collidere eventali librerie già installate da YUM o che potranno essere installate in futuro, ma di utilizzare invece la cartella proposta di default, normalmente utilizzata in altri sistemi, cioè /usr/local o per quanto riguarda il PASE /QOpenSys/usr/local.
Per prima cosa creiamola se non esiste:
CALL QP2TERMcreiamo anche un link alla cartella da root:
mkdir /QOpenSys/usr/local
ln -s /QOpenSys/usr/local /usr/local
Ora possiamo installare utility da sorgente e, per tornare alla questione del PATH, dobbiamo inserire la nuova cartella creata alla lista. Come, quindi? banalmente così:
CALL QP2TERMuscite e rientrate dal PASE e avrete il nuovo PATH e potrete utilizzare l'utility solo con il nome, ad esempio:
/usr/bin/touch -C 819 /QOpenSys/etc/profile
echo 'PATH=/QOpenSys/pkgs/bin:/QOpenSys/usr/local/bin:$PATH' >> /QOpenSys/etc/profile
echo 'export PATH' >> /QOpenSys/etc/profile
$ yum --version 3.4.3 Installato: rpm-4.13.0.1-13.ppc64 da 2018-12-13 16:47 Build : None su 2018-08-08 17:58 Committed: None su 2018-08-08Tutto quanto funziona da PASE, ma perché tralasciare la QSHELL? Sarà "anziana" ma pur sempre funzionale, per impostare il PATH bisogna creare un file profile anche qui, ma nella cartella /etc/:
Installato: yum-3.4.3-15.noarch da 2018-12-13 16:47 Build : None su 2018-08-08 20:51 Committed: None su 2018-08-08
QSHAnche qui uscite e rientrate e provate yum --version.
/usr/bin/touch -C 819 /etc/profile
ln -s /QOpenSys/pkgs /pkgs
echo 'PATH=/pkgs/bin:/usr/local/bin:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
NB: se avete installato le utility descritte qui, è meglio disintallare il tutto prima di installare programmi con yum, viene messo a dsiposizione uno script che esegue la pulizia di tutto, ho aggiornato il post per descrivere meglio la procedura.
Ora che avete YUM, vediamo cosa c'è di disponibile con il comando yum list available:
CALL QP2TERMPer installare bisogna usare yum install <nome pacchetto>, ecco qualcosa di utile:
$ yum list available Pacchetti disponibili activemq.noarch 5.11.1-0 ibm blas-devel.ppc64 3.8.0-0 ibm bzip2.ppc64 1.0.6-13 ibm bzip2-devel.ppc64 1.0.6-13 ibm cblas-devel.ppc64 3.8.0-0 ibm createrepo.noarch 0.10.4-3 ibm curl-devel.ppc64 7.58.0-2 ibm db2util.ppc64 1.0.9-0 ibm deltarpm.ppc64 3.6.1-2 ibm diffutils.ppc64 3.5-0 ibm expat.ppc64 2.2.0-0 ibm expat-devel.ppc64 2.2.0-0 ibm file.ppc64 5.32-4 ibm ...
yum install zip yum install unzip yum install python3-pip python3-ibm_db python3-itoolkit yum install nodejs10 yum install curl yum install wget yum group install "Development tools"
(l'ultimo comando installa una collezione di programmi per lo sviluppo tra qui il GCC menzionato prima)
Qui qualche altro comando yum: buon divertimento!
PS: come dicevo alcune utility non sono disponibili, ma potete provare ad installarle da sorgente. Questa guida ad esempio rimane valida, ma potete saltare direttamente al punto 2) e utilizzare make al posto di gmake.
PPS: è anche possibile richiedere a IBM di adottare nuove utility nel repositori, inserendo una RFE, qui trovate alcune richieste e trovate già le mie richieste per aggiungere Ghostscript, GhostPDL e ImageMagick: votate!