lunedì 2 ottobre 2017

Tu (in batch) non puoi passare! O forse sì...

SFTP è un protocollo per lo scambio file in maniera sicura, in quanto usa ssh come layer di trasporto di dati crittografati, è molto, molto più sicuro di un normale FTP e viene quindi spesso richiesto come metodo di scambio file. Sul nostro IBM i è facilmente utilizzabile a patto di avere installato i programmi su licenza 5733SC1 opzione *BASE - IBM Portable Utilities for i 5733SC1 opzione 1 - OpenSSH, OpenSSL, zlib e chiaramente il PASE (qui su come verificare).

Una volta installate le opzioni collegarsi a un server sftp è semplice, poniamo ad esempio di doverci collegare a host.ext, e ci sono stati dati utente e password:
CALL QP2TERM
sftp utente@host.ext
al primo collegamento con host.ext verrà richiesto se inserire l'indirizzo tra quelli affidabili a cui collegarsi, per cui digitate yes e poi verrà richiesta la password, quindi ora potete inserire i comandi per lo scambio di file.

Ok... ma se dovete farlo in batch? Il comando sftp permette di lanciare dei comandi contenuti in uno script apposito... abbiamo ad esempio il nostro file scambio.txt salvato sulla root dell'IFS e deve essere inviato sulla cartella remota /scambiofile, potremmo scrivere la lista dei comandi necessari e salvarla in un altro file chiamato script.txt (per comodità salvato sempre sulla root), per cui:
EDTF STMF('/script.txt')
e inseriamo
cd /scambiofile
put /scambio.txt
il comando quindi diventa:
sftp -b/script.txt utente@host.ext
questa volta i comandi vengono eseguiti in automatico, il problema è che chiede comunque la password! Chiedere a qualcuno di effettuare l'autenticazione ogni volta potrebbe non essere una soluzione praticabile, l'ideale è che il processo parta completamente in automatico e non interattivo, di seguito illustro un paio di soluzioni, partendo dalla più sicura.

AUTENTICAZIONE TRAMITE CERTIFICATI


Si tratta di creare una coppia di chiavi di crittografia, una privata e una pubblica, i certificati generati sono personali e vi identificano in maniera univoca, per cui possono essere usati per l'autenticazione.
Dovete consegnare la parte pubblica al gestore del servizio SFTP affinché l'aggiunga alla lista delle chiavi accettate, sempre che sia possibile utilizzare questa tipologia da parte loro.

Prima di tutto dovreste collegarvi con l'utente che intendete usare per effettuare il collegamento batch, e se non l'avete già fatto collegatevi manualmente a host.ext con un comando sftp o ssh, lo scopo è di salvare il certificato del sito tra quelli riconosciuti e creare i certificati nella home dell'utente corretto.

Preferisco le mie chiavi come preferisco il caffè: lunghe, per crearle digitiamo a terminale:
CALL QP2TERM

ssh-keygen -b 4096
(crea una chiave lunga 4096, lo standard è invece 2048)

Accettate il nome di default delle chiavi (id_rsa per la chiave privata, id_rsa.pub per la chiave pubblica) e non inserite nessuna passphrase.

A questo punto dovreste consegnare al provider il file con la chiave pubblica id_rsa.pub affinché lo importino nel loro server, oppure potreste provare a farlo da soli sfruttando lo stesso collegamento ssh:
CALL QP2TERM

scp ~/.ssh/id_rsa.pub utente@host.ext:~/.ssh/authorized_keys
ed inserite la password, per questa volta.
Se ok, se provate a ricollegarvi via sftp o ssh, non dovrebbe chiedervi password ma dirvi che è stato accettato il vostro certificato ("Authenticating with public key"), ora non vi resta che mettere in piedi il vostro servizio di scambio in batch senza che resti bloccato in attesa di interattività.


INSTALLARE SSHPASS


Sshpass è una utility che simula il comportamento dell'utente e inserisce la password quando richiesta e, soprattutto, in batch. Andrà compilato e installato da sorgente, per cui per prima cosa verificate di avere il necessario per compilare sorgenti C - sto parlando di gcc e di make - altrimenti vi rimando alla mia guida pubblicata qui, in particolare fate attenzione ad inserire le variabili d'ambiente PASE_PATH e PATH: saranno utili dopo per trovare il comando sshpass.

