Je voudrais installer GHC 7.8.1, mais je voudrais lui atsortingbuer différentes commandes, afin de ne pas entrer en conflit avec 7.6.3. Par exemple:
runghc
avec runghc7.8.1
ghci
avec ghci7.8.1
Ou similaire. (ghci serait le plus important, pour les trous typescripts.) En gros, je veux pouvoir utiliser les GHC 7.8 et 7.6, donc s’il y a un moyen plus direct de le faire, dites-le moi (problème AB.)
Note: Ubuntu 13.10
Parce que vous êtes sur un système de type Unix (Ubuntu), vous pouvez faire ce qui suit:
$HOME/ghc7.8.1
ou dans un sous-dossier de /opt
comme /opt/ghc7.8.1
– je préférerais le dernier si vous êtes le seul l’utilisateur de votre ordinateur et le premier si ce n’est pas le cas). Voir cet article de wikipedia pour des explications sur la structure de répertoires unix. Téléchargez le code source dans ce dossier et suivez les instructions d’installation :
Dans configure setp c’est important, que vous définissiez le --prefix
sur le dossier que vous avez choisi ci-dessus (si vous ne le faites pas, ghc sera installé dans /usr/local/
ce que vous ne voulez pas)! Par exemple:
./configure --prefix=/opt/ghc7.8.1
Après l’installation, cherchez le dossier contenant les binarys créés (il s’appellera bin
si vous n’avez pas utilisé un autre nom pour bindir
). Imaginons que ce dossier est /opt/ghc7.8.1/bin
.
Vous avez maintenant deux possibilités:
Solution pour créer des liens symboliques : Créez des liens symboliques dans un dossier qui se trouve dans votre $PATH
pointant vers les fichiers binarys créés (par exemple /usr/local/bin
ou $HOME/bin
– j’utiliserais le premier, si vous êtes le seul utilisateur sur votre ordinateur et le second si, si vous ne l’êtes pas). Par conséquent, vous devez utiliser l’outil de ligne de commande ln
. Par exemple:
sudo ln -s -T /opt/ghc7.8.1/bin/runghc /usr/local/bin/runghc7.8.1
Après cette commande, il y a un fichier /usr/local/bin/runghc7.8.1
pointant vers le binary /opt/ghc7.8.1/bin/runghc
. Exécuter /usr/local/bin/runghc7.8.1
tapant runghc7.8.1
va maintenant exécuter le binary runghc
créé dans /opt
(Note: sudo
n’est pas nécessaire si vous créez votre lien symbolique dans $HOME/bin
– il est juste nécessaire parce que root
peut créer des fichiers sous /usr
)
Solution avec alias bash : écrivez vos $HOME/.bash_aliases
(@Others: vous pouvez aussi choisir $HOME/.bashrc
ou $HOME/.profile
fonction de votre système / préférence) la ligne suivante:
alias runghc7.8.1='/opt/ghc7.8.1/bin/runghc'
runghc7.8.1
maintenant runghc7.8.1
dans votre terminal est un raccourci (alias) pour taper /opt/ghc7.8.1/bin/runghc
et exécuter ce binary.
Notez qu’avec cette solution, taper runghc7.8.1
ne fonctionnera que lorsque vous l’aurez tapé dans votre terminal. Il y a des cas où cela ne fonctionne pas (par exemple, appeler runghc7.8.1
dans un script).