2 คะแนน โดย GN⁺ 2023-12-31 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Gentoo ยังคงสถานะของการเป็น ดิสโทรแบบอิงซอร์ส ไว้ แต่เพิ่มการดาวน์โหลดและติดตั้งแพ็กเกจไบนารีอย่างเป็นทางการโดยตรง เพื่อความสะดวกในการติดตั้งและสำหรับฮาร์ดแวร์ที่ช้า
  • ขอบเขตที่ให้บริการแตกต่างกันตามสถาปัตยกรรม โดย amd64 และ arm64 สามารถรับแพ็กเกจมากกว่า 20GB และแพ็กเกจ Gentoo stable ที่อัปเดตรายวันได้
  • การติดตั้ง stage ใหม่จะรวมการตั้งค่า repository ไบนารีไว้แล้ว ส่วนการติดตั้งเดิมสามารถใช้งานได้โดยเพิ่มไฟล์ตั้งค่าใน /etc/portage/binrepos.conf/
  • แพ็กเกจทางการอยู่ใน รูปแบบ GPKG ที่รองรับการเซ็น และหากตรวจสอบไม่ผ่านจะถูกปฏิเสธการติดตั้ง แต่ในการตั้งค่าเริ่มต้นอาจยังอนุญาต XPAK ที่ไม่มีลายเซ็นเพื่อความเข้ากันได้
  • หากใช้ ชุด USE flag ที่ต่างจากค่าเริ่มต้นของโปรไฟล์ จะใช้แพ็กเกจไบนารีตรง ๆ ได้ยาก จึงต้องผสมการคอมไพล์ในเครื่องสำหรับส่วนที่จำเป็น

Gentoo ให้บริการแพ็กเกจไบนารีอย่างเป็นทางการ

  • Gentoo นำความสามารถ แพ็กเกจไบนารี ที่ Portage รองรับมานานแล้ว มาให้บริการในรูปแบบดาวน์โหลดอย่างเป็นทางการและติดตั้งโดยตรง
  • เป้าหมายคือช่วยลดเวลาทำงานบนฮาร์ดแวร์ที่ช้า และเพิ่มความสะดวกในการติดตั้งและอัปเดตโดยรวม
  • Gentoo ยังคงเป็นดิสโทรแบบอิงซอร์สเหมือนเดิม และสามารถใช้การ build จากซอร์สร่วมกับแพ็กเกจไบนารีได้

ขอบเขตที่ให้บริการตามสถาปัตยกรรม

  • สถาปัตยกรรมส่วนใหญ่จำกัดอยู่ที่ ระบบแกนหลัก และขอบเขตการอัปเดตรายสัปดาห์
  • amd64 และ arm64 ให้ชุดแพ็กเกจที่กว้างกว่า
    • มีแพ็กเกจมากกว่า 20GB บน mirror
    • รวม LibreOffice, KDE Plasma, Gnome, Docker และอื่น ๆ
    • แพ็กเกจ Gentoo stable อัปเดตรายวัน

วิธีตั้งค่าตามสภาพแวดล้อมการติดตั้ง

  • หากต้องการใช้แพ็กเกจไบนารีในการติดตั้ง Gentoo ที่มีอยู่แล้ว ต้องสร้างไฟล์ตั้งค่าใน /etc/portage/binrepos.conf/
  • การติดตั้งแบบอิง stage ใหม่มี /etc/portage/binrepos.conf/gentoobinhost.conf รวมมาให้อยู่แล้ว
    • หากจำเป็น สามารถเปลี่ยน src-uri เป็น URI ของไดเรกทอรีที่เกี่ยวข้องบน local mirror ได้
    • ตัวอย่างการอัปเดตคือ emerge -uDNavg @world

เกณฑ์การ build สำหรับ amd64 และ arm64

  • แพ็กเกจไบนารีใต้ amd64/binpackages/17.1/x86-64 ถูกคอมไพล์ด้วยการตั้งค่าต่อไปนี้
    • CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe"
    • ทำงานได้บนเครื่อง amd64 / x86-64 ทุกเครื่อง
  • การตั้งค่า USE flag และเวอร์ชันของแพ็กเกจ amd64 สอดคล้องกับโปรไฟล์แพ็กเกจเสถียร
    • amd64/17.1/nomultilib
    • amd64/17.1/desktop/plasma/systemd
    • amd64/17.1/desktop/gnome/systemd
  • แพ็กเกจใต้ arm64/binpackages/17.0/arm64 ถูกคอมไพล์ด้วยการตั้งค่าต่อไปนี้
    • CFLAGS="-O2 -pipe"
    • ทำงานได้บนเครื่อง arm64 / AArch64 ทุกเครื่อง
  • การตั้งค่า USE flag และเวอร์ชันของแพ็กเกจ arm64 ก็สอดคล้องกับโปรไฟล์แพ็กเกจเสถียรเช่นกัน
    • arm64/17.0
    • arm64/17.0/desktop/plasma/systemd
    • arm64/17.0/desktop/gnome/systemd
  • หากต้องการการปรับแต่งให้เหมาะกับ CPU เฉพาะ ต้องคอมไพล์เองเหมือนเดิม

การเชื่อมโยงกับสถาปัตยกรรมอื่นและ stage

  • การโฮสต์แพ็กเกจไบนารีของสถาปัตยกรรมและ ABI อื่นเชื่อมโยงกับ stage build
  • มีการโฮสต์แพ็กเกจไบนารีสำหรับแทบทุก stage โดยรวมเฉพาะเนื้อหาและการตั้งค่าของ stage นั้น
  • ขอบเขตดังกล่าวรวมคอมไพเลอร์ gcc หรือ clang และ toolchain สำหรับ build ทั้งชุด
  • ขณะนี้ยังไม่มีแผนขยายขอบเขตนี้เพิ่มเติม

