Iscan per Slackware 14.2

From Studiosg
Jump to: navigation, search

Benvenuti nella pagina Wiki di Simone Giustetti.


Lingue: English - Italiano


Iscan per Slackware 14.2

Image Scan è un programma di acquisizione di immagini tramite uno scanner disponibile per architettura Linux. Sviluppato attivamente per molti anni, il programma sembra essere stato recentemente dismesso da Epson che lo aveva rilevato da Avasys anni fa. In una serie di articoli reperibili su questo stesso sito avevo illustrato come compilare pacchetti funzionanti di Iscan per svariate versioni di Slackware un'ottima e longeva distribuzione di Linux. Il ciclo di sviluppo della nuova versione di Slackware, la 14.2, ha richiesto oltre due anni. Ovviamente il ramo di sviluppo Slackware-current ha introdotto parecchie novità ed aggiornamenti sia tra i pacchetti inclusi che alla configurazione del sistema. Alcune delle novità introdotte hanno causato problemi alla procedura di compilazione di Image Scan. Stavo ragionando ad un aggiornamento degli script di compilazione sin dall'entrata in beta del ramo di sviluppo, ma altre attività hanno sempre avuto la precedenza. Sono rimasto talmente indietro che il primo di Luglio 2016 è stata ufficialmente rilasciata la versione ufficiale 14.2. Mi sono reso conto di aver procrastinato troppo ed ho deciso di conseguenza di recuperare il tempo perduto scrivendo l'articolo che state leggendo.

Quanto illustrato in seguito riassume tutti i consigli ed i suggerimenti delle persone che si sono cimentate con la compilazione di Iscan per Slackware-current nel corso dei mesi scorsi ponendomi domande e fornendo consigli preziosi, patch e correzioni. A 55020, Fabio Castelli di Arch Linux, Rob Van Nues ed altri ancora vanno tutti i miei ringraziamenti.

La Procedura di Compilazione dei Pacchetti. Un Sunto

Generare i pacchetti di Image Scan per Slackware è un processo lineare. Nei miei precedenti articoli sono riportate istruzioni dettagliate per diverse architetture. Di seguito includo invece un sunto che ha le seguenti caratteristiche:

  • Le istruzioni riportate possono essere utilizzate per qualsiasi architettura.
  • Pacchetti funzionanti sono stati generati e provati per architettura i486, amd64 ed arm.
  • I test sono stati eseguiti con uno scanner Epson modello v200. Non posso fornire informazioni per altri modelli dato che non li possiedo.
  • I pacchetti per architettura arm difettano dell'interfaccia grafica, che non viene compilata utilizzando i MakeFile ufficiali. Inoltre non è garantito che il fimware distribuito per architetture i486 e amd64 funzioni con dispositivi arm anzi è molto probabile il contrario.

Iscan consta di 3 pacchetti distinti:

  • Iscan contiene il motore e l'interfaccia grafica del programma.
  • Iscan-data contiene i file per la corretta configurazione di udev e la generazione delle regole per scanner USB o SCSI.
  • Iscan-plugins contiene invece il firmware per alcuni modelli di scanner Epson necessari per il funzionamento con sane: il sottosistema di gestione dei dispositivi di acquisizione di Linux e Unix.

L'installazione dei primi due è obbligatoria, mentre il pacchetto iscan-plugin è opzionale in quanto alcuni modelli non richiedono driver specifici per funzionare con Linux. I primi due pacchetti sono uguali per tutti i dispositivi supportati. Iscan-plugin funziona invece solo per lo scanner collegato al PC perciò lo script che genera il pacchetto deve essere configurato specificamente. Infine vale la pena ricordare che l'ordine con cui vengono installati i pacchetti è rilevante perchè durante l'installazione degli stessi sono create alcune cartelle, diversi collegamenti e vengono generate le regole di udev necessarie al riconoscimento del dispositivo. L'ordine corretto in cui installare i pacchetti è:

  1. Isca-data
  2. Iscan
  3. Iscan-plugin

