¿Cómo reemplazar las utilidades de Mac OS X con las utilidades principales de GNU?

144

Encontré que hay algunas diferencias entre el comando de utilidad que utilicé en el mac OSX y linux. Quiero unir mi experiencia.

¿Cómo podría reemplazar todas mis utilidades mac con las utilidades GNU?

    
pregunta steveyang 22.10.2012 - 16:49

5 respuestas

173

Esto agrega enlaces simbólicos para las utilidades GNU con el prefijo g a /usr/local/bin/ :

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

Vea brew search gnu para otros paquetes. Si desea usar los comandos sin el prefijo ag, instale las fórmulas con --default-names (o --with-default-names si su versión brew es más nueva), o agregue, por ejemplo, /usr/local/opt/coreutils/libexec/gnubin antes de otros directorios en su 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"
    
respondido por el user495470 23.10.2012 - 13:10
36

Además de brew install coreutils , es posible que también debas instalar otros paquetes, como gnu-sed , grep :

brew install findutils --with-default-names
brew install gnu-indent --with-default-names
brew install gnu-sed --with-default-names
brew install gnutls
brew install grep --with-default-names
brew install gnu-tar --with-default-names
brew install gawk

La opción --with-default-names es opcional, activa esto si realmente necesitas usar estos comandos GNU como los predeterminados, o se compilarán con un prefijo g .

Referencia: enlace

    
respondido por el xuhdev 15.04.2013 - 10:30
14

No estoy seguro de recomendar reemplazarlos ; sin embargo, puede instalarlos en una ruta diferente y utilizarlos de esa manera. En general, si viene de Linux y le gustaría tener acceso a más utilidades * genéricas * * y un sistema similar a apt, entonces le recomendaría que busque Macports: enlace

Permite, por ejemplo, usar el último GCC "genérico", a diferencia de / además del GCC incluido de Apple, solo a modo de ejemplo.

    
respondido por el Jonathan 22.10.2012 - 18:06
6

He escrito un guión para hacer exactamente esto! El script se puede ver aquí (o más abajo). Sin embargo, no siempre puedo garantizar que esta publicación reflejará la última versión del script vinculado anteriormente.

Al ejecutar el script, Homebrew se instalará (si no lo está ya), se instalarán todas las utilidades GNU asociadas (si no lo está ya) y la variable PATH se construirá a partir de las utilidades instaladas.

#!/bin/bash

# Install Homebrew (if not already installed)
ruby -e "$(curl -fsSL "\
"https://raw.githubusercontent.com/Homebrew/install/master/install)"

# Install required packages from Homebrew
brew tap homebrew/dupes
brew install coreutils binutils diffutils ed findutils gawk gnu-indent gnu-sed \
  gnu-tar gnu-which gnutls grep gzip screen watch wdiff wget bash gdb gpatch \
  m4 make nano file-formula git less openssh python rsync svn unzip vim \
  --default-names --with-default-names --with-gettext --override-system-vi \
  --override-system-vim --custom-system-icons

# Empty the .bash_path file that holds GNU paths
> ~/.bash_path

# Build PATH variable script in ~/.bash_path
for i in /usr/local/Cellar/*/*/bin; do
  echo 'export PATH="'$i':$PATH"' >> ~/.bash_path
done
for i in /usr/local/Cellar/*/*/libexec/gnubin; do
  echo 'export PATH="'$i':$PATH"' >> ~/.bash_path
done
for i in /usr/local/Cellar/*/*/share/man; do
  echo 'export MANPATH="'$i':$MANPATH"' >> ~/.bash_path
done
for i in /usr/local/Cellar/*/*/libexec/gnuman; do
  echo 'export MANPATH="'$i':$MANPATH"' >> ~/.bash_path
done

# Check if .bash_path is being called from .bash_profile
PATCH='grep "~/.bash_path" ~/.bash_profile'
if [ "$PATCH" == "" ]; then
  # Add Ubuntu-style PS1 to .bash_profile
  cat <<EOF > ~/.bash_profile
export PS1="\[3[1;32m\]\u@\h\[3[0m\]:\[3[1;34m\]\w\[3[0m\]# "
EOF
  # Add .bash_path to .bash_profile
  echo "source ~/.bash_path" >> ~/.bash_profile
fi
    
respondido por el Clay Freeman 06.10.2015 - 07:44
1

He escrito un script que transforma de manera transparente la CLI de macOS en una nueva experiencia de CLI de GNU / Linux por

  • instalando programas GNU que faltan
  • actualizando programas GNU obsoletos
  • reemplazando los programas BSD preinstalados con su implementación GNU preferida
  • instalar otros programas comunes entre las distribuciones populares de GNU / Linux

enlace

$ git clone [email protected]:fabiomaia/linuxify.git
$ cd linuxify/
$ chmod +x linuxify.sh
$ ./linuxify.sh install

También te permite deshacer todo fácilmente.

$ ./linuxify.sh uninstall
    
respondido por el fabiomaia 08.09.2018 - 19:43

Lea otras preguntas en las etiquetas