4 คะแนน โดย GN⁺ 2025-04-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Sapphire เป็นตัวจัดการแพ็กเกจยุคถัดไปที่พัฒนาด้วย Rust
  • ได้แรงบันดาลใจจาก Homebrew และใช้ติดตั้งรวมถึงจัดการ Formulae และ Casks
  • ขณะนี้รองรับเฉพาะสถาปัตยกรรม ARM เท่านั้น และอาจมีการเพิ่มการรองรับ x86 ในภายหลัง
  • โครงการประกอบด้วย sapphire-core และ sapphire-cli
  • Sapphire ใช้สัญญาอนุญาต BSD-3-Clause

คำเตือน

  • Sapphire เป็นซอฟต์แวร์เชิงทดลองที่ยังอยู่ระหว่างการพัฒนาอย่างต่อเนื่อง จึงอาจไม่เสถียร
  • หากติดตั้ง cask ที่เคยติดตั้งด้วย brew ใหม่ด้วย Sapphire ตำแหน่งพาธที่ติดตั้งจะต่างออกไปเล็กน้อย และการตั้งค่าของผู้ใช้จะไม่ถูกย้ายให้อัตโนมัติ

⚙️ โครงสร้างโครงการ

  • sapphire-core: ไลบรารีหลัก รับผิดชอบการดึงแพ็กเกจ การแก้ไข dependency การแตกไฟล์ archive และการจัดการ artifact เป็นต้น
  • sapphire-cli: ส่วนติดต่อแบบบรรทัดคำสั่ง โดยไฟล์รัน sapphire จะครอบไลบรารีหลักไว้อีกชั้น

🚀 โรดแมป

  1. อัปเดตแพ็กเกจที่ติดตั้งแล้วด้วยคำสั่ง upgrade
  2. ล้างไฟล์ดาวน์โหลดเก่า เวอร์ชันเก่า และแคช
  3. คำสั่ง Reinstall เพื่อการติดตั้งใหม่อย่างรวดเร็ว
  4. Prefix isolation ที่รองรับ /opt/sapphire เป็นเลย์เอาต์แยกอิสระ
  5. ตัวช่วย sapphire init สำหรับบูตสแตรปสภาพแวดล้อม
  6. แก้บั๊กอย่างต่อเนื่องและปรับปรุงเสถียรภาพ

📦 วิธีใช้งาน

  • แสดงความช่วยเหลือ: sapphire --help
  • อัปเดตเมทาดาทา: sapphire update
  • ค้นหาแพ็กเกจ: sapphire search
  • ดูข้อมูลแพ็กเกจ: sapphire info
  • ติดตั้ง Bottle หรือ Cask: sapphire install
  • สร้างและติดตั้ง Formula จากซอร์ส: sapphire install --build-from-source
  • ถอนการติดตั้ง: sapphire uninstall
  • (จะมาในเร็ว ๆ นี้) sapphire upgrade [--all] , sapphire cleanup, sapphire init

🏗️ การบิลด์จากซอร์ส

ข้อกำหนดเบื้องต้น: ชุดเครื่องมือ Rust รุ่นเสถียร

  • git clone
  • cd sapphire
  • cargo build --release
  • ไบนารี sapphire อยู่ที่ target/release/sapphire และให้นำไปเพิ่มใน PATH