La Versione Utilizzata

Lo sviluppo del programma ha subito un progressivo rallentamento nel corso degli anni fino ad essersi praticamente fermato con la versione 2.30.1 illustrata in un articolo del Maggio 2015. Sul sito italiano di Epson non ho trovato menzione di Image Scan mentre sia la pagina dei download che il manuale reperibili sul sito inglese fanno riferimento alla versione 2.30.1. Navigando ho trovato menzione di Utsushi che, se ho ben capito, dovrebbe sostituire la versione 3 di Image Scan. Non ho però trovato conferma di questa mia supposizione perciò, in qualità di proprietario di uno scanner perfettamente funzionante, fino a contrordine mugugnerò contro Epson che ha rimosso il supporto a Linux.

Reperire il codice sorgente di iscan è al momento un problema. In rete è possibile reperire diverse versioni del programma:

Per comodità includo i collegamenti agli archivi che ho utilizzato per compilare i pacchetti:

Nel proseguo dell'articolo si utilizzerà la versione 2.30.1 di Image Scan.


La Procedura di Compilazione

Una volta ottenuto il codice sorgente è necessario compilarlo per ottenere pacchetti installabili in Linux. La procedura è lineare e relativamente veloce. Per compilare pacchetti per Slackware Linux si fa ricorso a appositi script che hanno estensione *.SlackBuild. Si tratta di semplici script di shell attraverso cui vengono eseguite nell'ordine corretto tutte le operazioni per ottenere i file binari, la documentazione, le icone e la grafica dal codice sorgente e raccogliere il tutto in unico archivio compresso facilmente gestibile. Nel caso di Image Scan serviranno tre script SlackBuild. Copia degli script utilizzati nel proseguo dell'articolo può essere scaricata dai collegamenti riportati sotto:

Compilazione di Iscan-data

Il primo pacchetto richiesto in fase di installazione è iscan-data, che contiene file di configurazione e gli script per integrare il supporto a udev. Scaricare l'archivio contenete gli script di compilazione nella directory /tmp ad esempio utilizzando il comando wget:

  user@system:~$ cd /tmp
  user@system:/tmp$ wget http://www.giustetti.net/resource/slackbuild/iscan-2.30.1_14.2/iscan-data.tar.gz

Aprire una shell con privilegi di root e decomprimere l'archivio mediante i comandi:

  root@system:/root# cd /tmp
  root@system:/tmp# tar -zxf iscan-data.tar.gz

Verrà creata una directory chiamata "iscan-data" il cui contenuto coinciderà con quello riportato più sotto:

  root@system:/tmp# cd iscan-data
  root@system:/tmp/iscan-data# ls -la
  total 40
  drwxr-x--- 2 root root 4096 May  6  2015 .
  drwxr-x--- 5 root root 4096 May 23  2015 ..
  -rw-r----- 1 root root  373 Nov 26  2010 README
  -rw-r----- 1 root root  324 May 19  2015 doinst.sh
  -rwxr----- 1 root root 8536 May 20  2015 iscan-data.SlackBuild
  -rw-r----- 1 root root  550 May  6  2015 iscan-data.info
  -rw-r----- 1 root root  817 May  6  2015 slack-desc
  -rw-r----- 1 root root  284 May  6  2015 usb_id.patch

Il file iscan-data.info contiene l'indirizzo url da cui scaricare il codice sorgente del programma ed un valore di checksum, il parametro MD5SUM, attraverso cui verificare l'integrità dell'archivio scaricato.

Si proceda scaricando il file contenente il codice sorgente nella directory /tmp/iscan-data e si esegua una verifica di consistenza:

  root@system:/tmp/iscan-data# md5sum iscan-data_1.36.0-1.tar.gz 
  787c0734f7f35335c2f74ae21e3b4a11  iscan-data_1.36.0-1.tar.gz

Se il valore reso dal comando non corrispondesse con quello contenuto nel file iscan-data.info, l'archivio scaricato è probabilmente corrotto ed è necessario procurarsene una copia integra.

