g.extension(1grass) GRASS GIS User's Manual g.extension(1grass)
NAME
g.extension - Maintains GRASS Addons extensions in local GRASS instal-
lation.
Downloads and installs extensions from GRASS Addons repository or other
source into the local GRASS installation or removes installed exten-
sions.
KEYWORDS
general, installation, extensions, addons, download
SYNOPSIS
g.extension
g.extension --help
g.extension [-lcgasdiftoj] extension=name operation=string [url=url]
[prefix=path] [proxy=proxy[,proxy,...]] [branch=branch] [--help]
[--verbose] [--quiet] [--ui]
Flags:
-l
List available extensions in the official GRASS GIS Addons reposi-
tory
-c
List available extensions in the official GRASS GIS Addons reposi-
tory including module description
-g
List available extensions in the official GRASS GIS Addons reposi-
tory (shell script style)
-a
List locally installed extensions
-s
Install system-wide (may need system administrator rights)
-d
Download source code and exit
-i
Do not install new extension, just compile it
-f
Force removal when uninstalling extension (operation=remove)
-t
Operate on toolboxes instead of single modules (experimental)
-o
url refers to a fork of the official extension repository
-j
Generates JSON file containing the download URLs of the official
Addons
--help
Print usage summary
--verbose
Verbose module output
--quiet
Quiet module output
--ui
Force launching GUI dialog
Parameters:
extension=name [required]
Name of extension to install or remove
Name of toolbox (set of extensions) when -t flag is given
operation=string [required]
Operation to be performed
Options: add, remove
Default: add
url=url
URL or directory to get the extension from (supported only on Linux
and Mac)
The official repository is used by default. User can specify a ZIP
file, directory or a repository on common hosting services. If not
identified, Subversion repository is assumed. See manual for all
options.
prefix=path
Prefix where to install extension (ignored when flag -s is given)
Default: $GRASS_ADDON_BASE
proxy=proxy[,proxy,...]
Set the proxy with: "http=<value>,ftp=<value>"
branch=branch
Specific branch to fetch addon from (only used when fetching from
git)
DESCRIPTION
g.extension downloads and installs, removes or updates extensions (ad-
dons) from the official GRASS GIS Addons repository or from user-speci-
fied source code repositories into the local GRASS GIS installation.
Two types of extensions are supported:
• Python scripts: they are installed without the need of compila-
tion or (usually) the need of special dependencies.
• Source code (mostly written in C programming language; may also
be written in C++, Fortran or other languages): while on
MS-Windows systems the requested GRASS GIS extension is down-
loaded pre-compiled from the GRASS GIS site, on Unix based sys-
tems the installation is preceded by the automated download of
the extension’s source code along with subsequent compilation
and installation. This requires a compiler environment to be
present on the user’s computer.
Managing installed extensions
Re-running g.extension on an installed GRASS GIS Addon extension re-in-
stalls the requested extension which may include updates.
To bulk-update all locally installed GRASS GIS extensions, g.exten-
sion.all module is available.
Where the extensions are installed
GRASS GIS extensions are installed by g.extension into a dedicated di-
rectory. The default is a directory for application data and settings
inside the user’s home directory. On GNU/Linux it is $HOME/.grass7/ad-
dons, on MS-Windows it is $APPDATA\GRASS7\addons. The name of the di-
rectory is stored in the GRASS_ADDON_BASE environmental variable.
The flag -s changes this install target directory to the GRASS GIS in-
stallation directory (determined by GISBASE environmental variable,
e.g. /usr/) rather than the default directory defined as per GRASS_AD-
DON_BASE (see also documentation for variables). g.extension checks if
the user has permission to write to GISBASE or GRASS_ADDON_BASE.
The place where the extensions are installed can be customized by the
option prefix. Ensuring that these extensions will be accessible in
GRASS GIS is in this case in the responsibility of the user.
Source code sources and repositories
GRASS GIS Addons repository on GitHub
By default, g.extension installs extensions from the official GRASS GIS
Addons GitHub repository. However, different sources can be specified
using the url option.
Individual extensions can also be installed by providing a URL to the
source code on GitHub or OSGeo Trac. The latter, however, works only
for certain directories where the download of ZIP files was enabled by
project administrators of the trac server.
Local source code directory
Optionally, new extension can be also installed from a source code
placed in a local directory on disk. This is advantageous when develop-
ing a new module. To keep the directory clean, the directory content
is copied to a temporary directory and the compilation happens there.
Local source code ZIP file
In addition, new extension can be also installed from a ZIP file or an
archive file from the TAR family (e.g., .tar.gz or .bz2). The file can
be on disk (specified with a path), or on web (specified by an URL).
Online repositories: GitHub, GitLab and Bitbucket
For well known general hosting services, namely GitHub, GitLab and Bit-
bucket, g.extension supports the download of a repository as a ZIP
file. Here the user only needs to provide a base URL to the repository
web page (with or without the https:// part). For GitLab and Bit-
bucket, the latest source code in the default branch is downloaded, for
GitHub, the latest source code in the master branch is downloaded. Of
course, a user can still specify the full URL of a ZIP file and install
a specific branch or release in this way (ZIP file mechanism will be
applied).
For the official repository, g.extension supports listing available ex-
tensions (addons) and few other metadata-related operations which de-
pend on a specific infrastructure. For other sources and repositories,
this is not supported because it is assumed that other sources contain
only one extension, typically a module or group of modules.
Needed directory layout
When none of the above sources is identified, g.extension assumes that
the source is in a GitHub repository and uses the svn command line tool
to obtain the source code. The expected structure of the repository
should be the same as the one of the official repository.
Non-official sources are supported on all operating systems except for
MS-Windows.
Compilation and installation
On MS-Windows systems, where compilation tools are typically not read-
ily locally installed, g.extension downloads a precompiled executable
from the GRASS GIS project server. On all other operating systems where
it is not difficult to install compilation tools, g.extension downloads
the source code of the requested extension (addon) and compiles it lo-
cally. This applies for both C and Python modules as well as any other
extensions. The reason is that more things such as manual page are com-
piled, not only the source code (which is really necessary to compile
just in case of C).
EXAMPLES
Download and install of an extension
Download and install r.stream.distance into current GRASS installation
g.extension extension=r.stream.distance
This installs the extension from the official repository. For conve-
nience, a shorter syntax can be used:
g.extension r.stream.distance
Download and install of an extension when behind a proxy
Example for an open http proxy:
# syntax: http://proxyurl:proxyport
g.extension extension=r.stream.distance proxy="http=http://proxy.example.com:8080"
Example for a proxy with proxy authentication:
# syntax: http://username:password@proxyurl:proxyport
g.extension extension=r.stream.distance proxy="http=http://username:password@proxy.example.com:8080"
Managing the extensions
List all available extensions in the official GRASS GIS Addons reposi-
tory:
g.extension -l
List all locally installed extensions:
g.extension -a
Removal of a locally installed extension:
g.extension extension=r.stream.distance operation=remove
Installing from various online repositories: GitHub, GitLab, Bitbucket
Simple URL to GitHub, GitLab, Bitbucket repositories:
g.extension r.example.plus url="https://github.com/wenzeslaus/r.example.plus"
Simple URL to GitHub, GitLab, Bitbucket repositories from a specific
(e.g. development) branch:
g.extension r.example.plus url="https://github.com/wenzeslaus/r.example.plus" branch=master
Simple URL to OSGeo Trac (downloads a ZIP file, requires download to be
enabled in Trac):
g.extension r.example url=trac.osgeo.org/.../r.example
In general, when a ZIP file or other archive is provided, the full URL
can be used:
g.extension r.example url=http://example.com/.../r.example?format=zip
Note that because of MS-Windows operating system architecture, only of-
ficial repository is supported on this platform.
Install a specific version from Addons
To install a specific version from GRASS GIS Addons, specify the full
URL pointing to Trac code browser and include Subversion revision num-
ber. For example, this installs the version number 57854 of r.local.re-
lief module:
g.extension r.local.relief url="https://trac.osgeo.org/grass/browser/grass-addons/grass7/raster/r.local.relief?rev=57854&format=zip"
Installing when writing a module locally
Having source code of a GRASS module in a directory on disk one can in-
stall it using:
g.extension r.example url=/local/directory/r.example/
KNOWN ISSUES
Toolboxes in the official repository cannot be downloaded.
On MS-Windows, only the official repository is working because there is
no way of compiling the modules (a Python replacement for Python
scripts should be implemented).
TROUBLESHOOTING
Since extensions have to be compiled on Unix based systems (Linux, Mac
OSX etc.) unless a Python extension is installed, a full compiler en-
vironment must be present on the user’s computer.
ERROR: Please install GRASS development package
While GRASS GIS is available on the user’s computer, the respective de-
velopment package is lacking. If GRASS was installed from a (Linux)
repository, also the grass-dev* package (commonly named "grass-dev" or
"grass-devel", sometimes along with the version number) must be in-
stalled.
SEE ALSO
g.extension.all
GRASS GIS 7 Addons Manual pages
GRASS Addons wiki page.
AUTHORS
Markus Neteler (original shell script)
Martin Landa, Czech Technical University in Prague, Czech Republic
(Python rewrite)
Vaclav Petras, NCSU OSGeoREL (support for general sources, partial
refactoring)
SOURCE CODE
Available at: g.extension source code (history)
Accessed: unknown
Main index | General index | Topics index | Keywords index | Graphical
index | Full index
© 2003-2022 GRASS Development Team, GRASS GIS 7.8.7 Reference Manual
GRASS 7.8.7 g.extension(1grass)
Generated by dwww version 1.14 on Fri Nov 21 21:10:37 CET 2025.