Gentoo ออกเวอร์ชันไบนารี
(gentoo.org)- 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/- ขั้นตอนทั่วไปดูได้ที่ Binary package quickstart
- การตั้งค่าอย่างละเอียดกว่ารวบรวมไว้ใน binary package guide
- การติดตั้งแบบอิง 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/nomultilibamd64/17.1/desktop/plasma/systemdamd64/17.1/desktop/gnome/systemd
- แพ็กเกจใต้
arm64/binpackages/17.0/arm64ถูกคอมไพล์ด้วยการตั้งค่าต่อไปนี้CFLAGS="-O2 -pipe"- ทำงานได้บนเครื่อง arm64 / AArch64 ทุกเครื่อง
- การตั้งค่า USE flag และเวอร์ชันของแพ็กเกจ arm64 ก็สอดคล้องกับโปรไฟล์แพ็กเกจเสถียรเช่นกัน
arm64/17.0arm64/17.0/desktop/plasma/systemdarm64/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 จึงปลอดภัย
- แก้ URI ใน
- หากใช้ ชุด 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 ความคิดเห็น
ความเห็นจาก 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 อย่างเดียว แต่คือ ความยืดหยุ่นและชุมชน มาโดยตลอด
ใกล้เคียงกว่าคือทีมรีลีสสรุปในการประชุมว่า มีแนวโน้มสูงว่าในอนาคตที่ยังไม่ระบุ จะเลิกมี ตัวติดตั้งและการรองรับเคอร์เนล สำหรับ 32-bit x86
ตอนนี้ทั้งสองอย่างยังมีอยู่และยังซัพพอร์ตเต็มรูปแบบ
โดยเฉพาะอย่างยิ่งยังใช้ multi-arch แบบ 32-bit/64-bit ต่อได้ จึงยังรันซอฟต์แวร์ 32-bit x86 ได้
ทุกคนต่างก็อยากซัพพอร์ตทุกอย่าง แต่สุดท้ายการจะรับประกันความปลอดภัยและการบำรุงรักษาในฐานะดิสโทรนั้น ทรัพยากรที่ดูแลได้มีจำกัด
ต้องมีบางอย่างที่ต้องยอมปล่อยไป
ใน Linux distro ไหน ๆ คุณติดตั้งสิ่งที่อยากได้ได้เสมอ แต่ขอบเขตที่พูดได้ว่า “ซัพพอร์ตจริง” นั้นก็ถูกจำกัดด้วย จำนวนผู้ดูแล อยู่เสมอ
https://buildd.debian.org/status/package.php?p=base-files&su...
ผมรู้เพราะดูแลสถาปัตยกรรมที่ไม่ค่อยมีคนรู้จักของ Debian อยู่หลายตัวเอง พร้อมกับ snapshot สำหรับการติดตั้งแบบสม่ำเสมอ
https://cdimage.debian.org/cdimage/ports/snapshots/
Debian ยังมี พอร์ต Hurd สำหรับทั้ง i386 และ amd64 ด้วย
ไม่ได้ใช้ 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 คงไม่มีทางตรงกับไบนารีทางการอยู่แล้ว สุดท้ายก็คงไม่ได้ใช้
ตอนใช้ Gentoo ใน production การตัดฟีเจอร์และการเชื่อมต่อกับซอฟต์แวร์ที่ไม่ได้ใช้ออก กลายเป็นส่วนสำคัญของ security posture
แต่ผมก็มี build host แยกไว้สร้างไบนารีมาโดยตลอด เพียงแต่ว่า Gentoo รองรับไบนารีได้ไม่ค่อยดี
มันมีแค่การเสิร์ฟผลลัพธ์ที่คอมไพล์แล้วผ่าน HTTP หรือ NFS โดยไม่มีลายเซ็นกำกับ
ดีใจมากที่แพ็กเกจฟอร์แมตใหม่จะมีการตรวจสอบทางคริปโตกราฟี
ต่อให้ใช้แจกจ่ายภายในองค์กรอย่างเดียว นี่ก็ควรเป็นฟีเจอร์ที่มีมาตั้งแต่แรก
ผมไม่อยากตั้งค่า binrepo แยกเอง โดยเฉพาะถ้ามี cross-compilation เข้ามาเกี่ยวด้วย แต่ก็ยังอยากใช้การตั้งค่า Portage เดิมและ ebuild แบบคัสตอมต่อไป แบบนี้มีประโยชน์มาก
ChromeOS ใช้ bazel เพื่อรัน ebuild ภายใน chroot ชั่วคราว
https://chromium.googlesource.com/chromiumos/bazel/+/refs/he...
วิธีนี้ช่วยรับประกันได้ว่าจะไม่มีการใช้ dependency ที่ไม่ได้ประกาศไว้
ถึงอย่างนั้นก็ยังอดคิดไม่ได้ว่าอาจจะเขียนสคริปต์ override ให้แพ็กเกจฝั่ง plasma ใช้ไบนารีรวมไปเลย
ตัวที่ต้องการความเร็วค่อย build เอง ส่วน แพ็กเกจฝั่ง GUI รับเป็นไบนารีน่าจะช่วยประหยัดเวลา build ไปได้มหาศาล
ดูแล้วผลเสียก็น่าจะไม่ได้มากนัก
ผมหาสิ่งแบบนั้นสำหรับ โปรเจ็กต์ sandbox ของตัวเองอย่างจริงจังอยู่พอดี
จะพูดอย่างไรกับแนวคิดของ Gentoo ก็ตาม แต่ตอนอายุ 17 การได้เรียนรู้เรื่องการแพ็กเกจซอฟต์แวร์, การคอมไพล์แบบกระจาย, รายละเอียดของการปรับแต่งประสิทธิภาพตอนคอมไพล์, และการปรับแต่ง Linux kernel นั้นสนุกมาก
ถ้าจำไม่ผิด เอกสารของชุมชนก็ค่อนข้างดีด้วย
แพตช์บางส่วนที่ฉันส่งไปอาจยังหลงเหลืออยู่ในรีลีสบางตัวจนถึงตอนนี้ก็ได้
แต่กว่าจะรู้ว่าการจูน ปรับแต่ง และซอฟต์แวร์ใหม่ล่าสุดทั้งหลายไม่คุ้มค่า ก็ต้องหลังจากได้เห็นว่าเครื่อง Slackware ทำงานได้เร็วพอ ๆ กับเครื่อง Gentoo
สำหรับแอปบางประเภท เช่น render farm หรือเครื่องขุดคริปโต การคอมไพล์และจูนแบบกำหนดเองอาจช่วยได้จริง แต่สำหรับเกมนั้น ไม่ว่าจะดิสโทรไหนก็ได้ FPS เท่า ๆ กัน
เมื่อก่อน ถ้าคอมไพล์ตามตัวหารร่วมต่ำสุด ก็จะไม่ได้แม้แต่ 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 พาฉันมาถึงจุดนี้
บน 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 และอื่น ๆ
ฉันคิดว่าเหตุผลมีดังนี้
ถ้าอยากใช้ SystemD ก็ใช้ได้ ถ้าอยากใช้ OpenRC ก็ใช้ได้เลย
ฉันรู้สึกปลอดภัยและสบายใจกับ Gentoo
เพราะรู้ว่า Gentoo จะเคารพ อิสรภาพ ซึ่งเป็นสิ่งที่ฉันให้ความสำคัญที่สุดใน Linux เสมอ
Gentoo เหมือนหนังสือผจญภัยแบบเลือกเส้นเรื่องเอง
ถ้าอยากใช้ SystemD + Gnome + PulseAudio + แพ็กเกจไบนารี ก็ทำได้ และถ้าอยากใช้ OpenRC + Hyprland + Pipewire + NetworkManager แทน netifrc ก็ทำได้เหมือนกัน
Gentoo ไม่ใช่ดิสโทรที่คอมไพล์ทุกอย่าง แต่เป็นดิสโทรที่ให้เลือกทุกอย่าง
สำหรับฉันประกาศครั้งนี้ไม่ค่อยเกี่ยวอะไร แต่ก็ทำให้ผู้ใช้มีตัวเลือกมากขึ้น
Gentoo ก็ดี แต่การเป็น ผู้ดูแลระบบ NixOS ใช้ชีวิตง่ายกว่าการเป็นผู้ดูแลระบบ 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 ที่ก็เป็นกลุ่มเฉพาะอยู่แล้ว แต่ถึงอย่างนั้นมันก็ดูเหมือนจะยังเดินหน้าต่อไปได้อย่างมีความสุข
มันมีปัญหาอะไรหรือ?
แค่คิดว่ามี ค่าไฟและก๊าซเรือนกระจก ถูกปล่อยออกมาเท่าไรจากการคอมไพล์ซอฟต์แวร์เดิมซ้ำ ๆ โดยไม่จำเป็นก็น่าขนลุกแล้ว
Gentoo เองก็ไม่ได้ถูกใช้อย่างแพร่หลายเท่า Red Hat หรือ Ubuntu
แถมถ้าคอมพิวเตอร์เปิดอยู่แล้ว การใช้ไฟของ CPU ก็คงอยู่ในระดับปัดเศษเมื่อเทียบกับ HDD แบบจานหมุนหรือจอภาพ
บางคนเล่นเกมวันละ 12 ชั่วโมงบนเกมมิงพีซีระดับกิโลวัตต์ ขับรถในสนาม หรือออกไปล่องเรือกินน้ำมันมาก
สิ่งที่ทำให้ Gentoo ยอดเยี่ยมคือ มันถูกออกแบบมาตั้งแต่แรกให้สามารถเพิ่มและดูแลการปรับแต่งเล็ก ๆ ที่ฉันต้องการในระบบได้อย่างง่ายดาย
ดิสโทรอื่นทั้งหมดที่ฉันเคยใช้ ทั้งดิสโทรใหญ่ทุกตัวและดิสโทรเล็กอีกหลายตัว มักทำงานได้ดีกว่าในสภาพตั้งต้น แต่พอออกนอกเส้นทางที่กำหนดไว้ ความเจ็บปวดก็มหาศาล
ระบบ Gentoo ที่จูนมาดีแล้วจะ “ทำงานได้ดีเฉย ๆ”™
ไม่ว่าคำว่า “ทำงานได้ดี” จะมีความหมายส่วนตัวว่าอะไรสำหรับแต่ละคนก็ตาม
อาจเป็นปัญหาชื่อชนกันของ python 2to3 ตอนที่ Arch ตัดสินใจเขียนทับ upstream ก็ได้ หรืออาจเป็นปัญหา latency ของแกนระบบที่เกิดจาก SystemD ทำงานที่ไม่จำเป็นมากเกินไปในโหมดเคอร์เนลก็ได้
แม้จะมีข้อบกพร่องหลายอย่าง ฉันก็ยังเป็นผู้ใช้ Gentoo ที่พอใจมาก
แพ็กเกจไบนารีจาก upstream ก็เป็นเพียงส่วนขยายอีกอย่างของอิสระนั้น
ก่อนหน้านี้ก็มีเวอร์ชันไบนารีของบางโปรเจกต์หลักอยู่แล้ว หรือไม่ก็สร้าง build server เองได้ แต่ถ้าใช้งานไบนารีได้มากขึ้นอย่างง่ายดาย ผู้คนอีกมากก็จะได้รับประโยชน์เหล่านี้โดยไม่ต้องแบกรับภาระเรื่องเวลามหาศาลจากการต้อง build ของชิ้นเล็กชิ้นน้อยทั้งหมด
ถ้าต้องการความยืดหยุ่นมากขึ้นกับแพ็กเกจบางตัว เช่น patch หรือ use flag ก็ยังทำได้อยู่และดูแลง่ายด้วย
นี่คือ ชัยชนะครั้งใหญ่
มีอยู่ช่วงหนึ่งที่ Gentoo อยู่ในจุดที่พอดีจริง ๆ และลื่นไหลมาก
useflag ก็ไม่ได้มีมากหรือน้อยเกินไป และเป็นยุคที่คอยคอมไพล์ Open Office ใหม่ในคืนฤดูหนาวอันหนาวเย็นเมื่อห้องหอพักหนาวเกินไป
พูดด้วยความเอ็นดูนะ