วิธีการเซ็นและตรวจสอบ

  • แพ็กเกจไบนารีทางการถูก เซ็นด้วยการเข้ารหัส ด้วย key เดียวกับ stage
    • ข้อมูล signing key ตรวจสอบได้ที่ Gentoo signatures
  • Portage จัดการรูปแบบแพ็กเกจไบนารีสองแบบ
    • XPAK: รูปแบบเดิมและไม่รองรับการเซ็น
    • GPKG: รูปแบบใหม่และรองรับลายเซ็นเชิงเข้ารหัส
  • แพ็กเกจไบนารี Gentoo อย่างเป็นทางการทั้งหมดอยู่ในรูปแบบ GPKG
    • แพ็กเกจ GPKG จะตรวจสอบลายเซ็น
    • หากตรวจสอบไม่ผ่าน การติดตั้งจะถูกปฏิเสธ
  • ในการตั้งค่าเริ่มต้น แพ็กเกจ XPAK ที่ไม่มีลายเซ็นก็อาจติดตั้งได้ เพื่อความเข้ากันได้กับแพ็กเกจไบนารีเก่า
  • หากต้องการบังคับใช้ลายเซ็นที่ตรวจสอบแล้ว ต้องตั้งค่า FEATURES="binpkg-request-signature" ใน make.conf
    • ในกรณีนี้จะใช้ได้เฉพาะแพ็กเกจ GPKG

ข้อผิดพลาดเรื่องลายเซ็นและแพ็กเกจที่สร้างเอง

  • หากเกิดข้อผิดพลาดว่าไม่สามารถตรวจสอบลายเซ็นได้ สามารถเรียกใช้ Gentoo Trust Tool getuto ในฐานะ root ได้
    • ตัวอย่างคำสั่งคือ getuto
    • จะตั้งค่า keyring ของ Gentoo Release Engineering ที่ Portage ต้องใช้
  • หากเปิดใช้ FEATURES="binpkg-request-signature" ใน make.conf ระบบจะเรียก getuto อัตโนมัติก่อนดาวน์โหลดแพ็กเกจไบนารี
    • เป็นการทำงานเพื่อดึงการอัปเดตและการเพิกถอน key
  • แพ็กเกจไบนารีที่สร้างเองอาจถูก Portage ปฏิเสธ
    • เป็นผลข้างเคียงของ FEATURES="binpkg-request-signature"
    • สำหรับแพ็กเกจของตนเอง ต้องตั้งค่า signing key และทำให้ anchor ใน /etc/portage/gnupg เชื่อถือ key นั้น

ข้อจำกัดของ mirror, โปรไฟล์ และ USE flag

  • หากดาวน์โหลดช้า แนะนำให้ใช้ local mirror แทน University of Oregon
    • แก้ URI ใน /etc/portage/binrepos.conf ก็พอ
    • ด้วยลายเซ็นเชิงเข้ารหัส การใช้ local mirror จึงปลอดภัย
  • หากใช้ ชุด USE flag ที่ต่างจากค่าเริ่มต้นของโปรไฟล์ จะไม่สามารถใช้แพ็กเกจไบนารีนั้นได้
    • Portage สามารถใช้แพ็กเกจไบนารีผสมกับแพ็กเกจที่คอมไพล์ในเครื่องได้
    • Gentoo ไม่ได้มีเป้าหมายเป็นการติดตั้งแบบใช้ไบนารีล้วนโดยสมบูรณ์
  • แพ็กเกจสามารถใช้ได้บนระบบ merged-usr ด้วย
    • หากเกิดปัญหา ควรรายงานเป็นบั๊ก
  • ไม่สามารถใช้ร่วมกับโปรไฟล์เวอร์ชันเก่าหรือใหม่อื่น ๆ ได้
    • นี่คือเหตุผลที่เส้นทาง src-uri มีเวอร์ชันโปรไฟล์อย่าง 17.1 รวมอยู่
    • เมื่อมีโปรไฟล์เวอร์ชันใหม่ จะมีไดเรกทอรีแพ็กเกจใหม่แยกต่างหากให้