Innanzitutto scarichiamo l'ultima release dei sorgenti compattati con in formato tar, al momento in cui scrivo è la 1.06; se avete seguito la guida citata prima dovreste avere la cartella /QOpensys/download e visto che mi piace l'ordine creiamo qui una sotto cartella dove tenere il file tar e una cartella dove inserire i file scompattati:
CALL QP2TERM

mkdir /Qopensys/download/tar

mkdir /QOpensys/opt/sshpass
Possiamo scaricare il file da pc e poi caricarlo via ftp su /Qopensys/download/tar e poi da terminale:
cd /Qopensys/download/tar

gtar -xvf sshpass-1.06.tar.gz -C /QOpensys/opt/sshpass
Spostiamoci sulla cartella appena scompattata e iniziamo il primo passo per lo compilazione, chi è pratico di sistemi unix/linux riconoscerà la famosa triade (./configure, make e make install), ma per compilare su IBM i sono necessarie alcune variazioni:
cd /QOpensys/opt/sshpass/sshpass-1.06

./configure
Completato il passo di configurazione viene creato il file config.h, questo file definisce un alias rpl_malloc che però su IBM i non trova, dobbiamo toglierlo manualmente per cui (da terminale normale):
EDTF STMF('/QOpenSys/opt/sshpass/sshpass-1.06/config.h')
trovate la riga:
#define malloc rpl_malloc
e commentatela:
/* #define malloc rpl_malloc */
ora possiamo proseguire:
gmake

gmake install
se digitate il comando sshpass dovrebbe comparire l'help:

(tutto ok)

Non resta che mettere in piedi il servizio batch, solo che a questo punto il comando per accedere via sftp diventa:
sshpass -p "password" sftp -oBatchMode=no -b/script.txt utente@host.ext

NB: sshpass vi costringe ad avere la password scritta da qualche parte, ed è quindi la soluzione giudicata come meno sicura. Dovrebbe essere utilizzata come ultima spiaggia in caso di impossibilità ad utilizzare i certificati.

