web-dev-qa-db-fra.com

Quelle est la méthode définitive pour installer/mettre à niveau/configurer la version par défaut de ZSH?

OSX Mountain Lion est livré avec ZSH 4.3.1 dans/bin/zsh. Après le téléchargement, ./configure, make, make check, et make install- version 5.0.0,

which zsh retourne toujours /bin/zsh/

et zsh --version retourne toujours zsh 4.3.11 (i386-Apple-darwin12.0)

Eléments à noter pour aider les répondants:
Je n'ai rencontré aucune erreur lors de l'exécution des commandes d'installation.

Dans /usr/local/bin, j'ai ces 3 fichiers:
-rwxr-xr-x 2 kevinsuttle admin 622K Aug 20 00:59 zsh
-rwxr-xr-x 2 kevinsuttle admin 622K Aug 20 00:59 zsh-5.0.0
-rwxr-xr-x 1 kevinsuttle admin 622K Aug 20 00:50 zsh.old

Mon $PATH
$ echo $PATH
/Users/kevinsuttle/.rbenv/shims:/Users/kevinsuttle/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin

Questions auxquelles j'ai besoin d'une réponse :
1. Quel est le moyen le plus propre d’installer ZSH? (De git, homebrew, source curling?)
2. Est-il important que vous exécutiez les commandes d'installation?
3. Comment puis-je mettre à niveau ou remplacer la version de ZSH fournie avec Mountain Lion?
4. Est-ce pour cela que les gens finissent par utiliser oh-my-zsh ?

25
Kevin Suttle

Vous devez définir votre shell par défaut dans OSX avec:

chsh -s /usr/local/bin/zsh $USER

Relogin à OSX et ça devrait marcher!

Façon Homebrew

Je vous recommande d'utiliser homebrew. Cela rend les choses beaucoup plus faciles. Installez homebrew comme décrit sur http://mxcl.github.com/homebrew/ .

Homebrew installe vos fichiers dans/usr/local/bin, assurez-vous donc que/usr/local/bin précède/usr/bin.

Ajoutez la ligne suivante dans ~/.zshrc et ~/.bashrc:

PATH="/usr/local/bin:/usr/local/sbin:$PATH"

Installez zsh:

brew install zsh

Définissez votre shell par défaut sur zsh:

chsh -s /usr/local/bin/zsh $USER

Enfin, définissez l'autorisation d'utiliser zsh à partir de l'installation de brassage Ajoutez "/ usr/local/bin/zsh" au fichier "/ etc/shells" pour autoriser zsh. Sinon, vous obtiendrez une erreur "Vous n'êtes pas autorisé à exécuter cette application. L'administrateur a défini votre Shell sur une valeur illégale."

echo "/usr/local/bin/zsh" | Sudo tee -a /etc/shells

Je recommande de corriger le bogue de l'environnement zsh sous OSX. Renommez/etc/zshenv en/etc/zshrc

Sudo mv /etc/{zshenv,zshrc}

Relogin à OSX et ça devrait marcher!

Si vous avez des problèmes, tapez:

brew doctor
49
rodeinator

Je vais essayer de répondre à vos questions, mais j’ai le sentiment que c’est mieux pour le superutilisateur

Quel est le moyen le plus propre d’installer ZSH? (De git, homebrew, source curling?)

Acquérir la source comme vous le souhaitez; mais le moyen le plus propre serait de créer une bin privée, j'aime /Users/burhan/bin/, et d'installer des choses là-bas. C’est, à mon avis, la méthode cleanest et simplest puisque vous n’avez pas besoin de vous fier à d’autres bibliothèques/installateurs/magiques.

Est-il important que vous exécutiez les commandes d'installation?

Non, les arguments que vous donnez aux commandes importent - en particulier l'emplacement d'installation cible et le chemin d'accès aux bibliothèques. Si vous ne les fournissez pas (ou ne les définissez pas auparavant dans l'environnement), le programme d'installation placera les éléments dans les chemins d'accès système par défaut. et pour faire that vous devez exécuter le programme d'installation avec des autorisations élevées, c.-à-d. avec Sudo ou en étant connecté en tant que root.

Comment puis-je mettre à niveau ou remplacer la version de ZSH fournie avec Mountain Lion?

Je recommanderais contre la mise à niveau; tout simplement parce que je ne suis pas sûr des effets secondaires que cela aura sur les divers autres scripts qui s’y attendent et qui seront livrés avec la version annoncée. Pour votre santé mentale, je voudrais éviter cela.

Au lieu de cela, si vous le construisez et l'installez dans un bac privé et que vous dirigez votre PATH de manière appropriée; vous pouvez utiliser la version mise à jour sans modifier la version livrée.

2
Burhan Khalid

OK, le commentaire de Burhan m'a rappelé une situation dans laquelle je devais ajouter explicitement le chemin de la version préférée à mon .bash_profile. La version 5.0.0 est dans /usr/local/bin, donc maintenant le $PATH dans mon .bash_profile ressemble à ceci: 

export PATH="$HOME/.rbenv/bin:/usr/local/bin:$PATH"

et maintenant, quand je lance which zsh, je reçois /usr/local/bin/zsh
et zsh --version renvoie zsh 5.0.0 (x86_64-Apple-darwin12.0.0)

Woot! J'espère que cela aidera quelqu'un qui a le même problème. 

2
Kevin Suttle

Dans le passé, la solution que j'ai proposée pour ce type de mise à niveau était à peu près la suivante:

  • Installer la nouvelle version quelque part (dans mon cas, la valeur par défaut pour fink/sw/bin) 
  • Renommez la version installée par le système d'exploitation dans/bin/bin/zsh => /bin/zsh.moved 
  • Configurer un lien symbolique dans/bin vers l'installation/sw/bin/zsh

Cela semblait fonctionner.

Ce que j'aimerais savoir, c'est s'il s'agit d'une solution idiote, et si oui, pourquoi? Merci.

0
essjar