Installer QGIS sur Windows en ligne de commande (OSGeo4W et Powershell)#
Date de publication initiale : 3 juillet 2020
L'installation et la mise à jour de QGIS peuvent être rébarbatives, notamment sous Windows où il n'est pas possible de profiter d'une mise à jour via une simple ligne de commande (apt
mon amour )... Il y a quelques mois de cela, je cherchais à automatiser l'installation et la configuration de QGIS sur Windows et j'avais donc creusé du côté de l'installateur de l'OSGeo.
J'avais abouti à un petit script Powershell et vu que j'avais trouvé cela pratique, je me l'étais mis de côté sur Gist. Fidèle au Geotribu Spirit , pourquoi ne pas partager le résultat et (surtout) la démarche ?
Prérequis
- une machine avec Windows et Powershell
- droits administrateur
- droits d'exécution de scripts, comme pour les environnements virtuels Python (voir la doc Microsoft ou cet article) :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
- optionnellement : Git
Comment L'Installateur (CLI) fonctionne#
On l'oublie souvent (ou on ne le sait tout simplement pas, comme moi pendant de longues et heureuses années) mais les installateurs sont d'abord des outils en ligne de commande (des CLIs comme disent les grandes personnes) qui proposent en prime une interface graphique... qui est rarement mieux qu'un concours de clics sur Suivant
.
--help ex machina#
En regardant l'aide de l'exécutable, on s'aperçoit qu'il est possible de passer un certain nombre d'arguments :
Ce qui nous donne :
Command Line Options:
-b --disable-buggy-antivirus Disable known or suspected buggy anti virus
software packages during execution.
-g --upgrade-also also upgrade installed packages
-o --delete-orphans remove orphaned packages
-n --no-shortcuts Disable creation of desktop and start menu
shortcuts
-N --no-startmenu Disable creation of start menu shortcut
-d --no-desktop Disable creation of desktop shortcut
-r --no-replaceonreboot Disable replacing in-use files on next
reboot.
-k --autoaccept Accept all licenses
-l --local-package-dir Local package directory
-m --menu-name Menu name
-a --arch architecture to install (x86_64 or x86)
-R --root Root installation directory
-q --quiet-mode Unattended setup mode
-M --package-manager Semi-attended chooser-only mode
-h --help print help
-p --proxy HTTP/FTP proxy (host:port)
-x --remove-packages Specify packages to uninstall
-c --remove-categories Specify categories to uninstall
-P --packages Specify packages to install
-C --categories Specify entire categories to install
-D --download Download from internet
-L --local-install Install from local directory
-t --test Use setup_test.ini
-A --advanced Advanced install (as opposed to Express)
-S --safe Safe Mode (Skip some admin actions)
-s --site Download site
-O --only-site Ignore all sites except for -s
Avec tout ça, on a de quoi faire un joli script dont l'idée est de :
- télécharger l'installateur
- l'utiliser pour télécharger les packages de QGIS LTR
- l'utiliser pour installer les packages
En avant !
Scriptons#
A l'instar de beaucoup de choses dans Windows, le langage de script Powershell a une syntaxe très verbeuse plutôt lourde, du genre "Pourquoi faire simple quand on peut faire compliqué ?"... mais vient avec une interface graphique permettant de se repérer : ISE.
Je détaille ici les étapes du script mais en cas d'empressement, voir la partie Utiliser le script.
Sudoku#
Tout d'abord, on s'assure que le script est bien lancé en mode administrateur :
Télécharger l'installateur#
Histoire de respecter les bonnes pratiques du système, on va télécharger l'installateur dans le dossier Téléchargements
de l'utilisateur :
# on se met le chemin actif de côté pour y revenir en toute fin
$starter_path = Get-Location
# on se déplace dans le dossier téléchargement de l'utilisateur
Set-Location -Path "$env:USERPROFILE/Downloads"
Une fois au bon endroit, on télécharge l'installateur, sauf s'il existe déjà dans le dossier :
if (-Not (Test-Path "osgeo4w-setup-x86_64.exe" -PathType leaf )) {
Invoke-WebRequest -Uri "https://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe" -OutFile "osgeo4w-setup-x86_64.exe"
}
Lancer le téléchargement et l'installation#
Après un avoir regardé de plus près les options de l'installateur OSGeo4W, voici à quoi va ressembler notre commande que j'ai détaillée et mis en multi-lignes pour que ce soit plus lisible :
.\osgeo4w-setup-x86_64.exe `
--advanced ` # correspond à l'option Advanced Install
--arch x86_64 ` # on est en 2020...
--autoaccept ` # accepte toutes les licences
--delete-orphans ` # supprime les paquets inutilisés
--no-desktop ` # ne pas créer d'icône sur le bureau
--packages qgis-ltr-full ` # le paquet (en fait le meta-paquet) souhaité
--quiet-mode ` # ne pas demander d'action de l'utilisateur
--site http://download.osgeo.org/osgeo4w ` # le serveur principal d'où télécharger les paquets
--site http://osgeo4w-oslandia.com/mirror # le miroir d'Oslandia
--upgrade-also # met à jour les paquets
Concrètement, les packages sont téléchargés dans le dossier temporaire de l'utilisateur (classiquement : C:\Users\USERNAME\AppData\Local\Temp\{url_site}
) puis sont décompressés et déplacés vers le dossier habituel de l'installateur : C:\OSGeo4W64
. Il est possible de modifier ces deux emplacements via respectivement les options --local-package-dir
et --root
.
Serveurs (sites) de téléchargement
L'option -s/--site
est répétable afin de pouvoir passer plusieurs serveurs (comme dans l'interface graphique) et les URLs doivent faire partie de ce fichier https://download.osgeo.org/osgeo4w/mirrors.lst
.
Utiliser le script#
Maintenant qu'on a compris les différentes étapes, voici comment utiliser le script que j'ai publié facilement.
1. Récupérer le script#
Si vous avez installé Git, lancer le terminal Powershell :
# cloner le script
git clone https://gist.github.com/6303dc5eb941eb24be3e27609cd46985.git qgis-deploy-win
# entrer dans le répertoire ainsi créé
cd .\qgis-deploy-win\
Sinon il est possible de télécharger le script via ce lien et dézipper le tout.
En listant le contenu avec un bon ls
des familles, voici ce que l'on obtient :
2. Exécuter le script#
Lancer le terminal en mode administrateur cette fois et exécuter le script :
Le téléchargement des packages se lance :
Puis l'installation :
Le temps d'un café (ou d'une bière) et hop, on est prêt pour de nouvelles aventures avec QGIS !
/ →
Conclusion#
On voit donc qu'il est possible d'automatiser l'installation et le déploiement de QGIS, mais aussi de tous les logiciels et packages auxquels l'installateur OSGeo4W donne accès.
Auteur·ice#
Julien MOURA#
Géographe "sigiste" de formation, j'ai travaillé sur différentes thématiques et types de structures : gestion des déchets en milieu urbain à Madagascar, foncier d'intérêt général auprès de l'EPF de La Réunion, organisation et la résilience urbaine face aux risques naturels à Lima pour l'IRD, gouvernance et ouverture des données à Isogeo.
Je travaille désormais à Oslandia.
Féru des dynamiques de contributions, je participe activement à Geotribu depuis fin 2011.
Commentaires
Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.
Propulsé par Isso.
Ce contenu est sous licence Creative Commons BY-NC-SA 4.0 International