mercoledì 8 giugno 2016

Come installare utility per il PASE

Forse non tutti sanno che... la nostra amata macchina può anche essere gestita come partizione AIX sufficientemente emulata dall'applicazione PASE, installabile come opzione software su licenza
(5770SS1, opzione 3: Portable App Solutions Environment, qui la guida per l'installazione delle opzioni).

1. PASE e i suoi comandi

Certo, la sola installazione del PASE non ci permette di fare molto, se non la possibilità di lanciare qualche comando basilare, ad esempio lanciamo il terminale:
CALL QP2TERM
E scriviamo questo comando:
ps aux
Possiamo vedere i processi attivi. "E capirai", direste voi, "anche WRKACTJOB lo fa, e pure meglio", ma con un'occhiata più attenta noteremo che l'output mostra i processi all'interno del PASE, si comporta quindi come macchina a sé.
Come fare colloquiare le parti (i5/OS e PASE)? Oltre al già citato comando per aprire il terminale, ne esistono altri due per poter lanciare un comando su PASE e poi far tornare il controllo al chiamante:
CALL PGM(QP2SHELL) PARM('/path/to/cmd' 'parm1' 'parm2' ...)
CALL PGM(QP2SHELL2) PARM('/path/to/cmd' 'parm1' 'parm2' ...)
La differenza tra i due è che il primo viene eseguito in un nuovo gruppo d'attivazione tutto suo, mentre il secondo in quello del chiamante; il primo parametro è il percorso completo al comando shell, i seguenti sono i parametri del comando stesso.
Se non trovate proprio comodi questi comandi, sappiate che le utility installate per PASE sono utiilzzabili anche da QSHELL, passando a QSH il comando da lanciare, ad esempio:
QSH CMD('echo hello world')
io mi trovo meglio.

2. Preparare l'ambiente

Ok, dopo questa breve introduzione, possiamo passare a installare qualche altra funzione che amplia il PASE e rende più interessante il giochino.

IBM mette a disposizione un archivio di pacchetti rpm installabili su AIX (AIX Toolbox), e anche un file archivio che permette di avere il gestore di pacchetti RPM (appunto). Purtroppo questo archivio non è installabile tramite installp, visto che il comando non è presente nel PASE, si dovrebbe quindi estrarre con:
restore -xvqf rpm.rte
e poi configurare i vari collegamenti.
La via dell'installazione manuale non è proprio comoda, inoltre gli rpm vanno scaricati dal sito e caricati sulla macchina, per non parlare del fatto che le versioni delle utility sono piuttosto datate... .

Ci viene in aiuto il sito Young i Professional, che mette a disposizione degli script per il l'installazione di RPM e scaricamento dei pacchetti (tramite wget). I files, inoltre, non vengono scaricati da IBM ma da PERZL, un sito che raccoglie pacchetti più recenti, per i quali viene anche risolta una fastidiosa dipendenza con la libreria libiconv: qui la pagina con le istruzioni in inglese e i download.

Riporto qui le istruzioni in breve, i file da scaricare sono questi:
download-2.0.tar.zip -> il contenuto dello zip va caricato su /QOpenSys, il file è un .tar che va a sua volta scompattato così:
CALL QP2TERM

cd /QOpenSys

tar -xf download-2.0.tar
viene creata quindi la directory /QOpenSys/download, il file .tar può essere anche cancellato;
setup2.sh -> sostituisce quello in /QOpenSys/download;
wwwperzl.sh ->  sostituisce quello in /QOpenSys/download;

quindi:
cd /QOpenSys/download
./setup2.sh

ATTENZIONE! - Aggiornamento (10/05/2017) : esistono aggiornamenti degli script di installazione, leggete in fondo al post prima di proseguire.

Ora si possono installare le utility usando lo script wwwperzl.sh, per sapere come funziona si può stampare un help:
CALL QP2TERM

cd /QOpenSys/download

./wwwperzl.sh help
Prima di procedere: tramite questo script è possibile installare gcc, con il quale a sua volta è possibile compilare altre utility scritte in C, partendo dal codice sorgente che viene messo a disposizione (un esempio: ghostPDL). I binari ottenuti da questi sorgenti vengono spesso installati in una directory specifica che in ambienti unix di solito è /usr/local/bin e che va quindi creata e inserita nel PATH:
CALL QP2TERM

mkdir /usr/local

mkdir /usr/local/bin
aggiungiamo anche un link a questa directory nella partizione del PASE:
ln -s /usr/local /QOpenSys/usr/local
usciamo dal terminale PASE e da riga di comando lanciamo:
WRKENVVAR LEVEL(*SYS)
dobbiamo verificare che non esistano le variabili d'ambiente PATH e PASE_PATH. Se non sono presenti si possono aggiungere:
ADDENVVAR ENVVAR(PASE_PATH)
VALUE('/QOpenSys/usr/local/bin:/usr/local/bin:/QOpenSys/usr/bin:
/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin') LEVEL(*SYS)

ADDENVVAR ENVVAR(PATH)
VALUE('/usr/local/bin:/usr/bin:.:/QOpenSys/usr/local/bin:
/QOpenSys/usr/bin') LEVEL(*SYS)
se le variabili esistono vanno modificate aggiungendo :/usr/local/bin alla lista delle directory.
Se avete modificato le variabili d'ambiente è consigliabile rientrare come nuovo lavoro affinché le modifiche vengano recepite.

3. Installiamo cose

NB: le procedure descritte di seguito sono per il sistema operativo i5/OS versione V7R1, il quale PASE riesce ad emulare fino ad AIX 6.1. Per la corrispondenza tra versioni rimando alla pagina di Young i Professional oppure sui siti IBM, per l'installazione di versioni differenti, rimando invece all'help dello script: /wwwperzl.sh help.

Rientriamo nel PASE e posizioniamoci nella directory degli script:
CALL QP2TERM

cd /QOpenSys/download
Perzl mette a disposizione un sistema per risolvere il problema delle dipendenze tra i vari pacchetti, in pratica sono file di testo che contengono la lista di pacchetti da scaricare per una determinata versione. Questi files hanno estensione .deps e sono gestiti dallo script che interroga una lista salvata in locale.

Proviamo ad esempio a cercare il gcc, visto che l'abbiamo nominato prima:
./wwwperzl.sh aix61 list gcc
dovrebbe generare un output simile:
gcc-4.7.2-1.aix6.1.ppc.deps
gcc-4.8.0-1.aix6.1.ppc.deps
gcc-4.8.0-2.aix6.1.ppc.deps
gcc-4.8.1-1.aix6.1.ppc.deps
gcc-4.8.2-1.aix6.1.ppc.deps
...
l'ultima versione è quindi la 4.8.2-1, quindi:
./wwwperzl.sh aix61 wget gcc-4.8.2-1.aix6.1.ppc
senza .deps finale

verranno scaricati tutti i pacchetti che vanno poi installati con:
./wwwperzl.sh aix61 rpm gcc-4.8.2-1.aix6.1.ppc
per verificare l'installazione potete lanciare il comando:
gcc -v
tra le altre informazione stampa anche la versione del gcc:
...

gcc version 4.8.2 (GCC)
In maniera simile possiamo installare altre utility, io vi consiglio almeno queste:

ZIP
./wwwperzl.sh aix61 list zip

zip-3.0-1.aix5.1.ppc.deps

./wwwperzl.sh aix61 wget zip-3.0-1.aix5.1.ppc

./wwwperzl.sh aix61 rpm zip-3.0-1.aix5.1.ppc

UNZIP
./wwwperzl.sh aix61 list unzip

unzip-6.0-2.aix5.1.ppc.deps

./wwwperzl.sh aix61 wget unzip-6.0-2.aix5.1.ppc

./wwwperzl.sh aix61 rpm unzip-6.0-2.aix5.1.ppc

CURL
./wwwperzl.sh aix61 list curl

curl-7.27.0-1.aix5.1.ppc.deps

./wwwperzl.sh aix61 wget curl-7.27.0-1.aix5.1.ppc

./wwwperzl.sh aix61 rpm curl-7.27.0-1.aix5.1.ppc

IMAGEMAGICK
./wwwperzl.sh aix61 list ImageMagick

...
ImageMagick-Q16-6.8.1.10-1.aix5.1.ppc.deps
...

./wwwperzl.sh aix61 wget ImageMagick-Q16-6.8.1.10-1.aix5.1.ppc

./wwwperzl.sh aix61 rpm ImageMagick-Q16-6.8.1.10-1.aix5.1.ppc
(oppure potete scegliere la versione Q8)


ZLIB
./wwwperzl.sh aix61 list zlib

zlib-1.2.3-4.aix5.2.ppc.deps

./wwwperzl.sh aix61 wget zlib-1.2.3-4.aix5.2.ppc

./wwwperzl.sh aix61 rpm zlib-1.2.3-4.aix5.2.ppc
MAKE
./wwwperzl.sh aix61 list make

make-4.0-1.aix5.3.ppc.deps

./wwwperzl.sh aix61 wget make-4.0-1.aix5.3.ppc

./wwwperzl.sh aix61 rpm make-4.0-1.aix5.3.ppc
AUTOCONF
./wwwperzl.sh aix61 list autoconf

autoconf-2.69-1.aix5.1.ppc.deps

./wwwperzl.sh aix61 wget autoconf-2.69-1.aix5.1.ppc

./wwwperzl.sh aix61 rpm autoconf-2.69-1.aix5.1.ppc
TAR
./wwwperzl.sh aix61 list tar

tar-1.27-1.aix5.1.ppc.deps

./wwwperzl.sh aix61 wget tar-1.27-1.aix5.1.ppc

./wwwperzl.sh aix61 rpm tar-1.27-1.aix5.1.ppc
GZIP
./wwwperzl.sh aix61 list gzip

...
gzip-1.5-1.aix5.1.ppc.deps

./wwwperzl.sh aix61 wget gzip-1.5-1.aix5.1.ppc

./wwwperzl.sh aix61 rpm gzip-1.5-1.aix5.1.ppc

4. Conclusioni

Divertitevi? No davvero ora potete installare un sacco di utility, magari non tutte funzioneranno al primo colpo dopo l'installazione, ma sono comunque un sacco. Inoltre avendo installato gcc potete tentare di compilare altri programmi dei quali potete trovare il codice sorgente (dicevamo ghostPDL?): dipende solo dal vostro tempo a disposizione. Veramente, divertitevi.

5. Ho fatto casino, come disinstallo tutto?
CALL QP2TERM

/QOpenSys/download/wwwclean.sh

ln -s /usr/local /QOpenSys/usr/local

rm -r /usr/local 

(occhio a eventuali utility che avete installato a mano in /usr/local)

Poi dovete eliminare le variabile d'ambiente:
RMVENVVAR ENVVAR(PATH) LEVEL(*SYS)

RMVENVVAR ENVVAR(PASE_PATH) LEVEL(*SYS)

Aggiornamento (28/11/2016)

Modificati i percorsi delle variabili d'ambiente $PATH e $PASE_PATH per far risultare prima i comandi nelle librerie .../usr/local/bin .

Aggiornamento (10/05/2017)

Aaron Bartell ha rilasciato una versione aggiornata degli script, per installare il tutto il file da scaricare è qui sull'apposito repository su BitBucket. La procedura quindi diventa:
CALL QP2TERM

mkdir /QOpenSys/download
Quindi scompattare lo zip e caricare i file nella cartella appena creata, lo script di installazione è setup.sh e non setup2.sh :
cd /QOpenSys/download

./setup.sh
Poi procedere normalmente. Se avete già installato la versione precedente dei files, è sufficiente copiare il file wwwperzl.sh , la nuova versione risolve un bug che pregiudicava l'aggiornamento della lista dei file .deps e quindi non si potevano avere le ultime versioni delle utility dal sito Perzl.org.
Per sapere come aggiornare i .deps rimando all'apposito help:
cd /QOpenSys/download

./wwwperzl.sh aix61 admin

PS: esiste anche un metodo di installazione basato su chroot , opzione installabile con queste ptf, non ho avuto modo di installarle ancora (spero presto) per cui non conosco la procedura, la metodologia migliore per chi non ha gli ultimi aggiornamenti rimane quella illustrata in questo post.

Aggiornamento (22/06/2017)

Alcuni utenti hanno avuto problemi con l'ultima versione di make disponibile su Perzl (la versione del pacchetto make-4.1-1), in pratica se lanciate gmake dà poco simpatici errori, il problema risiede più che altro nel terminale del PASE (QP2TERM), mentre non ha dato problemi se lanciato da un terminale ssh. L'alternativa è piuttosto quella di rimanere sulla versione meno recente (pacchetto make-4.0-1), almeno per adesso; se avete installato la nuova versione e volete fare il downgrade dovrete fare manualmente, per cui:
CALL QP2TERM

cd /qopensys/download

rpm --ignoreos --ignorearch --nodeps --replacepkgs
    --oldpackage --replacefiles -hUv make-4.0-1.aix5.3.ppc.rpm

Aggiornamento (25/03/2019) 

Aggiunta sezione per disintallazione e pulizia.

Nessun commento:

Posta un commento