No sha256sum en MacOS

17

Traté de usar sha256sumen High Sierra; Intenté instalarlo con MacPorts, como:

sudo port install sha256sum

No funcionó.

¿Qué hacer?

Rui F Ribeiro
fuente
macOS tiene, como todos los BSD, una md5utilidad nativa .
Kusalananda

Respuestas:

38

El paquete CoreUtils también se publica como fórmulas Brew . Entonces, si tiene Brew instalado, también puede ejecutar:

brew install coreutils

A continuación, añadir PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"a ~/.bashrc, ejecutar source ~/.bashrcy ya está.

Mig82
fuente
Felicidades por tu primera respuesta en U&L. Prefiero MacPorts a Brew, pero sí, es una alternativa viable.
Rui F Ribeiro
1
¡Esta debería ser la respuesta aceptada!
Milkncookiez
1
@Milkncokiez Si alguien logra convencerme de por qué una pregunta de macports debería tener como respuesta correcta una solución de preparación, soy todo oídos.
Rui F Ribeiro
16

Después de investigar un poco, encontré un ticket en un software no relacionado en el comando GitHub sha256sum que falta en MacOSX , con varias soluciones:

  • instalar coreutils

    sudo port install coreutils
    

    Se instala sha256sumen/opt/local/libexec/gnubin/sha256sum

  • Como otra posible solución, usar openssl:

function sha256sum() { openssl sha256 "$@" | awk '{print $2}'; }
  • Como otro más, usando el shasumcomando nativo de MacOS:
function sha256sum() { shasum -a 256 "$@" ; } && export -f sha256sum
Rui F Ribeiro
fuente
1

Respuesta suplementaria a Mig82, cuya respuesta maneja el prefijo g para todos los ejecutables en coreutils. Ofrezco una solución estrecha.

Después de instalar coreutils con

brew install coreutils

Los resultados ls /usr/local/bin/gsha* enumerarán los ejecutables con prefijo g:

  • /usr/local/bin/gsha1sum
  • /usr/local/bin/gsha224sum
  • /usr/local/bin/gsha256sum
  • /usr/local/bin/gsha384sum
  • /usr/local/bin/gsha512sum

La solución es crear un enlace simbólico a los que desea utilizando un nombre sin prefijo (o arriesgarse a romper algunos programas que dependen de ejecutables BSD y usar la opción Homebrew sin prefijo g)

Ejemplo

shaarray=(\
/usr/local/bin/gsha1sum
/usr/local/bin/gsha224sum
/usr/local/bin/gsha256sum
/usr/local/bin/gsha384sum
/usr/local/bin/gsha512sum
)
function installsha() {
  for i in "${shaarray[@]}"
  do
    printf "$i\n" | perl -pe 'printf $_; s/gsha/sha/' | xargs -n 2 ln -s
  done
}
Jonathan Komar
fuente