Installazione di QGIS 3 beta su piattaforme macOS tramite MacPorts
In questo articolo verrano descritte le fasi di installazione da terminale, della versione 2.99.0-Master di QGIS su MacBook Pro (macOS High Sierra v. 10.13.2)
L’installazione è stata eseguita interamente da terminale Mac, facendo largo uso del comando <sudo> (switch user do) al fine di poter eseguire compiti d’amministrazione.
Non nascondo di essermi imbattuto in alcune problematiche durante le varie fasi dell’installazione per alcune dipendenze necessarie al processo, ma sono state utili per apprendere nuove nozioni.
<Error: Failed to checksum: ….>
E’ importante ribadire che il comando <sudo> gode di “temporizzazione” e al di fuori del time stabilito, nuove operazioni, richiedono nuovamente l’inserimento della pwd da amministratore.
Fasi di installazione
- Verificare se e’ installato la suite <Xcode> altrimenti procedere con l’installazione. Xcode rappresenta un ambiente di sviluppo integrato (Integrated development environment, IDE) contenente una suite di strumenti utili per lo sviluppo di software per i sistemi macOS.
Questa rappresenta una fase molto consistente in termini di tempo di download, di memoria e di pazienza. Qui mi riferisco alla Version 9.2 (9C40b) ma e’ disponibile la versione 10.13 per High Sierra. Purtroppo la suite non è più in bundle da un po’ di tempo con il sistema operativo, ma è possibile scaricarlo gratuitamente in due modi:
a) dal Mac App Store : https://itunes.apple.com/us/app/xcode/id497799835?mt=12
b)dal sito degli sviluppatori: https://developer.apple.com/xcode/ - Installazione di MacPorts : https://www.macports.org/
Cosa e’ MacPorts : è un’iniziativa della comunità open source che rende facile la compilazione, l’installazione e l’aggiornamento di software open source basato su riga di comando. ll progetto MacPorts attualmente distribuisce 20821 porte, organizzate in 88 diverse categorie.
Installazione di QGIS 3 da terminale
Siamo pronti per procedere con l’installazione da riga di comando:
MBP-di-User:~ User$ sudo port install qgis3
La fase di configurazione della porta genererà una lista di tutte le dipendenze che non siano già presenti in sistema. Nel caso parte di esse fossero già disponibili, la lista sarà minore rispetto a quella di una macchina in versione pulita. Pertanto il tempo di download, e’ direttamente proporzionale alla velocità della connessione e dal numero di pacchetti richiesto.
ATTENZIONE: in caso di errore di checksum, sarà necessario compilare il pacchetto in oggetto singolarmente, per poi riprendere l’installazione generale.
Conclusa l’operazione di installazione, nelle applicazioni si trovera’ una cartella <MacPorts> e relative sottocartelle :
all’interno delle quali troveremo:
- Cartella Python 2.7
— -> IDLE
— -> Python Launcher
- Cartella Python 3.6
— -> IDLE
— -> Python Launcher
- Qgis3.app (pronta per il lancio)
- Cartella Qt5
— -> Assistant
— -> Designer
— -> Linguist
— -> pixeltool
— -> qdbusviewer
— -> qml
NOTA: le fasi di “configure-build-install” richiedono tempo di elaborazione, pertanto anche se il terminale dovesse sembrare privo di vita, necessita non interrompere assolutamente il processo, onde evitare ripercussioni sul buon esito finale dell’installazione.
Qui di seguito le dipendenze mostrate, dopo il lancio dell’ “install” :
— -> Computing dependencies for qgis3
The following dependencies will be installed:
botan
leveldb
libgcrypt
libgpg-error
libyaml
nspr
nss
py36-qscintilla-qt5
py36-yaml
qca-qt5
qca-qt5-ossl
qjson-qt5
qscintilla-qt5
qt5-qtwebkit
qtkeychain-qt5
qwt-qt5
snappy
spatialindex
spatialite
Continue? [Y/n]: Y (return)
Se tutto va per il meglio, la sequenza mostrata dal terminale, sarà simile alla seguente:
— -> Fetching archive for py36-qscintilla-qt5
— -> Attempting to fetch py36-qscintilla-qt5–2.10.3_0.darwin_17.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/py36-qscintilla-qt5
— -> Fetching distfiles for py36-qscintilla-qt5
— -> Verifying checksums for py36-qscintilla-qt5
— -> Extracting py36-qscintilla-qt5
— -> Applying patches to py36-qscintilla-qt5
— -> Configuring py36-qscintilla-qt5
— -> Building py36-qscintilla-qt5
— -> Staging py36-qscintilla-qt5 into destroot
— -> Installing py36-qscintilla-qt5 @2.10.3_0
— -> Activating py36-qscintilla-qt5 @2.10.3_0
— -> Cleaning py36-qscintilla-qt5
— -> Fetching archive for libyaml
— -> Attempting to fetch libyaml-0.1.7_0.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/libyaml
— -> Attempting to fetch libyaml-0.1.7_0.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/libyaml
— -> Installing libyaml @0.1.7_0
— -> Activating libyaml @0.1.7_0
— -> Cleaning libyaml
— -> Fetching archive for py36-yaml
— -> Attempting to fetch py36-yaml-3.12_0.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/py36-yaml
— -> Attempting to fetch py36-yaml-3.12_0.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/py36-yaml
— -> Installing py36-yaml @3.12_0
— -> Activating py36-yaml @3.12_0
— -> Cleaning py36-yaml
— -> Fetching archive for botan
— -> Attempting to fetch botan-1.10.17_2.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/botan
— -> Attempting to fetch botan-1.10.17_2.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/botan
— -> Installing botan @1.10.17_2
— -> Activating botan @1.10.17_2
— -> Cleaning botan
— -> Fetching archive for libgpg-error
— -> Attempting to fetch libgpg-error-1.27_1.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/libgpg-error
— -> Attempting to fetch libgpg-error-1.27_1.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/libgpg-error
— -> Installing libgpg-error @1.27_1
— -> Activating libgpg-error @1.27_1
— -> Cleaning libgpg-error
— -> Fetching archive for libgcrypt
— -> Attempting to fetch libgcrypt-1.8.2_0.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/libgcrypt
— -> Attempting to fetch libgcrypt-1.8.2_0.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/libgcrypt
— -> Installing libgcrypt @1.8.2_0
— -> Activating libgcrypt @1.8.2_0
— -> Cleaning libgcrypt
— -> Fetching archive for nspr
— -> Attempting to fetch nspr-4.18_0.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/nspr
— -> Attempting to fetch nspr-4.18_0.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/nspr
— -> Installing nspr @4.18_0
— -> Activating nspr @4.18_0
— -> Cleaning nspr
— -> Fetching archive for nss
— -> Attempting to fetch nss-3.35_0.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/nss
— -> Attempting to fetch nss-3.35_0.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/nss
— -> Installing nss @3.35_0
— -> Activating nss @3.35_0
— -> Cleaning nss
— -> Fetching archive for qca-qt5
— -> Attempting to fetch qca-qt5–2.1.0.3_1.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/qca-qt5
— -> Attempting to fetch qca-qt5–2.1.0.3_1.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/qca-qt5
— -> Installing qca-qt5 @2.1.0.3_1
— -> Activating qca-qt5 @2.1.0.3_1
— -> Cleaning qca-qt5
— -> Fetching archive for qca-qt5-ossl
— -> Attempting to fetch qca-qt5-ossl-2.1.0.3_1.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/qca-qt5-ossl
— -> Attempting to fetch qca-qt5-ossl-2.1.0.3_1.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/qca-qt5-ossl
— -> Installing qca-qt5-ossl @2.1.0.3_1
— -> Activating qca-qt5-ossl @2.1.0.3_1
— -> Cleaning qca-qt5-ossl
— -> Fetching archive for qjson-qt5
— -> Attempting to fetch qjson-qt5–0.9.0_0.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/qjson-qt5
— -> Attempting to fetch qjson-qt5–0.9.0_0.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/qjson-qt5
— -> Installing qjson-qt5 @0.9.0_0
— -> Activating qjson-qt5 @0.9.0_0
— -> Cleaning qjson-qt5
— -> Fetching archive for snappy
— -> Attempting to fetch snappy-1.1.7_0.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/snappy
— -> Attempting to fetch snappy-1.1.7_0.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/snappy
— -> Installing snappy @1.1.7_0
— -> Activating snappy @1.1.7_0
— -> Cleaning snappy
— -> Fetching archive for leveldb
— -> Attempting to fetch leveldb-1.19_1.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/leveldb
— -> Attempting to fetch leveldb-1.19_1.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/leveldb
— -> Installing leveldb @1.19_1
— -> Activating leveldb @1.19_1
— -> Cleaning leveldb
— -> Fetching archive for qt5-qtwebkit
— -> Attempting to fetch qt5-qtwebkit-5.9.1_0.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/qt5-qtwebkit
— -> Attempting to fetch qt5-qtwebkit-5.9.1_0.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/qt5-qtwebkit
— -> Installing qt5-qtwebkit @5.9.1_0
— -> Activating qt5-qtwebkit @5.9.1_0
— -> Cleaning qt5-qtwebkit
— -> Fetching archive for qtkeychain-qt5
— -> Attempting to fetch qtkeychain-qt5–0.8.0_1.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/qtkeychain-qt5
— -> Attempting to fetch qtkeychain-qt5–0.8.0_1.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/qtkeychain-qt5
— -> Installing qtkeychain-qt5 @0.8.0_1
— -> Activating qtkeychain-qt5 @0.8.0_1
— -> Cleaning qtkeychain-qt5
— -> Fetching archive for qwt-qt5
— -> Attempting to fetch qwt-qt5–6.1.3_2.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/qwt-qt5
— -> Attempting to fetch qwt-qt5–6.1.3_2.darwin_17.x86_64.tbz2 from http://fco.it.packages.macports.org/mirrors/macports-packages/qwt-qt5
— -> Attempting to fetch qwt-qt5–6.1.3_2.darwin_17.x86_64.tbz2.rmd160 from http://fco.it.packages.macports.org/mirrors/macports-packages/qwt-qt5
— -> Installing qwt-qt5 @6.1.3_2
— -> Activating qwt-qt5 @6.1.3_2
— -> Cleaning qwt-qt5
— -> Fetching archive for spatialindex
— -> Attempting to fetch spatialindex-1.8.5_0.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/spatialindex
— -> Attempting to fetch spatialindex-1.8.5_0.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/spatialindex
— -> Installing spatialindex @1.8.5_0
— -> Activating spatialindex @1.8.5_0
— -> Cleaning spatialindex
— -> Fetching archive for spatialite
— -> Attempting to fetch spatialite-4.3.0_1.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/spatialite
— -> Attempting to fetch spatialite-4.3.0_1.darwin_17.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/spatialite
— -> Installing spatialite @4.3.0_1
— -> Activating spatialite @4.3.0_1
— -> Cleaning spatialite
— -> Fetching archive for qgis3
— -> Attempting to fetch qgis3–2.99.20180124_0+postgresql10+python36.darwin_17.x86_64.tbz2 from http://lil.fr.packages.macports.org/qgis3
— -> Attempting to fetch qgis3–2.99.20180124_0+postgresql10+python36.darwin_17.x86_64.tbz2 from http://fco.it.packages.macports.org/mirrors/macports-packages/qgis3
— -> Attempting to fetch qgis3–2.99.20180124_0+postgresql10+python36.darwin_17.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/qgis3
— -> Fetching distfiles for qgis3
— -> Attempting to fetch QGIS-36bf093.tar.gz from https://distfiles.macports.org/qgis3
— -> Attempting to fetch QGIS-36bf093.tar.gz from http://fco.it.distfiles.macports.org/mirrors/macports-distfiles/qgis3
— -> Attempting to fetch QGIS-36bf093.tar.gz from http://mse.uk.distfiles.macports.org/sites/distfiles.macports.org/qgis3
— -> Attempting to fetch QGIS-36bf093.tar.gz from http://lil.fr.distfiles.macports.org/qgis3
— -> Attempting to fetch QGIS-36bf093.tar.gz from http://nue.de.distfiles.macports.org/qgis3
— -> Attempting to fetch QGIS-36bf093.tar.gz from https://github.com/qgis/QGIS/tarball/36bf093
— -> Verifying checksums for qgis3
— -> Extracting qgis3
— -> Applying patches to qgis3
— -> Configuring qgis3
— -> Building qgis3
— -> Staging qgis3 into destroot
— -> Installing qgis3 @2.99.20180124_0+postgresql10+python36
— -> Activating qgis3 @2.99.20180124_0+postgresql10+python36
— -> Cleaning qgis3
— -> Updating database of binaries
— -> Scanning binaries for linking errors
— -> No broken files found.
Nel caso si riscontrassero dei messaggi di errore, puo’ essere che la risorsa per lo scaricamento del pacchetto non sia momentaneamente raggiungibile o fuori servizio. MacPorts tenterà di trovarne una attiva, in caso negativo il processamento sarà terminato.
— -> Verifying checksums for qscintilla-qt5
Error: Failed to checksum qscintilla-qt5: QScintilla_gpl-2.10.3.tar.gz does not exist in /opt/local/var/macports/distfiles/qscintilla
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_qscintilla/qscintilla-qt5/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port qgis3 failed
Altra problematica potrebbe nascere durante la fase di installazione di un pacchetto, che per qualche ragione non andando a buon fine, segnalera’ ancora l’errore. Nel caso, e’ possibile agire cercando di installare la dipendenza singolarmente, come qui di seguito.
MBP-di-User:~ user$ sudo port clean py36-qscintilla-qt5
Password:********
— -> Cleaning py36-qscintilla-qt5
MBP-di-User:~ user$ sudo port install py36-qscintilla-qt5
— -> Computing dependencies for py36-qscintilla-qt5
The following dependencies will be installed: qscintilla-qt5
Continue? [Y/n]: Y (return)
E’ importante eseguire una pulizia della porta relativa (Cleaning), prima di ritentare l’ install della dipendenza, altrimenti il download che non e’ andato a buon fine, non verra’ sostituito e l’errore persisterà, continuando ad ostacolarne l’avanzamento del processo.
sudo port clean py36-qscintilla-qt5
sudo port install py36-qscintilla-qt5(rilancio installazione)
sudo port install qgis3
Il lavoro a questo punto è terminato, è possibile lanciare QGIS 3, direttamente dalla finestra del terminale.
MBP-di-User:applications user$ open /Applications/MacPorts/Qgis3.app
Conclusioni
Durante l’elaborazione del processo mi sono soffermato su alcune problematiche che ho risolto con il contributo e il supporto di John Harrop, il quale ringrazio per la disponibilità mostratami e per la condivisione di utili informazioni che hanno permesso la realizzazione del presente articolo.