lunedì 25 marzo 2019

Utility per PASE, sempre meglio!

Una delle novità in ambito IBM i più grandi dello scorso anno è stata l'introduzione di un nuovo repository per l'installazione semplificata di utility per il PASE, utilizzabile tramite YUM. Le utility sono pacchettizzate com RPM e sono compilate nativamente come OS400, non come AIX, sono quindi un'ottima alternativa alle utility descritte qui. Inoltre, il nuovo repository è supportato direttamente da IBM! Vediamo insieme come configurare al meglio il tutto, ed iniziare a installare utility!

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 QP2TERM
mkdir /QOpenSys/usr/local
creiamo anche un link alla cartella da root:
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 QP2TERM
/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
uscite e rientrate dal PASE e avrete il nuovo PATH e potrete utilizzare l'utility solo con il nome, ad esempio:
$ 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-08
  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
Tutto 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/:
QSH
/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
Anche qui uscite e rientrate e provate yum --version.

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 QP2TERM
$ 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 ...
Per installare bisogna usare yum install <nome pacchetto>, ecco qualcosa di utile:
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!