Tidak ada sha256sum di MacOS

17

Saya mencoba menggunakan sha256sumdi Sierra Tinggi; Saya mencoba menginstalnya dengan MacPorts:

sudo port install sha256sum

Tidak berfungsi.

Apa yang harus dilakukan?

Rui F Ribeiro
sumber
macOS memiliki, seperti semua BSD, md5utilitas asli .
Kusalananda

Jawaban:

38

Paket CoreUtils juga diterbitkan sebagai formula Brew . Jadi, jika Anda telah menginstal Brew, Anda juga dapat menjalankan:

brew install coreutils

Kemudian tambahkan PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"untuk ~/.bashrc, menjalankan source ~/.bashrcdan Anda sudah selesai.

Mig82
sumber
Selamat atas jawaban pertama Anda di U&L. Saya lebih suka MacPorts daripada Brew, tapi ya, itu adalah alternatif yang layak.
Rui F Ribeiro
1
Ini harus menjadi jawaban yang diterima!
Milkncookiez
1
@Milkncokiez Jika seseorang berhasil meyakinkan saya mengapa pertanyaan macports harus memiliki jawaban yang benar sebagai solusi minuman saya semua telinga.
Rui F Ribeiro
16

Setelah menyelidiki sedikit, saya menemukan tiket dalam perangkat lunak yang tidak terkait dalam perintah GitHub sha256sum hilang di MacOSX , dengan beberapa solusi:

  • menginstal coreutils

    sudo port install coreutils
    

    Menginstal sha256sumdi/opt/local/libexec/gnubin/sha256sum

  • Sebagai solusi lain yang mungkin, menggunakan openssl:

function sha256sum() { openssl sha256 "$@" | awk '{print $2}'; }
  • Yang satu lagi, menggunakan shasumperintah asli untuk MacOS:
function sha256sum() { shasum -a 256 "$@" ; } && export -f sha256sum
Rui F Ribeiro
sumber
1

Jawaban Tambahan untuk Mig82, yang jawabannya menangani awalan-g untuk semua executable di coreutils. Saya menawarkan solusi yang tertutup rapat.

Setelah coreutils menginstal

brew install coreutils

Hasil dalam ls /usr/local/bin/gsha* akan daftar executable g-prefixed:

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

Solusinya adalah membuat tautan simbolis ke tautan yang Anda inginkan menggunakan nama yang tidak diawali (atau mengambil risiko melanggar beberapa program yang bergantung pada BSD yang dapat dieksekusi dan menggunakan opsi Homebrew tanpa awalan g)

Contoh

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
sumber