1 ความคิดเห็น

 
GN⁺ 2025-04-23
ความเห็นจาก Hacker News
  • อธิบายว่าโปรเจ็กต์ที่ตนสร้างอาจไม่ได้ดีกว่า Homebrew มากนัก แต่กำลังแก้ปัญหาบางอย่าง เช่น การตั้งค่า relative path

    • การติดตั้ง bottle ส่วนใหญ่ทำงานได้ดี ยกเว้น Rust
    • formula ที่ต้อง build จาก source ทำได้ยาก เนื่องจากข้อมูลจาก JSON API ยังไม่เพียงพอ
    • มีแผนจะแปลงสคริปต์ .rb ให้อยู่ในรูปแบบทั่วไปที่เครื่องอ่านได้มากขึ้น
    • การแปลงจาก .dmg เป็น .app และตัวติดตั้ง .pkg ทำงานได้ดีจากการทดสอบ
    • บน Mac ARM รุ่นใหม่ formula ส่วนใหญ่มี bottle ให้ใช้อยู่แล้ว จึงอาจเป็น package manager ที่สมบูรณ์ได้
    • รู้สึกว่า Ansible มากเกินความจำเป็นสำหรับเครื่องเดียว จึงกำลังพัฒนา package manager และ system manager เชิงประกาศสำหรับ Mac
    • การครอบคำสั่ง Brew ช้าเกินไป จึงเป็นเหตุให้เริ่มโปรเจ็กต์ใหม่
    • ขอบคุณสำหรับการรายงานบั๊ก, issues และ pull request เชิงสร้างสรรค์
  • อธิบายองค์ประกอบหลักสองส่วนของ Homebrew

    • ฝั่งไคลเอนต์ ผู้ใช้ส่วนใหญ่ใช้การติดตั้งแบบ bottle และแพลตฟอร์มที่รองรับ ซึ่งรองรับได้ง่ายด้วยตัวติดตั้ง native code ขนาดเล็ก
    • นักพัฒนา, repository และเครื่อง CI/CD ประกอบกันเป็นโครงสร้างพื้นฐานที่ซับซ้อนของ Homebrew ซึ่งเชื่อมโยงอย่างลึกซึ้งกับ DSL ของ formula
    • Homebrew แยกฝั่งไคลเอนต์ออกจากโครงสร้างพื้นฐานที่ซับซ้อนได้ดี
    • การดาวน์โหลด bottle และ DMG แบบขนานไม่ใช่ข้อจำกัดของสถาปัตยกรรม Homebrew แต่เป็นทางเลือกเพื่อความเกรงใจต่อบริการ
  • มองว่าโปรเจ็กต์นี้สนุกและทำออกมาได้ดี

    • วิจารณ์การคงคำศัพท์ของ Homebrew ไว้
    • เสนอว่าการใช้คำมาตรฐานอย่าง package และ repository น่าจะดีกว่า
  • ตั้งคำถามกับการตั้งเป้าความเท่าเทียมกับ Homebrew

    • เสนอฟีเจอร์เพิ่มเติม เช่น การตรึงเวอร์ชัน
  • เคยเป็นผู้ใช้ MacPorts แต่เปลี่ยนมาใช้ Homebrew และอธิบายเหตุผล

    • มองว่าการสร้าง package manager ตัวใหม่ไม่น่าจะทำให้ได้การตั้งค่าที่ดีกว่า
  • เสนอให้เพิ่มเป้าหมาย, แรงจูงใจ และเหตุผลไว้ใน README

    • จำเป็นต้องอธิบายให้ชัดว่าทำไมจึงต้องการแก้ปัญหาของ Homebrew
  • ยอมรับว่า Homebrew ยังปรับปรุงได้อีก และยินดีต้อนรับความพยายามใหม่

    • แสดงความไม่พอใจต่อเจตนาและแนวคิดของนักพัฒนาและผู้แพ็กเกจของ Homebrew
  • เสนอให้เปลี่ยนชื่อโปรเจ็กต์ให้สั้นลง

    • ชื่อที่สั้นกว่าน่าจะจำง่ายกว่าและให้ความรู้สึกเบากว่า
  • โต้แย้งว่าการเขียนซอฟต์แวร์ขึ้นใหม่ไม่ใช่วิธีที่มีประสิทธิภาพ

    • เสนอว่าการค่อย ๆ เปลี่ยนองค์ประกอบของ Homebrew ทีละส่วนจะดีกว่า
    • อธิบายว่าชื่อ Homebrew มีความสำคัญทางวัฒนธรรมในกลุ่มแฮ็กเกอร์