~amd64 และการรายงานปัญหา

  • ยังไม่มีแผนให้บริการแพ็กเกจไบนารี ~amd64
    • หากจะให้บริการจะต้อง rebuild จำนวนมาก
    • แม้จะให้บริการ ก็จำเป็นต้องใช้ URI แยกต่างหากด้วยเหตุผลทางเทคนิค
  • หากต้องการแพ็กเกจทดสอบ แนะนำให้คง stable ไว้ให้มากที่สุด แล้วเพิ่มใน package.accept_keywords เฉพาะในเครื่อง
    • แพ็กเกจไบนารีจำนวนมากจะยังใช้ต่อได้
    • ส่วนที่เหลือต้องคอมไพล์เอง
  • หากมีปัญหาเกี่ยวกับ Portage หรือแพ็กเกจเฉพาะ สามารถขอคำแนะนำใน IRC, ฟอรัม, mailing list หรือส่งบั๊กได้
  • การรองรับแพ็กเกจไบนารีผ่านการทดสอบมาระยะหนึ่งแล้ว แต่เมื่อมีผู้ใช้เพิ่มขึ้น อาจเกิด edge case ได้

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

 
GN⁺ 2023-12-31
ความเห็นจาก Hacker News
  • ขอออกตัวก่อนว่าเป็น แฟนพันธุ์แท้ของ Gentoo
    เสน่ห์ของ Gentoo ไม่ได้อยู่ที่การคอมไพล์ทุกอย่างจากซอร์ส แต่อยู่ที่เอกสารที่ยอดเยี่ยมและอิสระในการติดตั้งสิ่งที่ต้องการลงบนฮาร์ดแวร์แทบทุกแบบได้ โดยมีข้อจำกัดต่ำมาก
    ถ้าอยากใช้ Enlightenment + OpenRC + NetworkManager บนโน้ตบุ๊กปี 2008 ก็แค่ติดตั้ง Gentoo
    ถ้าอยากใช้ ZFS กับ root filesystem ของตู้เย็นอัจฉริยะ Gentoo ก็ทำได้
    ถ้าอยากใช้ Gnome แบบเดิม ๆ + SystemD บนโน้ตบุ๊กใหม่ก็ทำได้เหมือนกัน
    การตัดสินใจจะมีแพ็กเกจไบนารีเป็นการมอบ ทางเลือกที่มากขึ้น ให้ผู้ใช้ ซึ่งตรงข้ามกับดิสโทรอื่น ๆ ที่ค่อย ๆ ลดอิสระในการเลือกลง
    Debian บอกว่าเป็น “ระบบปฏิบัติการสากล” แต่ก็เลิกซัพพอร์ต 32-bit x86 ไปแล้ว และระบบ init ทางเลือกก็แม้จะติดตั้งได้แต่ก็ยุ่งยากพอสมควร
    ในทางกลับกัน Gentoo เปิดให้เลือกระหว่าง stage 3 tarball มากกว่า 17 แบบ และ eselect profile 35 แบบ
    ส่วนตัวผมชอบทั้งการคอมไพล์ทุกอย่างจากซอร์สและความยืดหยุ่นนั้น และบนฮาร์ดแวร์สมัยใหม่มันไม่ได้ทรมานอะไรเลย
    ถ้าไม่เห็นด้วย คุณก็แค่ติดตั้งแพ็กเกจไบนารีใหม่ได้
    จุดขายของ Gentoo ไม่เคยเป็น Portage อย่างเดียว แต่คือ ความยืดหยุ่นและชุมชน มาโดยตลอด

    • การบอกว่า Debian เลิกซัพพอร์ต 32-bit x86 แล้วนั้นไม่ค่อยตรงนัก
      ใกล้เคียงกว่าคือทีมรีลีสสรุปในการประชุมว่า มีแนวโน้มสูงว่าในอนาคตที่ยังไม่ระบุ จะเลิกมี ตัวติดตั้งและการรองรับเคอร์เนล สำหรับ 32-bit x86
      ตอนนี้ทั้งสองอย่างยังมีอยู่และยังซัพพอร์ตเต็มรูปแบบ
      โดยเฉพาะอย่างยิ่งยังใช้ multi-arch แบบ 32-bit/64-bit ต่อได้ จึงยังรันซอฟต์แวร์ 32-bit x86 ได้
    • จะบอกว่าดิสโทรอื่นกำลังตั้งใจลบอิสระในการเลือกออกไปก็ดูไม่ยุติธรรมนัก
      ทุกคนต่างก็อยากซัพพอร์ตทุกอย่าง แต่สุดท้ายการจะรับประกันความปลอดภัยและการบำรุงรักษาในฐานะดิสโทรนั้น ทรัพยากรที่ดูแลได้มีจำกัด
      ต้องมีบางอย่างที่ต้องยอมปล่อยไป
      ใน Linux distro ไหน ๆ คุณติดตั้งสิ่งที่อยากได้ได้เสมอ แต่ขอบเขตที่พูดได้ว่า “ซัพพอร์ตจริง” นั้นก็ถูกจำกัดด้วย จำนวนผู้ดูแล อยู่เสมอ
    • จะบอกว่า Debian ซัพพอร์ตสถาปัตยกรรมได้มากพอ ๆ กับ Gentoo ก็ได้
      https://buildd.debian.org/status/package.php?p=base-files&su...
      ผมรู้เพราะดูแลสถาปัตยกรรมที่ไม่ค่อยมีคนรู้จักของ Debian อยู่หลายตัวเอง พร้อมกับ snapshot สำหรับการติดตั้งแบบสม่ำเสมอ
      https://cdimage.debian.org/cdimage/ports/snapshots/
      Debian ยังมี พอร์ต Hurd สำหรับทั้ง i386 และ amd64 ด้วย
    • ช่วงนี้รู้สึกว่า Arch ดึงฐานผู้ใช้บางส่วนของ Gentoo ไปได้
    • ผมติดตั้ง Gentoo ไม่สำเร็จ โดยเฉพาะตอนติดตั้งบูตโหลดเดอร์ grub2 สำหรับ BIOS หรือ UEFI แล้วไปต่อไม่ได้
      ไม่ได้ใช้ musl หรือ clang profile ด้วย
      เพราะความประทับใจแรกเป็นแบบนี้ ผมเลยไม่คิดจะพิจารณา Gentoo หรือ fork ลูกของมัน เว้นแต่จะมีตัวติดตั้งมาให้
      เร็ว ๆ นี้น่าจะลองติดตั้ง Solus OS / Solus Linux เพราะตัวจัดการแพ็กเกจให้ความประทับใจแรกดี และเขาอ้างว่าทำซ้ำสภาพแวดล้อมได้ แม้จะไม่ใช่แนวแบบ nix หรือ guix ก็ตาม
  • สำหรับผม เสน่ห์สำคัญของ Gentoo คือ Portage
    มันให้มากกว่าแค่สภาพแวดล้อม build ที่เรียบง่ายกับการจัดการ dependency
    Ebuilds หรือแพ็กเกจของ Gentoo มีเครื่องมือที่ยอดเยี่ยมและการรองรับจาก Eclass สำหรับจัดการกรณียกเว้นต่าง ๆ ในการ build
    การพัฒนา Ebuild ให้ความรู้สึกเหมือนทำโปรเจ็กต์ซอฟต์แวร์จริง ๆ และเหมาะกับคนที่อยากทดลองแพ็กเกจที่ไม่มีใน official repository
    บังเอิญว่าผมเพิ่งปล่อยเครื่องมือสำหรับจัดการ chroot แบบไม่ใช้สิทธิ์ root เพื่อทดสอบ ebuild ไปพอดี
    การเปลี่ยนแปลงครั้งนี้น่าจะทำให้ Gentoo เข้าถึงคนจำนวนมากขึ้น แต่คงไม่ใช่สำหรับผม
    การตั้งค่า build ของผม เช่น CFLAGS คงไม่มีทางตรงกับไบนารีทางการอยู่แล้ว สุดท้ายก็คงไม่ได้ใช้

    • เห็นด้วยเรื่องการปรับแต่ง package flags และฟีเจอร์ต่าง ๆ
      ตอนใช้ Gentoo ใน production การตัดฟีเจอร์และการเชื่อมต่อกับซอฟต์แวร์ที่ไม่ได้ใช้ออก กลายเป็นส่วนสำคัญของ security posture
      แต่ผมก็มี build host แยกไว้สร้างไบนารีมาโดยตลอด เพียงแต่ว่า Gentoo รองรับไบนารีได้ไม่ค่อยดี
      มันมีแค่การเสิร์ฟผลลัพธ์ที่คอมไพล์แล้วผ่าน HTTP หรือ NFS โดยไม่มีลายเซ็นกำกับ
      ดีใจมากที่แพ็กเกจฟอร์แมตใหม่จะมีการตรวจสอบทางคริปโตกราฟี
      ต่อให้ใช้แจกจ่ายภายในองค์กรอย่างเดียว นี่ก็ควรเป็นฟีเจอร์ที่มีมาตั้งแต่แรก
    • เป็นข่าวดีมากสำหรับอุปกรณ์ประสิทธิภาพต่ำ
      ผมไม่อยากตั้งค่า binrepo แยกเอง โดยเฉพาะถ้ามี cross-compilation เข้ามาเกี่ยวด้วย แต่ก็ยังอยากใช้การตั้งค่า Portage เดิมและ ebuild แบบคัสตอมต่อไป แบบนี้มีประโยชน์มาก
    • ถ้าคุณปล่อยเครื่องมือสำหรับจัดการ chroot แบบไม่ใช้สิทธิ์ root เพื่อทดสอบ ebuild แล้ว ควรไปดูวิธีที่ ChromeOS ทำ
      ChromeOS ใช้ bazel เพื่อรัน ebuild ภายใน chroot ชั่วคราว
      https://chromium.googlesource.com/chromiumos/bazel/+/refs/he...
      วิธีนี้ช่วยรับประกันได้ว่าจะไม่มีการใช้ dependency ที่ไม่ได้ประกาศไว้
    • CFLAGS ของผมก็คงไม่ตรงเหมือนกัน
      ถึงอย่างนั้นก็ยังอดคิดไม่ได้ว่าอาจจะเขียนสคริปต์ override ให้แพ็กเกจฝั่ง plasma ใช้ไบนารีรวมไปเลย
      ตัวที่ต้องการความเร็วค่อย build เอง ส่วน แพ็กเกจฝั่ง GUI รับเป็นไบนารีน่าจะช่วยประหยัดเวลา build ไปได้มหาศาล
      ดูแล้วผลเสียก็น่าจะไม่ได้มากนัก
    • ถ้าแชร์เครื่องมือนั้นได้ก็คงดี
      ผมหาสิ่งแบบนั้นสำหรับ โปรเจ็กต์ sandbox ของตัวเองอย่างจริงจังอยู่พอดี
  • จะพูดอย่างไรกับแนวคิดของ Gentoo ก็ตาม แต่ตอนอายุ 17 การได้เรียนรู้เรื่องการแพ็กเกจซอฟต์แวร์, การคอมไพล์แบบกระจาย, รายละเอียดของการปรับแต่งประสิทธิภาพตอนคอมไพล์, และการปรับแต่ง Linux kernel นั้นสนุกมาก
    ถ้าจำไม่ผิด เอกสารของชุมชนก็ค่อนข้างดีด้วย
    แพตช์บางส่วนที่ฉันส่งไปอาจยังหลงเหลืออยู่ในรีลีสบางตัวจนถึงตอนนี้ก็ได้
    แต่กว่าจะรู้ว่าการจูน ปรับแต่ง และซอฟต์แวร์ใหม่ล่าสุดทั้งหลายไม่คุ้มค่า ก็ต้องหลังจากได้เห็นว่าเครื่อง Slackware ทำงานได้เร็วพอ ๆ กับเครื่อง Gentoo
    สำหรับแอปบางประเภท เช่น render farm หรือเครื่องขุดคริปโต การคอมไพล์และจูนแบบกำหนดเองอาจช่วยได้จริง แต่สำหรับเกมนั้น ไม่ว่าจะดิสโทรไหนก็ได้ FPS เท่า ๆ กัน

    • ความสำคัญของการปรับแต่งตาม CPU มีขึ้นมีลงตามยุคสมัย
      เมื่อก่อน ถ้าคอมไพล์ตามตัวหารร่วมต่ำสุด ก็จะไม่ได้แม้แต่ MMX หรือ SSE และกับอัลกอริทึมบางอย่างที่ผูกกับ CPU ก็อาจสร้างความต่างได้มาก
      แต่การตรวจจับความสามารถของ CPU ตอนรันไทม์แล้วเลือกใช้เวอร์ชันที่เหมาะสมที่สุดก็ทำได้อยู่เสมอ ดังนั้นการเลือกฟีเจอร์ตอนคอมไพล์จึงไม่ใช่วิธีเดียว
      ต่อมาเมื่อ AMD Opteron ออกมา ทุกคนก็ขึ้นสู่ baseline ใหม่ร่วมกัน
      การคอมไพล์สำหรับ amd64 กลับมาหมายถึง CPU เฉพาะอีกครั้ง และในเวลานั้นก็ยังไม่มีชุดคำสั่งใหม่กว่านี้
      ทุกวันนี้ AMD64 มีหลายระดับ[1] แล้ว ซึ่งอาจสำคัญกับงานบางอย่าง เช่น SIMD
      ตัวอย่างที่ธรรมดาและเจอบ่อยกว่าคือ popcnt ที่เพิ่มมาใน v2 ซึ่งดีสำหรับสิ่งอย่าง bitset เมื่อมองแยกเดี่ยว แต่ในประสิทธิภาพของทั้งโปรแกรม ฉันแทบวัดความต่างระหว่าง v1 กับ v3 ไม่ได้เลยในโปรเจกต์ของตัวเอง
      สำหรับเกม ก็น่าจะเป็นไบนารีปิดซอร์สอยู่แล้ว และอาจคอมไพล์มาสำหรับตัวหารร่วมต่ำสุดไว้แล้ว หรือไม่ก็ใช้การเลือกฟีเจอร์ตอนรันไทม์
      แถมส่วนใหญ่ก็น่าจะติด คอขวดที่ GPU อยู่ดี
      [1] https://en.wikipedia.org/wiki/X86-64#Microarchitecture_level...
  • เมื่อหลายปีก่อน ฉันเคยเสียทั้งเวลาเครื่องและเวลาตัวเองไปหลายชั่วโมงหลายวันกับการคอมไพล์และจูนระบบ Gentoo แบบละเอียด ทั้งที่ไม่รู้เหมือนกันว่าทำไปทำไม
    ทั้งที่ยังไงวันถัดไปก็จะฟอร์แมตเพื่อติดตั้ง Ubuntu CD แผ่นใหม่ที่เพิ่งมาถึงอยู่ดี

    • การที่เคยทำอะไรบางอย่างแล้วตอนนี้ไม่ทำแล้ว ไม่ได้แปลว่าสิ่งที่เคยทำนั้นเป็นความผิด
      คนที่ครั้งหนึ่งเคยคอมไพล์เคอร์เนลด้วยตัวเองแต่ตอนนี้ไม่ทำแล้ว อย่างน้อยก็เก่งขึ้นมาได้ส่วนหนึ่งเพราะเคยลองทำแบบนั้น
      ต้องได้ลองทำก่อน ถึงจะมีเหตุผลพอที่จะเลิกทำในตอนนี้
      การพูดว่า “ถ้าฉันฉลาดกว่านี้ก็คงไม่เสียเวลากับเรื่องนั้น” หรือทำให้คนที่เพิ่งเริ่มมองแบบนั้น จึงไม่ถูกต้องนัก
    • ฉันก็เป็นแบบนั้นเหมือนกัน แต่ได้เรียนรู้อะไรมากมายจริง ๆ ระหว่างทาง
      สุดท้ายก็เหนื่อยแล้วเลยย้ายไป Arch และได้เกือบทุกอย่างเหมือนเดิมโดยไม่ต้องคอยสู้กับแพ็กเกจที่พังอยู่ตลอด
      ถึงอย่างนั้น ความรู้ที่ได้จากการรับมือกับ ปัญหาระดับล่าง แบบสุ่ม ๆ ก็ยังใช้งานได้มาจนถึงทุกวันนี้
    • ฉันก็เหมือนกัน
      แต่ก็ได้เรียนรู้อะไรเยอะมาก
      ทุกวันนี้ Linux รู้สึกเหมือนเป็นซูเปอร์พาวเวอร์ของฉัน
      ทั้ง OS, VM, คอนเทนเนอร์, Nix-shell, WSL2 ล้วนคือ Linux
      ไม่ว่าจะถูกโยนลงไปที่ command line แบบไหน รวมถึง BSD ในระดับหนึ่งด้วย ฉันก็ยังรู้สึกคุ้นเคยและแก้ปัญหาได้
      ฉันอยากคิดว่าเวลาสนุก ๆ ที่มีกับ Gentoo พาฉันมาถึงจุดนี้
    • เสน่ห์ที่สุดของ Gentoo สำหรับฉันมีมาตลอดคือ USE flags
      บน CentOS แค่จะใช้ mpg123 ซึ่งเป็น command-line player ตัวหนึ่ง ก็ยังต้องติดตั้ง X ทั้งชุด แต่บน Gentoo ฉันสามารถปิด X integration ของ mpg123 ได้
      ส่วน flags อื่น ๆ ก็เป็นเหมือนโบนัสที่แถมมาบนสิ่งนั้น
    • ฉันเองก็เคยหมกมุ่นกับการปรับระบบปฏิบัติการให้เป็นแบบของตัวเอง
      ตอนนี้ฉันแค่ติดตั้ง Debian แล้วลงโปรแกรมที่ใช้ทุกวันไม่กี่ตัวก็จบ
      และยังสร้างคอนฟิกเดิมของตัวเองบนเครื่องอื่นได้ใหม่ภายใน 20 นาที
  • ฉันใช้ Gentoo อยู่นานในช่วงต้นทศวรรษ 2000 และเกือบทุกอย่างที่ฉันรู้เกี่ยวกับเครื่อง Linux โดยรวมก็มาจากประสบการณ์นั้น
    สิ่งที่น่าสนใจของ USE flags คือมันทำให้รู้ว่ามีแพ็กเกจไหนบ้างที่มีการผสานการทำงานเฉพาะกับไลบรารีหรือแพ็กเกจอื่น
    พอได้รู้ว่าไบนารี SQLite3 ถ้าลิงก์มาโดยไม่มีการรองรับ readline จะทำงานไม่เหมือนเดิม ก็เลยเข้าใจมากขึ้นว่า readline คืออะไรในภาพรวม
    เรื่องแบบนี้เกิดซ้ำแล้วซ้ำอีกกับไลบรารีจำนวนมากที่บนระบบ Linux อื่น ๆ มักดูเหมือนมีมาให้อยู่แล้วเสมอ
    มันเป็น เครื่องมือการเรียนรู้ ที่มีคุณค่ามากจริง ๆ สำหรับช่วงเวลาที่เหมาะสมในชีวิตของฉัน

  • รู้สึกแปลก ๆ นิดหน่อย
    มีหลายคอมเมนต์บอกว่าเคยใช้ Gentoo หรือเคยใช้เมื่อก่อน
    แต่ฉันยังใช้อยู่ตอนนี้ทั้งเป็น เครื่องหลักที่ใช้ทุกวัน และเป็นเซิร์ฟเวอร์หลัก
    เลยสงสัยว่าอะไรต่างออกไป ถึงทำให้ Gentoo เป็นตัวเลือกที่ดีที่สุดสำหรับฉัน
    และฉันก็ไม่คิดจะเปิดใช้แพ็กเกจไบนารี

    • คุณไม่ได้ตัวคนเดียว
      ฉันรัน Gentoo บนอุปกรณ์ทุกชิ้น ทั้ง GPD Win 4, Pixelbook ที่ลง coreboot, NAS, VPS และอื่น ๆ
      ฉันคิดว่าเหตุผลมีดังนี้
      1. เป็นเอกสารประกอบที่ดีที่สุดเท่าที่เคยใช้มา
      2. ปรับแต่งได้ไม่สิ้นสุด ทำให้สร้างระบบได้ทั้งแบบมินิมอลหรือแม็กซิมอลตามต้องการ
      3. ฉันมองว่า Portage overlay ดีกว่า AUR เสมอ
      4. เลือกระบบ init ได้เอง
        ถ้าอยากใช้ SystemD ก็ใช้ได้ ถ้าอยากใช้ OpenRC ก็ใช้ได้เลย
      5. พลังของชุมชนที่ดีและมีค่านิยมชัดเจนเป็นสิ่งที่ประเมินต่ำไปได้ยาก
        ฉันรู้สึกปลอดภัยและสบายใจกับ Gentoo
        เพราะรู้ว่า Gentoo จะเคารพ อิสรภาพ ซึ่งเป็นสิ่งที่ฉันให้ความสำคัญที่สุดใน Linux เสมอ
        Gentoo เหมือนหนังสือผจญภัยแบบเลือกเส้นเรื่องเอง
        ถ้าอยากใช้ SystemD + Gnome + PulseAudio + แพ็กเกจไบนารี ก็ทำได้ และถ้าอยากใช้ OpenRC + Hyprland + Pipewire + NetworkManager แทน netifrc ก็ทำได้เหมือนกัน
        Gentoo ไม่ใช่ดิสโทรที่คอมไพล์ทุกอย่าง แต่เป็นดิสโทรที่ให้เลือกทุกอย่าง
        สำหรับฉันประกาศครั้งนี้ไม่ค่อยเกี่ยวอะไร แต่ก็ทำให้ผู้ใช้มีตัวเลือกมากขึ้น
    • ถ้า NixOS ไม่ออกมา ฉันก็คงยังใช้ Gentoo อยู่
      Gentoo ก็ดี แต่การเป็น ผู้ดูแลระบบ NixOS ใช้ชีวิตง่ายกว่าการเป็นผู้ดูแลระบบ Gentoo มาก
    • งั้นก็ยิ่งสงสัยว่าทำไม Gentoo ถึงเป็นตัวเลือกที่ดีที่สุดสำหรับคุณ
      ถ้าจะตอบก็ไม่ใช่ว่าฉันจะเถียงนะ แค่อยากรู้จริง ๆ
      สำหรับฉัน เหตุผลที่ Gentoo ไม่เหมาะคือฉันไม่ได้ดูแลเซิร์ฟเวอร์ส่วนตัว และที่ทำงานก็ใช้คลาวด์เซิร์ฟเวอร์
      ก็น่าจะเป็นสาย Ubuntu หรือไม่ก็แบบ AWS ซึ่งไม่ได้มานั่งคอมไพล์เคอร์เนลกัน
      ฝั่งเดสก์ท็อป เมื่อกว่าสิบปีก่อน ฉันเคยลอง Gentoo เพราะเพื่อนโน้มน้าวว่า “มันคอมไพล์ให้ตรงกับฮาร์ดแวร์ของนาย เลยจะเร็วกว่า”
      ฉันเสียเวลาไปมากกับการติดตั้งและทำให้มันรันได้ แต่ในงานที่ฉันทำจริง ๆ มันไม่ได้เร็วกว่า Ubuntu ปกติอย่างเห็นได้ชัดเลย มีแต่ใช้เวลาตั้งค่ามากกว่า
      สุดท้ายเลยเลิกใช้
      อีกอย่าง คำพูดที่ได้ยินบ่อยว่า “ฉันเรียนรู้อะไรมากมายจากการตั้งค่า Gentoo” สำหรับฉันก็ไม่จริง
      ฉันก็เหมือนคนส่วนใหญ่ คือแค่ทำตามสูตร ตั้งค่าแฟล็กที่ไม่เข้าใจ แล้วก็ไปแก้ไฟล์คอนฟิก ดังนั้นพูดได้อย่างปลอดภัยเลยว่าฉันไม่ได้เรียนรู้อะไร
      แค่ทำตามขั้นตอนเท่านั้น
      แน่นอนว่านี่เป็นแค่ประสบการณ์ของฉัน
    • หรือเพราะมีความอดทนแบบผู้ใหญ่ล่ะมั้ง
      ก็ไม่แน่ใจเหมือนกัน แต่ฉันก็ใช้มา 20 ปีแล้ว
    • อยากรู้ว่ามีเครื่องแบบที่ตั้งทิ้งไว้แล้วก็ใช้งานได้ยาว ๆ ไหม
      ไม่ใช่เครื่องหลักหรือเซิร์ฟเวอร์ที่ต้องแตะทุกสัปดาห์ แต่เป็นอุปกรณ์ที่ตั้งค่าไว้ตั้งนานแล้วและหลังจากนั้นก็ทำงานต่อเนื่องมา
      หมายถึงระบบที่ล็อกอินปีละไม่กี่ครั้ง
      ฉันเลิกใช้ Gentoo ตอนสร้างระบบ “ใช้งานจริง” เครื่องแรก
      คนเริ่มใช้งานมันแล้ว และมันก็ “เสร็จ” ในความหมายที่ว่าไม่มีเหตุผลต้องล็อกอินทุกวันหรือทุกสัปดาห์อีก
      ฉันยังต้องการอัปเดตความปลอดภัยอยู่ และนาน ๆ ทีอาจต้องใช้แพ็กเกจใหม่เพราะฟีเจอร์ใหม่ แต่โดยพื้นฐานแล้วฉันต้องการระบบที่เสถียร
      Gentoo เหมาะกับงานแบบนี้แย่มาก
      แม้แต่เดสก์ท็อปส่วนตัว ฉันก็อัปเดตทุกสัปดาห์และแทบทุกครั้งจะมีปัญหา emerge build ล้มเหลว ดังนั้นระบบที่ปล่อยไว้หลายเดือนโดยไม่อัปเดตก็น่าจะแย่ยิ่งกว่า
      เลยย้ายไป Debian แล้วก็ดีมาก
      โดยเฉพาะ unattended upgrades ที่ดีมาก และสุดท้ายฉันก็ย้ายทุกเครื่องไป Debian
      ถ้าคุณใช้ Gentoo ฉันอยากรู้ว่ามีเครื่องที่ไม่แตะทุกสัปดาห์ไหม คุณอัปเดตบ่อยแค่ไหน และต้อง แทรกแซงด้วยตนเอง บ่อยแค่ไหนกว่าจะอัปเดตเสร็จ
  • น้อยเกินไป และ ช้าไป 15 ปี
    หนึ่งในเหตุผลที่ฉันย้ายจาก Gentoo ไป FreeBSD เมื่อกว่า 15 ปีก่อนก็คือ Gentoo ต้องคอมไพล์ทุกอย่าง แต่ FreeBSD มีแพ็กเกจไบนารีให้
    ทุกวันนี้มันอาจไม่สำคัญขนาดนั้นแล้ว แต่ในยุคที่มี CPU แค่คอร์เดียวและ RAM 1GB มันคือความต่างระดับพลิกเกม

    • น่าเศร้าแต่ก็จริงทั้งหมด
      ฉันใช้ Gentoo มานาน ก่อนจะย้ายไป macOS อยู่หลายปี และตอนนั้นใช้ Gentoo prefix ซึ่งเหนือกว่า Homebrew มาก
      เกือบ 10 ปีก่อน ฉันเคยเพิ่มแพตช์ให้ upstream llvm ใช้งานได้บน Gentoo prefix ของ macOS [1]
      ในงานรวมตัว GSoC ฉันได้เจอคนที่อยากให้สิทธิ์ผู้ดูแลกับฉันในที่สุด แต่สุดท้ายเรื่องก็ไม่ได้ไปต่อ
      เขาเตือนไว้แล้วว่างานนั้นจะซับซ้อน
      ฉันพูดมาตลอดว่า prefix ก็ต้องการไบนารีเหมือนกัน
      มันทำให้ฉันนึกภาพว่า ถ้า Gentoo prefix บน Mac สามารถติดตั้งแพ็กเกจได้ง่ายพอ ๆ กับ Homebrew มันจะเป็นอย่างไร
      น่าเสียดายที่ Gentoo เป็นตัวอย่างที่ดีว่า ต่อให้เป็นโปรเจกต์โอเพนซอร์สที่เหนือกว่าทางเทคนิค ถ้ามองข้าม ความสะดวกของผู้ใช้ปลายทาง ขั้นพื้นฐาน และไม่มีระบบการดูแลจัดการที่ดี ก็ไม่สามารถอยู่รอดและเอาชนะทางเลือกที่ด้อยกว่าได้
      ฉันคิดว่านี่ก็คล้ายกับเหตุผลที่ opensolaris/illumos กลายเป็นโครงการที่เหมือนต้องพึ่งเครื่องพยุงชีพ
      คนที่รับผิดชอบไม่อาจก้าวข้ามความเป็นชนชั้นนำ และไม่ยอมตัดสินใจว่าการเปิดให้ชุมชนมีส่วนร่วมจำเป็นต้องมีอะไรที่ง่ายกว่า makefile/shell spaghetti ซ้อนกัน 100 ชั้นที่เข้าใจแทบไม่ได้เพื่อใช้ build kernel
      [1] https://github.com/fishman/timebomb-gentoo-osx-overlay/tree/...
    • มันสายเกินไปจริง ๆ เหรอ?
      Gentoo เป็นของเฉพาะกลุ่มมาโดยตลอด แม้กระทั่งในชุมชน Linux ที่ก็เป็นกลุ่มเฉพาะอยู่แล้ว แต่ถึงอย่างนั้นมันก็ดูเหมือนจะยังเดินหน้าต่อไปได้อย่างมีความสุข
      มันมีปัญหาอะไรหรือ?
  • แค่คิดว่ามี ค่าไฟและก๊าซเรือนกระจก ถูกปล่อยออกมาเท่าไรจากการคอมไพล์ซอฟต์แวร์เดิมซ้ำ ๆ โดยไม่จำเป็นก็น่าขนลุกแล้ว

    • แต่มันก็น่าจะน้อยกว่าพลังงานและก๊าซเรือนกระจกที่สูญเปล่าจากการคอมไพล์ซอฟต์แวร์ JavaScript เดิมซ้ำ ๆ โดยไม่จำเป็นบนอุปกรณ์นับหมื่นล้านเครื่องที่เชื่อมต่อเว็บอยู่หลายหลัก
    • ถ้าเทียบกับการใช้พลังงานเฉลี่ยของกิจกรรมอย่างการเล่นเกม ก็คงไม่ได้เป็นปริมาณที่มีนัยสำคัญนัก
    • ก็น่าจะไม่ได้มากขนาดนั้น
      Gentoo เองก็ไม่ได้ถูกใช้อย่างแพร่หลายเท่า Red Hat หรือ Ubuntu
      แถมถ้าคอมพิวเตอร์เปิดอยู่แล้ว การใช้ไฟของ CPU ก็คงอยู่ในระดับปัดเศษเมื่อเทียบกับ HDD แบบจานหมุนหรือจอภาพ
    • ถ้ามองว่าเป็นงานอดิเรก ก็ยังห่างไกลจากคำว่าแย่ที่สุด
      บางคนเล่นเกมวันละ 12 ชั่วโมงบนเกมมิงพีซีระดับกิโลวัตต์ ขับรถในสนาม หรือออกไปล่องเรือกินน้ำมันมาก
    • มีโอกาสสูงว่านี่เป็นเพียงเศษเสี้ยวเล็กมาก ๆ ของ 1% ของพลังงานที่ Microsoft ใช้ไปกับการเก็บข้อมูลส่วนตัวจากผู้ใช้ Windows 10 ตลอด 24 ชั่วโมงทุกวัน
  • สิ่งที่ทำให้ Gentoo ยอดเยี่ยมคือ มันถูกออกแบบมาตั้งแต่แรกให้สามารถเพิ่มและดูแลการปรับแต่งเล็ก ๆ ที่ฉันต้องการในระบบได้อย่างง่ายดาย
    ดิสโทรอื่นทั้งหมดที่ฉันเคยใช้ ทั้งดิสโทรใหญ่ทุกตัวและดิสโทรเล็กอีกหลายตัว มักทำงานได้ดีกว่าในสภาพตั้งต้น แต่พอออกนอกเส้นทางที่กำหนดไว้ ความเจ็บปวดก็มหาศาล
    ระบบ Gentoo ที่จูนมาดีแล้วจะ “ทำงานได้ดีเฉย ๆ”™
    ไม่ว่าคำว่า “ทำงานได้ดี” จะมีความหมายส่วนตัวว่าอะไรสำหรับแต่ละคนก็ตาม
    อาจเป็นปัญหาชื่อชนกันของ python 2to3 ตอนที่ Arch ตัดสินใจเขียนทับ upstream ก็ได้ หรืออาจเป็นปัญหา latency ของแกนระบบที่เกิดจาก SystemD ทำงานที่ไม่จำเป็นมากเกินไปในโหมดเคอร์เนลก็ได้
    แม้จะมีข้อบกพร่องหลายอย่าง ฉันก็ยังเป็นผู้ใช้ Gentoo ที่พอใจมาก
    แพ็กเกจไบนารีจาก upstream ก็เป็นเพียงส่วนขยายอีกอย่างของอิสระนั้น
    ก่อนหน้านี้ก็มีเวอร์ชันไบนารีของบางโปรเจกต์หลักอยู่แล้ว หรือไม่ก็สร้าง build server เองได้ แต่ถ้าใช้งานไบนารีได้มากขึ้นอย่างง่ายดาย ผู้คนอีกมากก็จะได้รับประโยชน์เหล่านี้โดยไม่ต้องแบกรับภาระเรื่องเวลามหาศาลจากการต้อง build ของชิ้นเล็กชิ้นน้อยทั้งหมด
    ถ้าต้องการความยืดหยุ่นมากขึ้นกับแพ็กเกจบางตัว เช่น patch หรือ use flag ก็ยังทำได้อยู่และดูแลง่ายด้วย
    นี่คือ ชัยชนะครั้งใหญ่

  • มีอยู่ช่วงหนึ่งที่ Gentoo อยู่ในจุดที่พอดีจริง ๆ และลื่นไหลมาก
    useflag ก็ไม่ได้มีมากหรือน้อยเกินไป และเป็นยุคที่คอยคอมไพล์ Open Office ใหม่ในคืนฤดูหนาวอันหนาวเย็นเมื่อห้องหอพักหนาวเกินไป

    • น่าจะมีแค่บน HN เท่านั้นที่คนจะหวนรำลึกถึงสภาพใด ๆ ของ Gentoo แบบไม่ประชดว่า “มันลื่นไหลดีเฉย ๆ”
      พูดด้วยความเอ็นดูนะ