(Mia reazione all'affermazione: "non siamo in grado di utilizzare le chiavi" ... successo veramente...)

mercoledì 5 luglio 2017

Un tunnel per la posta

Il server SMTP integrato con la nostra macchina è in grado di funzionare da relay di posta utilizzando un servizio esterno, ma molti provider offrono possibilità di crittografia e autenticazione limitate, spesso utilizzano semplicemente SSL su porta 465. IBMi, come altri altri server SMTP (vedi postfix), non supporta questo tipo di crittografia, e per la verità, hanno ragione loro.

Ciononostante rimane la necessità di utilizzare il servizio e instaurare un collegamento, vediamo di seguito come utilizzare un "trucchetto", installare sulla macchina un servizio di tunnelling che utilizza OpenSSL.

0. Ripasso: come configurare il server SMTP per il relay su altro servizio.


Le istruzioni sono ben specificate qui, non è intenzione di questo post spiegare nel dettaglio questi passaggi, ma li riepilogo solamente per capire come cambieranno in seguito:
  • se non si è già in possesso di un certificato rilasciato da qualche autorità, è possibile utilizzarne uno creato "in proprio", per cui prendiamo carta e penna e ... no apriamo il browser puntando sull' "IBM Navigator for i" e da lì cerchiamo il DCM, dobbiamo creare una autorità di certificazione locale (local CA). Creata la CA, creiamo il nostro certificato come se fosse rilasciato dalla nostra CA.
  • Assegniamo il certificato al client di posta, occhio che sia il client: dobbiamo far collegare il nostro server a un altro.
  • Già che ci siamo verifichiamo invece che l'authority che ha rilasciato il certificato utilizzato dal nostro provider sia tra quelle considerate affidabili, altrimenti dobbiamo farci dare il certificato principale della CA, importarlo e poi aggiungerlo alla trust list.
I prossimi passi possono essere eseguiti su "IBM Navigator for i", basta andare a cercare le impostazioni del server SMTP, oppure da riga di comando, di seguito scriverò solo i comandi su terminale (per comodità):
  • Modifichiamo le impostazione del server di posta per utilizzare il relay:
CHGSMTPA ALWAUTH(*RELAY) FWDHUBSVR('<host_server_di_posta_del_provider>')
  • Se diversa da 25, cambiamo anche la porta alla quale collegarsi, questo si configura come variabile d'ambiente:
ADDENVVAR ENVVAR('QIBM_SMTP_SERVER_PORT') VALUE('465') LEVEL(*SYS)
  • Aggiungiamo le informazioni di login:
ADDSMTPLE TYPE(*HOSTAUTH) HOSTNAME('<host_server_di_posta_del_provider>') USERNAME('<username>') PASSWORD('<password>')
  • riavviamo il server smtp
ENDTCPSVR *SMTP
STRTCPSVR *SMTP

Queste impostazioni abilitano la comunicazione via TLS, vediamo come impostare il tunnel.

1. Installate stunnel


Stunnel è un'utility per instaurare un servizio di tunnelling che utilizza OpenSSL per la crittografia, è possibile installarlo utilizzando i pacchetti messi a disposizione da Perzl, come descritto qui.

NB: vi consiglio di installare l'ultima versione, e per questo dovrete aggiornare l'utility di installazione, per questo consultate la guida in linea:
CALL QP2TERM
cd /QOpenSys/download
./wwwperzl.sh aix61 admin
Una volta aggiornato (ci mette un po') date i comandi:
./wwwperzl.sh aix61 list stunnel
lista i pacchetti disponibili tra cui:
...
stunnel-5.36-1.aix5.2.ppc.deps
...
e quindi:
./wwwperzl.sh aix61 wget stunnel-5.36-1.aix5.2.ppc

./wwwperzl.sh aix61 rpm stunnel-5.36-1.aix5.2.ppc

2. Configurate stunnel


Create un nuovo file nella posizione indicata sotto (da terminale AS):
EDTF STMF('/qopensys/opt/freeware/etc/stunnel/stunnel.conf')
e inserite i seguenti dati:
client = yes
foreground = no
fips = no

[smtps-wrapper]
accept = 11125
connect = <host_server_di_posta_del_provider>:465
Chiaramente '<host_server_di_posta_del_provider>' è l'host del server di posta del vostro provider (ve lo devo scrivere?)

Questo file di configurazione dice a stunnel di creare un servizio chiamato "stmps-wrapper" che ascolta in locale sulla porta 11125 e rimbalza la connessione sull'indirizzo remoto indicato alla porta 465.

Ora possiamo far partire il servizio:
CALL QP2TERM

stunnel
tutto qua, con WRKACTJOB potete vedere un lavoro in batch lanciato con il vostro utente con funzione "PGM-stunnel", oppure per maggiore controllo potete vedere il lavoro in ascolto sulla porta 11125 (NETSTAT e opzione 3)

3. Cambiate impostazione del server SMTP


Che non deve più inviare a '<host_server_di_posta_del_provider>' ma al nostro servizio, per cui:
CHGSMTPA ALWAUTH (*RELAY) FWDHUBSVR('localhost')

CHGENVVAR ENVVAR('QIBM_SMTP_SERVER_PORT') VALUE('11125') LEVEL(*SYS)

ADDSMTPLE TYPE(*HOSTAUTH) HOSTNAME('localhost') USERNAME('<username>') PASSWORD('<password>')
username e password sono sempre quelli del server remoto

e riavviate il server SMTP:
ENDTCPSVR *SMTP

STRTCPSVR *SMTP

Infine potete testare utilizzando i vostri comandi di posta, io utilizzo MMAIL, per cui:
MMAIL/EMLPTUMSG SUBJECT('test subject') FROMADDR('sender@yourmaildomain.com') TOADDR('receiver@othermaildomain.com') MSGTXT('test message')

4. Impostate il servizio automatico


Qui lascio libera scelta di come e quando far partire il servizio, tengo solo a precisare che è possibile utilizzare il comando:
QSH CMD('stunnel')

ed è tutto.

AGGIORNAMENTO 20/09/2017: aggiunto LEVEL(*SYS) ai comandi ADDENVVAR e CHGENVVAR, in questo modo la modifica è valida sempre.

AGGIORNAMENTO 20/09/2017: descrivo di seguito i passi per indagare il log di invio del servizio di posta, nel caso ci siano problemi (e visto che è un supplizio):
DSPJRN JRN(QZMF) OUTPUT(*OUTFILE) OUTFILE(QTEMP/LOG) OUTMBR(LOG) ENTDTALEN(512)

salva in QTEMP il file LOG che contiene le voci del giornale, e quindi:
RUNQRY *N QTEMP/LOG

per ispezionarlo, visto che non si capisce niente, vi rimando qua:
https://www.ibm.com/support/knowledgecenter/en/ssw_i5_54/rzair/rzairjournal.htm#rzairjournal__smtpclient
Vi serve vedere soprattutto i sottocodici che trovate nel campo:
JOESD      Dati specifici voce - Contenuti variabili

del file di log, se tutto è ok dovreste trovare i codici 88 e 82.

AGGIORNAMENTO 25/09/2018: modificati i comandi di installazione di stunnel per refuso


martedì 16 maggio 2017

Installiamo GhostPDL!

GhostPDL è la "versione completa" del più noto convertitore Ghostscript, permette la traduzione di file scritti in PCL, XPS e SVG, oltre a incorporare Ghostscript stesso, in questo post vediamo come installarlo su PASE utilizzando GCC.

1) Assicuratevi di avere tutto tutto.

AGGIORNAMENTO 25/03/2019: qui potete trovare un nuovo metodo di installazione delle utility supportato da IBM, se volete usare questo metodo, potete saltare al punto 2) e ricordarvi di utilizzare make al posto di gmake.