Supponendo che il controllo sia stato superato con successo si proceda configurando lo script iscan-data.Slackbuild. È necessario impostare i parametri presenti all'inizio del file perchè siano congruenti con l'archivio contenente il codice sorgente. Si apra il file con un elaboratore di testo e si verifichi che il parametro VERSION riporti la medesima versione dell'archivio scaricato. Le variabili dovrebbero essere impostate come segue:

   PRGNAM="iscan-data"
   VERSION=${VERSION:-"1.36.0-1"}
   VERSION_SHORT=`echo ${VERSION} | awk -F\- '{ print $1 }'`
   BUILD=${BUILD:-2}

Le le caratteristiche del sistema su cui si esegue la compilazione verranno invece impostate dallo script stesso durante l'esecuzione. Ultimata la configurazione salvare lo script ed uscire dal programma di elaborazione testi. si può procedere con la compilazione del pacchetto txz eseguendo i comandi:

  root@system:/tmp/iscan-data# chmod a+rx iscan-data.SlackBuild
  root@dsystem:/tmp/iscan-data# ./iscan-data.SlackBuild

Il primo comando assegna allo script di compilazione i permessi di esecuzione, il secondo lo esegue. Lo script provvederà ad eseguire tutti i passi necessari a creare un nuovo pacchetto ed a salvarlo nella directory /tmp. Per installare il pacchetto si eseguano i comandi:

  root@system:/tmp/iscan-data# cd /tmp
  root@system:/tmp# installpkg iscan-data-1.36.0-i486-1_sg.txz per architetture AMD / Intel a 32 bit.

oppure

  root@system:/tmp# installpkg iscan-data-1.36.0-x86_64-1_sg.txz per architetture AMD / Intel a 64 bit.

e ancora

  root@system:/tmp# installpkg iscan-data-1.36.0-arm-1_sg.txz per architetture Arm.

Ovviamente in tutti i casi saranno necessari i privilegi di root.

Compilazione di Iscan

La medesima procedura potrà essere impiegata per preparare il pacchetto di Image Scan 2.30.1. Si scarichi l'archivio contenente gli script di compilazione nella directory /tmp:

  user@system:~$ cd /tmp
  user@system:/tmp$ wget http://www.giustetti.net/resource/slackbuild/iscan-2.30.1_14.2/iscan.tar.gz

Aprire una shell con privilegi di root e decomprimere l'archivio mediante i comandi:

  root@system:/root# cd /tmp
  root@system:/tmp# tar -zxf iscan.tar.gz

Verrà creata una directory di nome "iscan". Il cui contenuto coinciderà con quello riportato più sotto:

  root@system:/tmp# cd iscan
  root@system:/tmp/iscan# ls -la
  total 52
  drwxr-xr-x 2 root root   4096 Jul 21 00:24 .
  drwxr-xr-x 5 root root   4096 Jul 21 00:24 ..
  -rw-r----- 1 root root    868 Jul 10  2010 README
  -rw-r----- 1 root root    112 May 19  2015 doinst.sh
  -rwxr----- 1 root root  12382 Jun 25 00:26 iscan.SlackBuild
  -rw-r----- 1 root root    185 May  3  2009 iscan.desktop
  -rw-r----- 1 root root    419 May  6  2015 iscan.info
  -rw-r----- 1 root root    340 Dec 16  2012 iscan_png.patch
  -rw-r----- 1 root root   1602 Jun 24 22:47 iscan_pngstream.patch
  -rw-r----- 1 root root    774 May  6  2015 slack-desc

Nella directory sono presenti due patch. La prima iscan_png.patch necessaria per compilare un pacchetto per Slackware 14.1 mentre la più recente iscan_pngstream.patch risolve problemi di compatibilità con la versione della libreria png distribuita con Slackware 14.2. Lo script utilizerà l'una o l'altra in base alla versione della libreria png installata sul sistema. Un ringraziamento a Fabio Castelli di Archlinux per la seconda patch.

