Pas de sha256sum sous MacOS

17

J'ai essayé d'utiliser sha256sumdans High Sierra; J'ai tenté de l'installer avec MacPorts, comme:

sudo port install sha256sum

Cela n'a pas fonctionné.

Que faire?

Rui F Ribeiro
la source
macOS possède, comme tous les BSD, un md5utilitaire natif .
Kusalananda

Réponses:

38

Le package CoreUtils est également publié sous forme de formules Brew . Donc, si vous avez installé Brew, vous pouvez également exécuter:

brew install coreutils

Puis ajouter PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"à ~/.bashrc, exécuter source ~/.bashrcet vous avez terminé.

Mig82
la source
Félicitations pour votre première réponse en U&L. Je préfère MacPorts à Brew, mais oui, c'est une alternative viable.
Rui F Ribeiro
1
Cela devrait être la réponse acceptée!
Milkncookiez
1
@Milkncokiez Si quelqu'un parvient à me convaincre pourquoi une question macports devrait avoir comme réponse correcte une solution de brassage, je suis à l'écoute.
Rui F Ribeiro
16

Après avoir enquêté un peu, j'ai trouvé un ticket dans un logiciel sans rapport avec la commande GitHub sha256sum manquante dans MacOSX , avec plusieurs solutions:

  • installation de coreutils

    sudo port install coreutils
    

    Il s'installe sha256sumà/opt/local/libexec/gnubin/sha256sum

  • Comme autre solution possible, en utilisant openssl:

function sha256sum() { openssl sha256 "$@" | awk '{print $2}'; }
  • Encore une autre, en utilisant la shasumcommande native de MacOS:
function sha256sum() { shasum -a 256 "$@" ; } && export -f sha256sum
Rui F Ribeiro
la source
1

Réponse supplémentaire à Mig82, dont la réponse gère le préfixe g pour tous les exécutables dans coreutils. J'offre une solution à portée limitée.

Après l'installation de coreutils avec

brew install coreutils

Les résultats dans ls /usr/local/bin/gsha* listeront les exécutables préfixés en g:

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

La solution consiste à créer un lien symbolique vers ceux que vous souhaitez en utilisant un nom non préfixé (ou prendre le risque de casser certains programmes qui s'appuient sur les exécutables BSD et utilisent l'option no g prefix Homebrew)

Exemple

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
la source