У MacOS немає sha256sum


17

Я намагався використовувати sha256sumу Високій Сьєррі; Я намагався встановити його за допомогою MacPorts:

sudo port install sha256sum

Це не спрацювало.

Що робити?


macOS має, як і всі BSD, вбудовану md5утиліту.
Кусалаланда

Відповіді:


38

Пакет CoreUtils також публікується як формули Brew . Тож якщо у вас встановлений Brew, ви також можете просто запустити:

brew install coreutils

Потім додати PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"до ~/.bashrc, бігти , source ~/.bashrcі ви зробили.


Вітаю вас з першою відповіддю на U&L. Я віддаю перевагу MacPorts Brew, але так, це життєздатна альтернатива.
Rui F Ribeiro

1
Це має бути прийнята відповідь!
Milkncookiez

1
@Milkncokiez Якщо комусь вдасться переконати мене, чому питання макспортів повинно мати правильну відповідь, як заварювати рішення, я всі вуха.
Rui F Ribeiro

17

Трохи дослідивши, я знайшов квиток у незв'язаному програмному забезпеченні в команді GitHub sha256sum, відсутній у MacOSX , з кількома рішеннями:

  • встановлення coreutils

    sudo port install coreutils
    

    Він встановлюється sha256sumв/opt/local/libexec/gnubin/sha256sum

  • Як інше можливе рішення, використовуючи openssl:

function sha256sum() { openssl sha256 "$@" | awk '{print $2}'; }
  • Як ще одна, використовуючи shasumкоманду, рідну для MacOS:
function sha256sum() { shasum -a 256 "$@" ; } && export -f sha256sum

1

Додатковий відповідь до Mig82, відповідь якого обробляє префікс g для всіх виконуваних файлів у coreutils. Я пропоную чітко розроблене рішення.

Після установки coreutils з

brew install coreutils

Результати в ls /usr/local/bin/gsha* буде перелічити g-префікси виконуваних файлів:

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

Рішення полягає в тому, щоб створити символічне посилання на ті, які ви хочете використовувати за допомогою нефіксованого імені (або ризикніть зламати деякі програми, які покладаються на виконувані файли BSD та використовувати опцію no g-префіксу Homebrew)

Приклад

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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.