Нет sha256сум в MacOS


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, но да, это жизнеспособная альтернатива.
Руи Ф Рибейро

1
Это должен быть принятый ответ!
Milkncookiez

1
@Milkncokiez Если кому-то удастся убедить меня, почему у вопроса о мапорте должен быть правильный ответ, то я всегда готов ответить на вопрос.
Руи Ф Рибейру

16

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

  • установка coreutils

    sudo port install coreutils
    

    Устанавливается sha256sumна/opt/local/libexec/gnubin/sha256sum

  • В качестве другого возможного решения, используя openssl:

function sha256sum() { openssl sha256 "$@" | awk '{print $2}'; }
  • Как еще один, используя shasumкоманду native для 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 prefix 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.