Nuovamente l'indirizzo da cui scaricare l'archivio contenente il codice sorgente del programma ed il checksum relativo possono essere reperiti nel file avente estensione *.info: iscan.info.

Dopo aver scaricato tutto quanto nella directory /tmp/iscan e aver eseguito un controllo di consistenza:

  root@system:/tmp/iscan# md5sum iscan_2.30.1-1.tar.gz
  2ba2043973f149d5a2d0468bf76d0030  iscan_2.30.1-1.tar.gz

Si dovranno impostare i valori dei parametri nella parte iniziale dello script iscan.SlackBuild. Tali valori dovrebbero essere impostati come segue:

   BUILD=${BUILD:-2}
   JOB_COUNT=${JOB_COUNT:-" -j4 "}
   PRGNAM="iscan"
   VERSION=${VERSION:-"2.30.1-1"}
   VERSION_SHORT=`echo ${VERSION} | awk -F\- '{ print $1 }'`

L'architettura verrà impostata direttamente dallo script durante l'esecuzione. Ultimata la configurazione si potrà creare ed installare il pacchetto eseguendo i comandi:

  root@system:/tmp/iscan# chmod a+rx iscan.SlackBuild
  root@system:/tmp/iscan# ./iscan.SlackBuild
  root@system:/tmp/iscan# cd /tmp
  root@system:/tmp# installpkg iscan-2.30.1-i486-2_sg.txz per architetture AMD / Intel a 32 bit.

oppure

  root@system:/tmp# installpkg iscan-2.30.1-x86_64-2_sg.txz per architetture AMD / Intel a 64 bit.

e ancora

  root@system:/tmp# installpkg iscan-2.30.1-arm-2_sg.txz per architetture Arm.

Conversione dell'Archivio Contenete il Plug-in

Il terzo ed ultimo componente da installare è il plug-in binario che mette in comunicazione il programma con lo scanner collegato al computer. Non tutti gli scanner Epson hanno bisogno di plug-in: alcuni funzionano nativamente con Linux, mentre altri come il v200 o il v330 non possono farne a meno. I plug-in sono distribuiti da Epson solo in forma binaria nel formato rpm delle distribuzioni Red Hat e derivate che deve pertanto essere convertito. Il file cambia con il variare dell'architettura e dello scanner posseduto. Nel caso dello scanner Epson "Perfection v200 Photo" i pacchetti forniti sono: iscan-plugin-gt-f670-2.1.0-3.c2.i386.rpm e iscan-plugin-gt-f670-2.1.0-3.c2.x86_64.rpm per architetture a 32 e 64 bit rispettivamente.

Scaricare l'archivio contenente gli script di compilazione nella directory /tmp e decomprimerlo:

  user@system:~$ cd /tmp
  user@system:/tmp$ wget http://www.giustetti.net/resource/slackbuild/iscan-2.30.1_14.2/iscan-plugin.tar.gz

Avviare una shell con privilegi di root e decomprimere l'archivio mediante i comandi:

  root@system:/root# cd /tmp
  root@system:/tmp# tar -zxf iscan-plugin.tar.gz

Verrà creata una directory di nome "iscan-plugin". Il cui contenuto coinciderà con quello riportato più sotto:

  root@system:/tmp# cd iscan-plugin
  root@system:/tmp/iscan-plugin# ls -la
  ls -la
  total 36
  drwxr-xr-x 2 root root 4096 Jul 22 20:33 ./
  drwxr-xr-x 5 root root 4096 Dec 20  2013 ../
  -rw-r----- 1 root root 1710 May  6  2015 README
  -rw-r----- 1 root root  237 Jun 24 22:35 doinst.sh
  -rwxr----- 1 root root 9128 May 23  2015 iscan-plugin.SlackBuild*
  -rw-r----- 1 root root 2582 Dec 20  2013 iscan-plugin.info
  -rw-r----- 1 root root  819 Jul 11  2010 slack-desc