Chiaramente dovete avere il gcc, potete installare l'ultima versione che trovate disponibile come rpm da installare sul PASE, come descritto precedentemente qui. Dovete installare anche le utility consigliate, in particolare:
  • zip
  • unzip
  • curl
  • zlib
  • make
  • autoconf
  • tar
  • gzip
  • wget (nuova versione)
Deve esistere la directory /QOpenSys/usr/local , altrimenti createla:
CALL QP2TERM

mkdir /QOpenSys/usr/local
Se non l'avete già fatto aggiungete un link a questa directory:
ln -s /usr/local /QOpenSys/usr/local
Assicuratevi anche di aver impostato nel path il percorso in cui i programmi verranno installati:
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 :/QOpensys/usr/local/bin:/usr/local/bin alla lista delle directory.
Se avete modificato le variabili d'ambiente è consigliabile rientrare come nuovo lavoro affinché le modifiche vengano recepite.
Infine assicuratevi di avere installata questa opzione dell'ambiente operativo:
5770SS1    13      Include apertura del sistema
per sapere come installare le opzioni di sistema, qui.

Ora avete tutto, andiamo avanti.

2) Scaricate l'ultima versione dal sito.

Per sapere l'ultima versione potete andare sul sito di Artifex, al momento in cui scrivo l'ultima versione disponibile è la 9.21, per cui la guida si riferirà a questa versione, ma di solito la procedura non cambia, visto che si basa sui soliti strumenti utilizzati per i sistemi UNIX , la famosa triade:

./configure 
make
make install

Prima spostiamoci nell'area download e poi scarichiamo:
cd /QOpenSys/download

wget --no-check-certificate https://github.com/ArtifexSoftware/
 ghostpdl-downloads/releases/download/gs921/ghostpdl-9.21.tar.gz
ora avete il file ghostpdl-9.21.tar.gz che sarà da scompattare, io preferisco tenere i programmi installati "manualmente" nella directory /opt , per cui magari create una directory per GhostPDL e poi scompattate:
mkdir /QOpenSys/opt/ghostpdl

gtar -xvf /QOpenSys/download/ghostpdl-9.21.tar.gz
 -C /QOpenSys/opt/ghostpdl
