Nenhum sha256sum no MacOS

17

Eu tentei usar sha256sumno High Sierra; Eu tentei instalá-lo com MacPorts, como:

sudo port install sha256sum

Não funcionou.

O que fazer?

Rui F Ribeiro
fonte
O macOS possui, como todos os BSDs, um md5utilitário nativo .
Kusalananda

Respostas:

38

O pacote CoreUtils também é publicado como uma fórmula do Brew . Portanto, se você tiver o Brew instalado, também poderá executar:

brew install coreutils

Em seguida, adicione PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"a ~/.bashrc, execute source ~/.bashrce pronto.

Mig82
fonte
Parabéns pela sua primeira resposta em U&L. Eu prefiro o MacPorts ao Brew, mas sim, é uma alternativa viável.
Rui F Ribeiro
1
Esta deve ser a resposta aceita!
Milkncookiez 22/05/19
1
@Milkncokiez Se alguém conseguir me convencer por que uma pergunta sobre esportes eletrônicos deve ter como resposta correta uma solução de fermentação, sou todo ouvidos.
Rui F Ribeiro
16

Depois de investigar um pouco, encontrei um ticket em um software não relacionado no comando sha256sum do GitHub, que está ausente no MacOSX , com várias soluções:

  • instalando coreutils

    sudo port install coreutils
    

    Ele instala sha256sumem/opt/local/libexec/gnubin/sha256sum

  • Como outra solução possível, usando openssl:

function sha256sum() { openssl sha256 "$@" | awk '{print $2}'; }
  • Como outro, usando o shasumcomando nativo do MacOS:
function sha256sum() { shasum -a 256 "$@" ; } && export -f sha256sum
Rui F Ribeiro
fonte
1

Resposta complementar ao Mig82, cuja resposta lida com o prefixo g para todos os executáveis ​​em coreutils. Eu ofereço uma solução com escopo estreito.

Após a instalação do coreutils com

brew install coreutils

Os resultados ls /usr/local/bin/gsha* listarão os executáveis ​​com prefixo g:

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

A solução é criar um link simbólico para aqueles que você deseja usando um nome não prefixado (ou arriscar quebrar alguns programas que dependem de executáveis ​​BSD e usar a opção Homebrew no prefix no g)

Exemplo

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
fonte