ไม่มี sha256sum ใน MacOS


17

ฉันพยายามใช้sha256sumใน High Sierra; ฉันพยายามติดตั้งด้วยMacPortsเนื่องจาก:

sudo port install sha256sum

มันไม่ได้ผล.

จะทำอย่างไร?


macOS มีเช่นเดียวกับ BSD ทั้งหมดเป็นmd5ยูทิลิตี้ดั้งเดิม
Kusalananda

คำตอบ:


38

แพ็คเกจ CoreUtils ได้รับการเผยแพร่เป็นสูตรการชงด้วย ดังนั้นหากคุณติดตั้ง Brew คุณสามารถเรียกใช้:

brew install coreutils

จากนั้นเพิ่มPATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"ไป~/.bashrcเรียกใช้source ~/.bashrcและคุณทำเสร็จแล้ว


ขอแสดงความยินดีกับคำตอบแรกของคุณใน U&L ฉันชอบ MacPort to Brew แต่ใช่มันเป็นทางเลือกที่ทำงานได้
Rui F Ribeiro

1
นี่ควรเป็นคำตอบที่ยอมรับได้!
Milkncookiez

1
@Milkncokiez หากมีคนจัดการที่จะโน้มน้าวใจฉันว่าทำไมคำถาม macports ควรจะมีคำตอบที่ถูกต้องวิธีการชงฉันเป็นหูทั้งหมด
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

Supplemental Answer to Mig82's ซึ่งคำตอบนั้นรองรับ g-prefix สำหรับ executables ทั้งหมดใน coreutils ฉันเสนอวิธีแก้ปัญหาที่กำหนดขอบเขตให้แน่น

หลังจากติดตั้ง coreutils ด้วย

brew install coreutils

ผลลัพธ์ในls /usr/local/bin/gsha* จะแสดงรายการไฟล์โปรแกรมที่เรียกว่า g-prefixed:

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

วิธีแก้ไขคือการสร้างลิงค์สัญลักษณ์ไปยังชื่อที่คุณต้องการโดยใช้ชื่อที่ไม่มีคำนำหน้า (หรือเสี่ยงต่อการทำลายโปรแกรมบางโปรแกรมที่ต้องใช้โปรแกรมปฏิบัติการ BSD และใช้ตัวเลือกไม่มีคำนำหน้า 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
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.