No sha256sum en MacOS


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á.


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

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
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.