On 04/09/14 22:51, Jordi Sayol via Digitalmars-d-announce wrote:
On Debian testing (mate desktop) without ~/.dvm dir, dmd still not found:
----
$ dvm install dvm
$ dvm install 2.065.0
Fetching: http://ftp.digitalmars.com/dmd.2.065.0.zip
[========================================>] 50581/49347 KB
Installing: dmd-2.065.0
$ dvm use 2.065.0
$ dmd
bash: dmd: command not found
----
BTW Is there a reason to mandatory copy dvm to ~/.dvm/bin directory?
Yes. DVM works like this:
* When invoking "dvm" on the command line a bash function is actually called
* The bash function will forward to the "dvm" executable located in
~/.dvm/bin
* When running "dvm use 2.065.0" the executable it will write a shell
script setting up the PATH variable to point to path of the install
compiler with the specified version. In this case which will be
~/.dvm/compilers/dmd-2.065.0/linux/bin
* When the "dvm" executable has finished running the "dvm" function will
source the shell script which modifies the PATH variable in the current
session
This is the only why I found to propagate environment variables from a
child process (dvm) to the parent process (the shell)
When running "dvm install dvm", dvm will do the following:
* Setup the necessary directory structure in "~/.dvm"
* Install the shell script containing [1] the "dvm" bash function to
~/.dvm/scripts
* Copy itself to ~/.dvm/bin
* Add a couple of lines to .bash_profile or .bashrc that sources the
"dvm" script:
if [ -s ~/.dvm/scripts/dvm ] ; then
. ~/.dvm/scripts/dvm
fi
I wanted the installation process to be as easy as possible, what's why
I wrote an installer in the tool. Yes I know, that's not how most tools
work like. But it do require some special setup and most tools don't
require.
[1] https://github.com/jacob-carlborg/dvm/blob/master/resources/dvm.sh
--
/Jacob Carlborg