Nel file con estensione *.info è possibile reperire i link da cui scaricare i pachetti rpm ed i checksum con cui accertarsi della loro congruenza.

Nel seguito verranno eseguite le operazioni di controllo, conversione ed installazione sia per la versione a 32 che a 64 bit del plug-in. Per quanto concerne le architetture a 32 bit le operazioni da eseguirsi sono:

  root@system:/tmp/iscan-plugin# md5sum iscan-plugin-gt-f670-2.1.2-1.i386.rpm 
  f53dec00730d3d28051edd1fb869de22  iscan-plugin-gt-f670-2.1.2-1.i386.rpm

I valori da assegnare ai parametri dello script iscan-plugin.SlackBuild:

   ARCH=${ARCH:-"i386"}
   BUILD=${BUILD:-2}
   PRGNAM="iscan-plugin"
   PKGNAM=${PRGNAM}
   # Select one among gt-f670, gt-f700, gt-f720, gt-1500, gt-s80, gt-s600, gt-x750
   # gt-x770 or perfection-v330
   PLUGIN="gt-f670"
   RPM_VERSION="1"  # This is the build number used by Epson Fedora Rpm
   TAG=${TAG:-"_sg"}
   VERSION="2.1.2"

Impostati i quali si potranno eseguire le operazioni abituali:

  root@system:/tmp/iscan-plugin# chmod a+rx iscan-plugin.SlackBuild
  root@system:/tmp/iscan-plugin# ./iscan-plugin.SlackBuild
  root@system:/tmp/iscan-plugin# cd /tmp
  root@system:/tmp# installpkg iscan-plugin-gt-f670-2.1.2-i386-1_sg.txz

Nel caso di architetture a 64 bit invece:

  root@system:/tmp/iscan-plugin# md5sum iscan-plugin-gt-f670-2.1.2-1.x86_64.rpm
  8bb27b1f56823d1ec896d4ae7e3ba8f6  iscan-plugin-gt-f670-2.1.2-1.x86_64.rpm

I valori da assegnare ai parametri dello script iscan-plugin.SlackBuild:

   ARCH=${ARCH:-"x86_64"}
   BUILD=${BUILD:-2}
   PRGNAM="iscan-plugin"
   PKGNAM=${PRGNAM}
   # Select one among gt-f670, gt-f700, gt-f720, gt-1500, gt-s80, gt-s600, gt-x750
   # gt-x770 or perfection-v330
   PLUGIN="gt-f670"
   RPM_VERSION="1"  # This is the build number used by Epson Fedora Rpm
   TAG=${TAG:-"_sg"}
   VERSION="2.1.2"

Impostati i quali si potranno eseguire le operazioni di pacchettizazione abiutali:

  root@system:/tmp/iscan-plugin# chmod a+rx iscan-plugin.SlackBuild
  root@system:/tmp/iscan-plugin# ./iscan-plugin.SlackBuild
  root@system:/tmp/iscan-plugin# cd /tmp
  root@system:/tmp# installpkg iscan-plugin-gt-f670-2.1.2-x86_64-1_sg.txz

Non esiste invece un pacchetto rpm per architettura arm. I possessori di dispositivi basati su tale architettura non potranno pertanto collegare ed utilizzare lo scanner.

Compilazione in un Ambiente Chroot

Gli script consentono di compilare pacchetti funzionanti anche in un ambiente chroot. Un vantaggio immediato consiste nella possibilità di compilare pacchetti per la versione 32 bit di slackware in un ambiente multi-libreria opportunamente configurato. Ovviamente sono necessari alcuni piccoli accorgimenti. Quando si avvia uno script SlackBuild in un ambiente chroot a 32 bit è obbligatorio passare allo script stesso l'architettura per cui operare altrimenti verrà automaticamente rilevata quella del sistema principale. La sintassi corretta per lanciare gli script è: export MARCH="i486"; ./<nome_script>. Per cui i comandi dovranno essere modificati come segue:

