271 votes

Comment remplacer les utilitaires de Mac OS X par les utilitaires de base de GNU ?

J'ai constaté qu'il y a quelques différences entre la commande utilitaire que j'ai utilisée sur mac OSX et linux. Je veux rendre mon expérience unie.

Comment pourrais-je remplacer tous mes utilitaires mac par des utilitaires GNU ?

313voto

Fuzzy Purple Monkey Points 702

Ceci ajoute des liens symboliques pour les utilitaires GNU avec le préfixe g à /usr/local/bin/ :

brew install coreutils findutils gnu-tar gnu-sed gawk gnutls gnu-indent gnu-getopt grep

Voir brew search gnu pour les autres paquets. Si vous voulez utiliser les commandes sans le préfixe g, ajoutez par exemple /usr/local/opt/coreutils/libexec/gnubin avant les autres répertoires de votre PATH .

$ brew info coreutils
coreutils: stable 8.21
http://www.gnu.org/software/coreutils
Depends on: xz
/usr/local/Cellar/coreutils/8.20 (208 files, 9.4M)
/usr/local/Cellar/coreutils/8.21 (210 files, 9.6M) *
https://github.com/mxcl/homebrew/commits/master/Library/Formula/coreutils.rb
==> Caveats
All commands have been installed with the prefix 'g'.

If you really need to use these commands with their normal names, you
can add a "gnubin" directory to your PATH from your bashrc like:

    PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

Additionally, you can access their man pages with normal names if you add
the "gnuman" directory to your MANPATH from your bashrc as well:

    MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

66voto

xuhdev Points 779

Outre brew install coreutils vous devrez peut-être aussi installer d'autres paquets, tels que gnu-sed , grep :

brew install findutils
brew install gnu-indent
brew install gnu-sed
brew install gnutls
brew install grep
brew install gnu-tar
brew install gawk

Notez que le --with-default-names L'option est supprimé depuis janvier 2019, de sorte que chaque binaire doit être ajouté au chemin s'il doit être utilisé sans l'option g préfixe.

Ancienne référence (lorsque --with-default-names était disponible) : http://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/

26voto

Jonathan Points 767

Je ne suis pas sûr que je recommanderais remplacement de Cependant, vous pouvez les installer sur un chemin différent et les utiliser de cette façon. Dans l'ensemble, si vous venez de Linux et que vous souhaitez accéder à des utilitaires *nix plus "génériques", et un système similaire à apt, alors je vous recommande de regarder dans Macports : http://www.macports.org

Il permet, par exemple, d'utiliser le dernier GCC "générique", par opposition/en plus du GCC inclus par Apple, juste à titre d'exemple.

12voto

fabiomaia Points 171

J'ai écrit un script qui transforme de manière transparente le CLI de MacOS en une expérience fraîche de CLI GNU/Linux en

  • installer les programmes GNU manquants
  • la mise à jour des programmes GNU périmés
  • remplacer les programmes BSD préinstallés par leur implémentation GNU préférée
  • installer d'autres programmes communs aux distributions GNU/Linux populaires

https://github.com/fabiomaia/linuxify

git clone https://github.com/fabiomaia/linuxify.git
cd linuxify/
./linuxify install

Il vous permet également de tout défaire facilement.

./linuxify uninstall

2voto

Jonathan Komar Points 745

Au lieu de définir les variables d'environnement PATH et MANPATH (ce que je recommande), il est également possible d'établir un lien symbolique entre les binaires et un emplacement PATH existant, comme ceci :

Vous devez savoir où Homebrew s'installe. coreutils binaires.

/usr/local/opt/coreutils/bin

Le site /usr/local/opt est l'endroit où Homebrew stocke des fichiers relativement statiques qui sont peu susceptibles de changer entre les mises à jour.

Vous pouvez ensuite créer des liens symboliques à partir de là vers un emplacement qui se trouve déjà dans votre PATH. Il doit s'agir d'un chemin qui est chargé tôt dans le PATH, car le PATH est recherché selon le principe du premier arrivé, premier servi. /usr/local/bin est un bon choix basé sur l'examen de echo $PATH .

which sha256sum # prove it is not on PATH
ln -s /usr/local/opt/coreutils/bin/sha256sum /usr/local/bin/
which sha256sum # prove it is on PATH

De cette façon, il serait presque aussi facile de créer des liens symboliques. Dans certains cas, comme lorsque vous souhaitez un contrôle plus strict, c'est une bonne option plutôt que d'ajouter un répertoire entier à votre PATH et MANPATH.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X