Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.
IntroductionThe dlang.org/install.sh script is the official D compiler version manager. It supports DMD, GDC and LDC on FreeBSD, Linux, macOS and Windows (although not every combination is available). It provides a convenient way to fetch and install a D compiler, and switch between installed versions, without requiring administrative privileges. Its features include:
- Maintaining one or more portable compiler installations in a directory of choice (default ~/dlang on POSIX, %USERPROFILE%/dlang on Windows).
- Maintaining the latest stable version of the D package manager, dub.
- Self-updating via install.sh update.
- Supporting nested activation of compilers. Activating a compiler will set up the relevant environment variables, and offer means to revert the modified variables to their prior values.
- Supporting the Fish shell, in addition to Bash-compatible shells.
- Verifying binary signatures via the D keyring (automatic if gpg is installed)
- For dmd, installation of the following versions is supported:
- dmd - latest stable version
- dmd-beta - latest beta version
- dmd-nightly - the latest nightly release
- dmd-<version> - specific official release (including beta releases)
- dmd-branch - experimental compiler branches
- For ldc, installation of the following versions is supported:
- ldc - latest stable version
- ldc-beta - latest beta version
- ldc-latest-ci - latest build version (built on every commit to master by CIs)
- ldc-<version> - specific official release (including beta releases)
- For gdc, installation of the following versions is supported:
- gdc - latest stable version, Linux only
- Downloading the installer
mkdir -p ~/dlang && wget https://dlang.org/install.sh -O ~/dlang/install.shAlternatively, the script can be invoked directly:
curl https://dlang.org/install.sh | bash -sIn this case the installer makes a copy of itself at ~/dlang/install.sh. If no arguments are provided, the latest DMD compiler will be installed.
mkdir %USERPROFILE%\dlang powershell.exe -Command "wget https://dlang.org/install.sh -OutFile %USERPROFILE%\dlang\install.sh"The script is interpreted by bash.exe, which comes as part of MSYS2 as well as Git for Windows. The following two sections provide two alternatives for defining %BASH% so that the POSIX-tailored examples further down will work from the Windows command prompt by replacing "~/dlang/install.sh" with "%BASH% %USERPROFILE%\dlang\install.sh". With either one of these alternatives, this will work:
%BASH% %USERPROFILE%\dlang\install.sh --helpGit for Windows to "C:\Program Files\Git" and 7-Zip to "C:\Program Files\7-Zip". 7z.exe needs to be in the PATH:
set PATH=%PATH%;C:\Program Files\7-Zip set BASH="\Program Files\Git\usr\bin\bash.exe"installation instructions for MSYS2. We'll assume MSYS2 is now available in C:\msys64, which is the default for the 64-bit installer. This will install the necessary decompression tools:
C:\msys64\usr\bin\pacman.exe --sync unzip p7zip set BASH=C:\msys64\usr\bin\bash.exe
~/dlang/install.sh [<command>] [<args>]
- -p --path
- Changes the install location (default ~/dlang on POSIX, %USERPROFILE/dlang on Windows)
- Produces more verbose output
- Displays a help page
~/dlang/install.sh install <compiler>Download and install a D compiler. By default the latest release of the DMD compiler is selected.
- -a --activate
- Prints the path to the activate script
- Installs the latest version of a compiler
- Installs a specific version of a compiler (e.g. dmd-2.071.1, ldc-1.1.0-beta2)
- Installs the latest beta version of a compiler
- Installs DMD nightly
- Installs specific DMD nightly
~/dlang/install.sh ~/dlang/install.sh dmd ~/dlang/install.sh install dmd ~/dlang/install.sh install dmd-2.071.1 ~/dlang/install.sh install ldc-1.1.0-beta2 ~/dlang/install.sh install dmd-beta ~/dlang/install.sh install dmd-nightlyAn installed compiler can be used directly, but the exact path varies between compiler vendors:
~/dlang/<installed-dmd-compiler>/bin64/dmd ~/dlang/<installed-ldc-compiler>/ldc2Therefore it is recommended to activate a compiler after installation. -a or --activate option to the install command will print the path to the appropriate activation script: either a shell script or a Windows batch file.
~/dlang/install.sh install <compiler> -aThis will show where to find the activate script (or activate.fish for users of the Fish shell.) The script should be executed in the current shell:
source ~/dlang/<installed-compiler>/activateThis will set up the PATH, LIBRARY_PATH, LD_LIBRARY_PATH, DMD, DC, and PS1 environment variables. It's also possible to combine this into one command:
source $(~/dlang/install.sh dmd -a)The activated compiler can be removed from the current session by restoring the previous environment:
%BASH% %USERPROFILE%\dlang\install.sh install <compiler> -aThis will show where to find the activate.bat file. Calling it will change the PATH environment variable, and show how to restore its prior value.
%USERPROFILE%\dlang\<installed-compiler>\activate.batTo install and activate %COMPILER% in a batch file, this will do:
set INSTALL=%BASH% %USERPROFILE%\dlang\install.sh install %COMPILER% %INSTALL% for /f "usebackq tokens=*" %%a in (%INSTALL% -a) do call %%a
~/dlang/install.sh uninstall <compiler>
~/dlang/install.sh uninstall dmd ~/dlang/install.sh uninstall dmd-2.071.1 ~/dlang/install.sh uninstall ldc-1.1.0-beta2