export MARCH="i486"; ./iscan-data.SlackBuild
export MARCH="i486"; ./iscan.SlackBuild

Non cambia invece la configurazione nè la procedura di installazione.


Configurazione del Sistema

Nel caso in cui l'installazione dei pacchetti abbia seguito l'ordine suggerito: isca-data, iscan, iscan-plugin, non è necessario eseguire alcuna configurazione. Le regole per il sottosistema udev unite al contenuto del file /var/lib/iscan/interpreter sono sufficienti per riconoscere il dispositivo collegato e caricarvi il firmware adatto.

In caso di problemi il file contenente le regole per udev, /etc/udev/rules.d/60-iscan.rules, può essere generato ex novo eseguendo il comando:

  /usr/lib/iscan-data/make-policy-file --force --mode udev --out-file /etc/udev/rules.d/60-iscan.rules

Mentre il file /var/lib/iscan/interpreter può essere modificato manualmente inserendo le librerie specifiche per lo scanner collegato al computer e commentando tutte le altre.

Iscan e Sane / Xsane

Sane è l'acronimo di Scanner Access Now Easy ed è il back-end per gli scanner utilizzato da Linux ed altri Unix. Gli scanner Epson possono essere utilizzati con Sane impostando l'interprete utilizzato nel file /etc/sane.d/dll.conf. Nel caso dello scanner Perfection v200 photo ad esempio bisogna aggiungere epkowa all'elenco. Per alcuni modelli potrebbe essere inoltre necessario aggionrare il file /etc/sane.d/epkowa.conf. Nella quasi totalità dei casi l'operazione risulta superflua, ma se lo scanner non venisse riconosciuto correttamente dal sistema è possibile specificare la tipologia dell'apparecchio: scsi oppure usb e, nel caso di scanner usb, l'identificatore del prodotto nel formato:

  usb <Identificatore USB del produttore> <Identificatore USB del prodotto>

I dati possono essere ottenuti lanciando il comando lsusb quando l'apparecchio acceso è collegato al computer. Epson è identificato dalla stringa 0x04b8. La riga da aggiungere per lo scanner Epson Perfection 1650 ad esempio è:

  usb 0x04b8 0x0110

Iscan e Gimp

Image Scan può essere configurato come plug-in di Gimp, il software di elaborazione delle immagini più usato sotto Linux. L'integrazione consente di lanciare scansioni direttamente dall'interfaccia di Gimp senza dover aprire un programma di acquisizione specifico. L'operazione risulta molto semplice e consiste nella creazione alcuni collegamenti. Nel caso della versione 2.x di Gimp, la versione inclusa in Slackware 14.2 è la 2.8.16, si avvii una shell con privilegi di root e si esegua il comando:

  root@system:/root# ln -s /usr/bin/iscan `gimptool-2.0 --gimpplugindir`/plug-ins/

Nel caso della obsoleta versione 1.2 invece il comando da eseguire sarà:

  root@system:/root# ln -s /usr/bin/iscan `gimptool --gimpplugindir`/plug-ins/


Esempi

Seguono le scansioni di un paio di immagini eseguite con il programma Image Scan funzionante su una distribuzione Slackware Linux a 64 bit.


Conclusioni

Nel corso dell'articolo è stato illustrato come installare il programma Image Scan per Linux sulla recente versione 14.2 di Slackware. Le istruzioni e gli script forniti possono essere utilizzati con piccole modifiche per funzionare su architettura i486, amd64 oppure arm.

Di seguito e' possibile reperire i link ai pacchetti Image Scan 2.30.1 e Image Scan Data 1.36.0, distribuiti nella speranza che possano essere utili:

I plug-in sono distribuiti con una licenza diversa dalla GPL pertanto si rimanda al sito di Epson per effettuarne il download.


Per commenti, consigli, domande inviate una e-mail all'indirizzo studiosg [chiocciola] giustetti [punto] net.


Link esterni





Lingue: English - Italiano