Brak sha256sum w MacOS

17

Próbowałem użyć sha256sumw High Sierra; Próbowałem go zainstalować MacPorts, ponieważ:

sudo port install sha256sum

To nie działało.

Co robić?

Rui F. Ribeiro
źródło
macOS ma, podobnie jak wszystkie BSD, natywne md5narzędzie.
Kusalananda

Odpowiedzi:

38

Pakiet CoreUtils jest również publikowany jako formuła Brew . Więc jeśli masz zainstalowany Brew, możesz także uruchomić:

brew install coreutils

Następnie dodaj PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"do ~/.bashrc, uruchom source ~/.bashrci gotowe.

Mig82
źródło
Gratulacje od twojej pierwszej odpowiedzi w U&L. Wolę MacPorts niż Brew, ale tak, to realna alternatywa.
Rui F Ribeiro
1
To powinna być zaakceptowana odpowiedź!
Milkncookiez
1
@Milkncokiez Jeśli komuś uda się mnie przekonać, dlaczego pytanie Macports powinno zawierać poprawną odpowiedź na napar, jestem cały.
Rui F Ribeiro
17

Po krótkiej analizie znalazłem bilet w niepowiązanym oprogramowaniu w GitHub w MacOSX brakuje polecenia sha256sum z kilkoma rozwiązaniami:

  • instalowanie coreutils

    sudo port install coreutils
    

    Instaluje się sha256sumw/opt/local/libexec/gnubin/sha256sum

  • Jako inne możliwe rozwiązanie przy użyciu openssl:

function sha256sum() { openssl sha256 "$@" | awk '{print $2}'; }
  • Jeszcze inny, używając shasumpolecenia natywnego dla MacOS:
function sha256sum() { shasum -a 256 "$@" ; } && export -f sha256sum
Rui F. Ribeiro
źródło
1

Uzupełniająca odpowiedź na Mig82, których odpowiedź obsługuje prefiks g dla wszystkich plików wykonywalnych w coreutils. Oferuję ciasne rozwiązanie.

Po zainstalowaniu coreutils

brew install coreutils

Wyniki w ls /usr/local/bin/gsha* pokażą pliki wykonywalne z prefiksem g:

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

Rozwiązaniem jest utworzenie dowiązania symbolicznego do tych, które chcesz, używając nazwy bez prefiksu (lub zaryzykuj uszkodzenie niektórych programów, które opierają się na plikach wykonywalnych BSD i używają opcji Homebrew no prefiks g)

Przykład

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
źródło