Dovrebbe essere stato creato il percorso /QOpenSys/opt/ghostpdl/ghostpdl-9.21/

3) Compilate e installate.

Prima spostatevi nel percorso creato:
cd /QOpenSys/opt/ghostpdl/ghostpdl-9.21/
E qui inserite la triade:
./configure
Per configurare l'installazione sul vostro sistema, poi:
gmake
(pausa caffè lunga)
per compilare i programmi, e infine:
gmake install
installa i programmi nella posizione.

N.B.: utilizzo gmake perché make cerca di compilare utilizzando il compilatore di sistema invece che il gcc.

4) Provate

Ora dovreste poter lanciare i programmi da ogni posizione, provate a spostarvi su root e lanciamo il programma per convertire dal PCL:
cd /
gpcl6
se ok dovrebbe mostrare la versione:
Usage: gpcl6 [option* file]+...
Options: -dNOPAUSE -E[#] -h -L<PCL|PCLXL> -K<maxK> -l<PCL5C|PCL5E|RTL> -Z...
         -sDEVICE=<dev> -g<W>x<H> -r<X>[x<Y>] -d{First|Last}Page=<#>
         -H<l>x<b>x<r>x<t> -dNOCACHE
         -sOutputFile=<file> (-s<option>=<string> | -d<option>[=<value>])*
         -J<PJL commands>
Version: 9.21
Build date: Tue May 16 09:51:06 2017
(ok)
PS: la medesima procedura può essere utilizzata anche per installare il solo Ghostscript, trovate i sorgenti qui.

AGGIORNAMENTO 25/03/2019: introdotta nuova metodologia di installazione delle utility mediante repository yum.

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.

lunedì 6 giugno 2016

Come installare software su licenza per i5/OS

Lascio qui questa breve, brevissima guida come riferimento agli articoli, potrebbe essere necessario collegarsi con QSECOFR o altro utente di alto profilo per lanciare i comandi descritti sotto, e comunque sicuramente per lanciare l'installazione.

Poniamo il caso che il programma da installare sia questo:
- codice: 5770SS1;
- opzione: 13;
- descrizione: Include apertura del sistema.

Per prima cosa dobbiamo verificare che il programma non sia già installato, dalla riga di comando digitare
GO LICPGM
e poi
10. Visualizzare i programmi su licenza installati
premere poi
F11=Vis.rel.
e ancora
F11=Vis. opz.
l'opzione risulta ora visibile nella lista:


In questo caso il programma è installato, se invece non compare dobbiamo procurarci il cd di installazione del sistema operativo che contiene il software, inserirlo nel lettore ottico e poi
GO LICPGM
11. Installazione dei programmi su licenza
cercare il codice e l'opzione giusti e
1=Installazione

La procedura prosegue al rilevamento del cd e installazione.


sabato 25 aprile 2015

Even the OVERLAYs shift

If you though that what explained here was referred only to the text fields in a SCS compiled as an AFPDS, you couldn't have been more wrong! Even the graphics is shifted in the same way, here explained a method to solve it:

1. Draw your OVERLAY normally


Draw it with Word, Publisher, Libreoffice, finish it off with Photoshop or Gimp, take it from a pdf file, scan a scribble... you can do whatever you want, the important thing is that the width and height of the page are the same of your printing (A4? 210 × 297 mm or 8.27 × 11.69 inches).

2. Set the printer driver

First of all, you must download it from here:
http://www-01.ibm.com/support/docview.wss?uid=nas8N1011940.
Download it, unzip it in a folder, create a new printer in the Windows Control Panel on a local port of FILE: type, search for the drivers into the folder where you extracted the files, and then install the driver called "Generic InfoPrint 300dpi AFP".

Now, with the right mouse button on the fresh created printer, click on Printing Preferences and then on Advanced. Here the so desired view:


The idea is to set the driver so that it cuts out the sheet's unprintable borders, the same that we inserted in the FRONTMGN parameter:


using millimeters

using inches

in this case inches are more accurate.

 


3. Import in the system

Print your layout on the newly created printer, a window will appear asking to save a file, you can use the name that you want, I'll name it layout.prn for convenience.
Now let's write down some command, first of all , transfer layout.prn on your system IFS, for example into /tmp, then create a new physical file:

CRTPF FILE(QGPL/QOVLSRC) RCDLEN(1024) MAXMBRS(*NOMAX) MBR(*NONE)
 LVLCHK(*NO)

file name, library and length are not so important, only copy layout.prn in a new member:

CPYFRMSTMF
 FROMSTMF('/tmp/layout.prn') 
 TOMBR('/qsys.lib/qgpl.lib/qovlsrc.file/layout.mbr') 
 MBROPT(*REPLACE) 
CVTDTA(*NONE) ENDLINFMT(*FIXED) TABEXPN(*NO) 

and then:

CRTOVL OVL(QGPL/LAYOUT) FILE(QGPL/QOVLSRC) MBR(*OVL)

in order to create the object LAYOUT typed *OVL in QGPL.

4. Place your OVERLAY at the beginning of the printable area





As for the title, place LAYOUT into your printer file:

OVERLAY(QGPL/LAYOUT 0 0) 

the (0,0) position point out the top left corner of the printable area set with the FRONTMGN parameter.


Feels good.


sabato 18 aprile 2015

Anche gli OVERLAY si spostano

Voi speravate che quanto spiegato qui riguardasse solo i campi di testo di un SCS compilato come AFPDS, e invece no! Anche la grafica viene spostata, ecco come rimediare:

1. Disegnate il vostro OVERLAY normalmente


Disegnatelo con Word, Publisher, Libreoffice, rifinitelo con Photoshop o Gimp, prendetelo da un pdf, scannerizzate uno scarabocchio... potete fare come volete, l'importante è che sia delle dimensioni del foglio impostate nella misura della stampa (A4? 210 × 297 mm , 8.27 × 11.69 pollici) .

2. Impostate il driver di stampa

Che poi prima lo dovete scaricare, qui:
http://www-01.ibm.com/support/docview.wss?uid=nas8N1011940.
Una volta scaricato, estraete tutto in una cartella, create una nuova stampante locale dal Pannello di Controllo di Windows su porta di tipo FILE: , cercate i driver nella cartella dove avete estratto i file, dovreste installare il driver "Generic InfoPrint 300dpi AFP".

Ora tasto destro sulla stampante creata, poi cliccate su Proprietà Stampante e poi su Preferenze, ecco l'agognata schermata:


L'idea è di impostare il driver per ritagliare i bordi non stampabili del foglio, cioè gli stessi che abbiamo inserito nel parametro FRONTMGN:

per i millimetri

per i pollici

In questo caso i pollici sono più precisi.

 


3. Importate sul sistema

Stampate il vostro layout sulla nuova stampante creata, vi chiederà di salvare un file in una posizione, salvate con il nome che volete, per comodità lo chiamero layout.prn.
Ora un po' di comandi, innanzitutto, trasferite layout.prn sull'IFS del sistema ad esempio in /tmp, poi create un nuovo file fisico:

CRTPF FILE(QGPL/QOVLSRC) RCDLEN(1024) MAXMBRS(*NOMAX) MBR(*NONE)
 LVLCHK(*NO)

nome, libreria e lunghezza non sono importanti, dovete solo copiare layout.prn in un nuovo membro:

CPYFRMSTMF FROMSTMF('/tmp/layout.prn') 
 TOMBR('/qsys.lib/qgpl.lib/qovlsrc.file/layout.mbr') 
 MBROPT(*REPLACE) CVTDTA(*NONE) ENDLINFMT(*FIXED) TABEXPN(*NO)

e poi:

CRTOVL OVL(QGPL/LAYOUT) FILE(QGPL/QOVLSRC) MBR(*OVL)


per creare l'oggetto LAYOUT di tipo *OVL in QGPL.

4. Posizionate il vostro OVERLAY all'inizio dell'area stampabile





Come da titolo, posizionate LAYOUT nel vostro printer file:

OVERLAY(QGPL/LAYOUT 0 0) 

la posizione (0,0) indica l'angolo in alto a sinistra dell' area stampabile impostata con il parametro FRONTMGN.


Feels good.