ข้อแรกข้อจำกัดความรับผิดชอบที่ขัดแย้งทางผลประโยชน์ล่วงหน้า: ฉันเป็นผู้พัฒนา GoboLinux มาเป็นเวลานาน
ประการที่สองการอ้างสิทธิ์ในหน้าแรกของความเชี่ยวชาญด้านโดเมน: ฉันเป็นนักพัฒนา GoboLinux มาเป็นเวลานาน
มีโครงสร้างที่แตกต่างกันเล็กน้อยในการใช้งานในปัจจุบัน GoboLinuxมีหนึ่งและเครื่องมือเช่นGNU Stow , Homebrewฯลฯ ใช้สิ่งที่ค่อนข้างคล้ายกัน (ส่วนใหญ่สำหรับโปรแกรมผู้ใช้) NixOSยังใช้ลำดับชั้นที่ไม่เป็นมาตรฐานสำหรับโปรแกรมและปรัชญาของชีวิต นอกจากนี้ยังเป็นการทดลอง LFS ทั่วไปที่สมเหตุสมผล
ฉันจะอธิบายทั้งหมดเหล่านั้นจากนั้นแสดงความคิดเห็นจากประสบการณ์เกี่ยวกับวิธีการทำงานในทางปฏิบัติ ("ความเป็นไปได้") คำตอบสั้น ๆ ว่าใช่มันเป็นไปได้ แต่คุณต้องไปจริงๆอยากให้มัน
GoboLinux
GoboLinux มีโครงสร้างคล้ายกับสิ่งที่คุณอธิบาย ซอฟต์แวร์ถูกติดตั้งภายใต้/Programs
: /Programs/ZSH/5.0.8
บรรจุไฟล์ทั้งหมดที่เป็นของ ZSH 5.0.8 ในไดเร็กทอรีปกติbin
/ lib
/ ... เครื่องมือระบบสร้าง symlink ไปยังไฟล์เหล่านั้นภายใต้/System/Links
ลำดับชั้นซึ่งแม็พกับ/usr
¹ PATH
ตัวแปรมีเพียงไดเรกทอรีปฏิบัติการแบบครบวงจรที่เดียวและLD_LIBRARY_PATH
ไม่ได้ใช้ ซอฟต์แวร์หลายเวอร์ชันสามารถอยู่ร่วมกันได้ในคราวเดียว แต่bin/zsh
จะมีการเชื่อมโยงไฟล์เพียงหนึ่งไฟล์โดยใช้ชื่อที่กำหนด ( ) คุณสามารถเข้าถึงผู้อื่นได้โดยใช้เส้นทางเต็ม
ชุดของ symlink ที่เข้ากันได้ก็มีอยู่เช่นกัน/bin
และ/usr/bin
แมปไปยังไดเรกทอรี executables รวมและอื่น ๆ สิ่งนี้ทำให้ชีวิตของซอฟต์แวร์ในเวลาทำงานง่ายขึ้น GoboHide แพทช์เคอร์เนลช่วยให้ลิงก์ความเข้ากันได้เหล่านั้นถูกซ่อนจากรายชื่อไฟล์ (แต่ยังสามารถผ่านได้)
ในทางตรงกันข้ามคำตอบอื่นคุณไม่จำเป็นต้องแก้ไขรหัสเคอร์เนล: GoboHide เป็นเครื่องสำอางอย่างหมดจดและเคอร์เนลไม่ได้ขึ้นอยู่กับเส้นทางของพื้นที่ผู้ใช้โดยทั่วไป² GoboLinux มีระบบเริ่มต้น bespoke แต่ไม่จำเป็นต้องทำเช่นนี้
สโลแกนนั้นมักจะเป็น "ระบบไฟล์คือตัวจัดการแพ็กเกจ" แต่มีเครื่องมือการจัดการแพ็กเกจตามปกติในระบบ คุณสามารถทำทุกอย่างโดยใช้cp
, rm
และln
แม้ว่า
หากคุณต้องการใช้ GoboLinux คุณจะยินดีมาก ฉันจะทราบว่ามันเป็นทีมพัฒนาขนาดเล็กและคุณมีแนวโน้มที่จะพบว่าซอฟต์แวร์บางอย่างที่คุณต้องการไม่ได้รับการบรรจุถ้าไม่มีใครต้องการใช้มาก่อน ข่าวดีก็คือโดยทั่วไปแล้วมันค่อนข้างง่ายที่จะสร้างโปรแกรมสำหรับระบบ ("สูตร" มาตรฐานมีความยาวประมาณสามบรรทัด); ข่าวร้ายก็คือบางครั้งมันซับซ้อนอย่างไม่ราบรื่นซึ่งฉันจะกล่าวเพิ่มเติมด้านล่าง
สิ่งพิมพ์
มี "สิ่งพิมพ์" สองสามฉบับ ฉันให้งานนำเสนอที่linux.conf.au 2010บนระบบโดยรวมซึ่งครอบคลุมทุกอย่างโดยทั่วไปซึ่งมีอยู่ในวิดีโอ: ogv mp4 (บนกระจก Linux Australia ของคุณ) ฉันยังเขียนบันทึกย่อของฉันเป็นร้อยแก้ว นอกจากนี้ยังมีเอกสารเก่า ๆ สองสามฉบับรวมถึง " I not not clueless " ที่มีชื่อเสียงบนเว็บไซต์ GoboLinuxซึ่งระบุถึงการคัดค้านและปัญหา ฉันคิดว่าวันนี้พวกเราทุกคนไม่พอใจกันมากขึ้นและฉันสงสัยว่าการเปิดตัวในอนาคตจะนำมาใช้/usr
เป็นตำแหน่งพื้นฐานสำหรับการเชื่อมโยง
NixOS
NixOS/nix/store
ทำให้แต่ละโปรแกรมที่ติดตั้งลงในไดเรกทอรีของตัวเองภายใต้ ไดเรกทอรีเหล่านั้นมีชื่อคล้าย/nix/store/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-firefox-3.5.4/
- มีแฮชการเข้ารหัสที่แสดงถึงชุดการพึ่งพาทั้งหมดและการกำหนดค่าที่นำไปสู่โปรแกรมนั้น ภายในไดเรกทอรีนั้นเป็นไฟล์ที่เกี่ยวข้องทั้งหมดโดยมีตำแหน่งปกติมากกว่าหรือน้อยกว่าในเครื่อง
นอกจากนี้ยังช่วยให้คุณมีหลายรุ่นในคราวเดียวและสามารถใช้กับเวอร์ชันใด ๆ ก็ได้ NixOS มีปรัชญาทั้งหมดที่เกี่ยวข้องกับการกำหนดค่าที่ทำซ้ำได้: โดยพื้นฐานแล้วมันจะมีระบบการจัดการการกำหนดค่าที่อบเข้ามาตั้งแต่เริ่มต้น ต้องอาศัยการจัดการด้านสิ่งแวดล้อมเพื่อนำเสนอโลกที่ถูกต้องของโปรแกรมที่ติดตั้งให้กับผู้ใช้
LFS
มันค่อนข้างตรงไปตรงมาที่จะต้องใช้Linux ตั้งแต่เริ่มต้นและตั้งค่าลำดับชั้นที่คุณต้องการเพียงแค่สร้างไดเรกทอรีและกำหนดค่าทุกอย่างเพื่อติดตั้งในตำแหน่งที่ถูกต้อง ฉันได้ทำมันสองสามครั้งในการสร้างการทดสอบ GoboLinux และมันก็ไม่ได้ยากกว่า LFS ธรรมดามากนัก คุณจำเป็นต้องสร้าง symlink ที่ใช้งานร่วมกันได้ในกรณีนั้น ไม่อย่างนั้นมันจะยากกว่าเดิม แต่การใช้ยูเนี่ยนเมาท์อย่างระมัดระวังอาจหลีกเลี่ยงได้ถ้าคุณต้องการ
ฉันรู้สึกเหมือนมีคำแนะนำ LFSเกี่ยวกับสิ่งนั้น ณ จุดหนึ่ง แต่ฉันไม่สามารถหาได้ในตอนนี้
ในความเป็นไปได้
สิ่งที่เกี่ยวกับ FHS ก็คือมันเป็นมาตรฐานมันเป็นเรื่องธรรมดามากและมันสะท้อนให้เห็นถึงการใช้งานที่มีอยู่ในปัจจุบันในเวลาที่เขียน ผู้ใช้ส่วนใหญ่จะไม่อยู่ในระบบที่ไม่เป็นไปตามเค้าโครงดังกล่าว ผลที่ตามมาก็คือซอฟต์แวร์จำนวนมากมีการพึ่งพาที่แฝงอยู่ซึ่งไม่มีใครรู้ตัว
สคริปต์ทั้งหมดที่มี#!/bin/bash
? ไม่ดีถ้าคุณไม่มี Bash ที่นั่น นั่นคือเหตุผลที่ GoboLinux มี symlinks ที่เข้ากันได้ทั้งหมด เป็นเพียงการปฏิบัติ ซอฟต์แวร์จำนวนมากล้มเหลวในการทำงานไม่ว่าจะเป็นเวลาสร้างหรือขณะทำงานภายใต้รูปแบบที่ไม่ได้มาตรฐานและจากนั้นจะต้องทำการปะแก้ไขเพื่อแก้ไข
โปรแกรม Autoconf พื้นฐานของคุณมักจะติดตั้งตัวเองอย่างมีความสุขทุกที่ที่คุณบอกมันและมันค่อนข้างง่ายที่จะทำให้กระบวนการส่งผ่านถูกต้อง--prefix
โดยอัตโนมัติ ระบบการสร้างอื่น ๆ อาจไม่ได้ดีเสมอไปไม่ว่าจะโดยการอบในลำดับชั้นหรือโดยผู้เขียนชั้นนำเพื่อเขียนการกำหนดค่าที่ไม่ใช่แบบพกพา CMake เป็นผู้กระทำผิดที่สำคัญในประเภทหลัง นั่นหมายความว่าถ้าคุณต้องการมีชีวิตอยู่ในโลกนี้คุณจะต้องเตรียมพร้อมที่จะทำงานมากขึ้นในระบบสร้างของคนอื่น มันเป็นเรื่องยุ่งยากที่จะต้องแก้ไขไฟล์ที่สร้างขึ้นแบบไดนามิกในระหว่างการรวบรวม
รันไทม์เป็นอีกเรื่องหนึ่งอีกครั้ง หลายโปรแกรมมีข้อสันนิษฐานว่าไฟล์ของพวกเขาเองหรือไฟล์ของคนอื่นนั้นมีความเกี่ยวข้องกับพวกเขาหรืออย่างแน่นอน เมื่อคุณเริ่มใช้ symlink เพื่อแสดงมุมมองที่สอดคล้องกันโปรแกรมจำนวนมากมีข้อบกพร่องในการจัดการกับพวกเขา (หรือบางครั้งพฤติกรรมที่ถูกต้องที่ไม่สามารถช่วยเหลือคุณได้) ยกตัวอย่างเช่นเครื่องมือfoobar
อาจคาดหวังที่จะหาต่อไปปฏิบัติการไปหรือในbaz
../sbin
ขึ้นอยู่กับว่ามันอ่าน symlink หรือไม่สิ่งเหล่านั้นอาจเป็นสองที่ที่แตกต่างกันและทั้งสองอย่างนั้นอาจไม่ถูกต้อง
ปัญหารวมคือ/usr/share
ไดเรกทอรี แน่นอนว่าสำหรับไฟล์ที่แชร์ แต่เมื่อคุณใส่ทุกโปรแกรมไว้ในคำนำหน้าของตัวเองมันจะไม่ถูกแชร์อีกต่อไป สิ่งนี้นำไปสู่โปรแกรมที่ไม่สามารถหาไอคอนมาตรฐานและสิ่งที่คล้ายกันได้ GoboLinux จัดการกับสิ่งนี้ในวิธีที่น่าเกลียดมาก: ณ เวลาที่สร้าง$prefix/share
เป็น symlink $prefix/Shared
และหลังจากสร้างลิงค์แล้วชี้ไปที่share
ไดเรกทอรีทั่วโลกแทน ตอนนี้ใช้ sandboxing เวลาคอมไพล์และการเคลื่อนย้ายไฟล์เพื่อจัดการกับshare
(และไดเร็กทอรีอื่น ๆ ) แต่ข้อผิดพลาดรันไทม์จากลิงก์การอ่านอาจยังคงเป็นปัญหา
สวีทของหลายโปรแกรมเป็นปัญหาอื่น GoboLinux ไม่เคยได้รับ GNOME ทำงานอย่างเต็มที่และฉันไม่เชื่อว่า NixOS ก็มีเช่นกันเพราะรูปแบบการพึ่งพาซึ่งกันและกันได้รับการอบจึงเป็นเพียงว่ายากที่จะรักษาพวกเขาทั้งหมด
ดังนั้นใช่เป็นไปได้แต่:
- มีงานจำนวนมากที่เกี่ยวข้องในการทำสิ่งต่างๆ
- ซอฟต์แวร์บางตัวอาจไม่ทำงาน
- ผู้คนจะมองคุณตลก
สิ่งเหล่านี้อาจเป็นปัญหาสำหรับคุณหรือไม่ก็ได้
¹เวอร์ชัน 14.01 ใช้ซึ่งแผนที่โดยตรง/System/Index
/usr
ฉันสงสัยว่ารุ่นในอนาคตอาจวางลำดับชั้นของลิงค์ / ดัชนีและใช้/usr
ทั่วกระดาน
²มันจำเป็นต้อง/bin/sh
มีอยู่โดยค่าเริ่มต้น