[Nix-dev] multiple versions of the same software? / collisions

Guillaume Maudoux (Layus) layus.on at gmail.com
Thu Aug 4 14:07:07 CEST 2016


Hi,

I think you are putting your efforts in the wrong direction.
Nix is not designed to install both python 3.4 and 3.5 in the same
environment.

What it can do however is cache both in the store, so you can get an
environment with python 3.4 with
nix-shell -p python34
and an environment with python 3.5 with
nix-shell -p python35

Nix can provide you with as many different environments at the same time.
You can have a shell with python 3.4 running besides a shell with python
3.5.
You should however not install both in your default environment (nix-env
-i) as it won't work.

May I refer you to https://nixos.org/wiki/Development_Environments ?

Regards,
-- Layus.


Le 03/08/16 à 16:43, Roland Koebler a écrit :
> Hi,
>
> I think I've now found out (at least partially), although this could
> result in a package being installed multiple times.
>
>> It appears that the flag setting only works on already installed packages.
> Yes, and if I use 
>
>     $ nix-env -i python3-3.5.2
>     ...
>     $ nix-env --set-flag priority 10 python3-3.5.2
>     ...
>     $ nix-env -i python3-3.4.5 python3-3.5.2
>     replacing old ‘python3-3.5.2’
>     installing ‘python3-3.4.5’
>     installing ‘python3-3.5.2’
>
> it does not work, since the last command first removes python3-3.5.2,
> then probably the flag is lost, and then installs it again.
>
>> Also I'm not sure, but even if there are name collisions in the user
>> environment, it should still be possible to install both packages but only
>> use one of the names, and then create your name alias to the non-named
>> package. However I do not know how this can be done.
> I think I've found out. The following works:
>
>     $ nix-env -i python3-3.5.2
>     $ nix-env --set-flag priority 10 python3-3.5.2
>     $ nix-env -i -P python3-3.4.5
>
> --preserve-installed / -P was the relevant switch.
> However, this can have some strange side-effects, since -P can
> cause a package to be installed "multiple times":
>
>     $ nix-env -i -P python3-3.4.5
>     ...
>     $ nix-env -i -P python3-3.4.5
>     ...
>     $ nix-env -i -P python3-3.4.5
>     ...
>     $ nix-env -q
>     ...
>     python3-3.4.5
>     python3-3.4.5
>     python3-3.4.5
>     python3-3.4.5
>     ...
>
> This could then be "resolved" by:
>
>     $ nix-env -e python3-3.4.5
>     uninstalling ‘python3-3.4.5’
>     uninstalling ‘python3-3.4.5’
>     uninstalling ‘python3-3.4.5’
>     uninstalling ‘python3-3.4.5’
>     $ nix-env -P -i python3-3.4.5
>     installing ‘python3-3.4.5’
>
> But it still looks strange.
> Is this intentional?
>
> Roland
>
> _______________________________________________
> nix-dev mailing list
> nix-dev at lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev



More information about the nix-dev mailing list