ตัวเลือกใด ๆ ที่จะแทนที่ GNU coreutils บน Linux?


20

ฉันได้รับความคิดเกี่ยวกับการหยุดใช้ของ GNU coreutils บนระบบลินุกซ์ของฉัน แต่จะซื่อสัตย์แตกต่างจากหลายส่วนประกอบ GNU อื่น ๆ ผมไม่สามารถคิดทางเลือกใด ๆ(บน Linux) coreutils ของ GNU มีทางเลือกอะไรบ้าง? ฉันต้องการมากกว่าหนึ่งแพ็คเกจหรือไม่ ลิงค์ไปยังโครงการจะต้องมีคะแนนโบนัสสำหรับแพ็คเกจการตั้งชื่อ distro

นอกจากนี้โปรดอย่าแนะนำสิ่งต่าง ๆ เว้นแต่คุณจะรู้ว่ามันทำงานบน Linux และสามารถอ้างอิงคำแนะนำได้ ฉันสงสัยฉันจะเปลี่ยนเมล็ดในเร็ว ๆ ./configure; make; make installนี้และฉันมากขี้เกียจเกินไปสำหรับสิ่งที่มากเกินตรงไปตรง แน่นอนฉันจะไม่แฮ็ค C สำหรับมัน

คำเตือน:หาก distro ของคุณใช้ coreutils ในการลบออกอาจทำลายวิธีการทำงานของ distro ของคุณ อย่างไรก็ตามการไม่มีพวกเขาเป็นสิ่งแรกที่คุณ$PATHไม่ควรทำเพราะสคริปต์ส่วนใหญ่ควรใช้เส้นทางที่สมบูรณ์


10
อยากรู้ว่าทำไมคุณมองหาทางเลือก?
tshepang

2
@xeno "แข็งแกร่งยิ่งกว่า"? โปรดทราบว่าระบบของคุณ (รวมถึงเคอร์เนล) ส่วนใหญ่จะถูกสร้างขึ้นด้วย GCC และขึ้นอยู่กับ GLibC :)
tshepang

3
@xeno Debian ตอนนี้ใช้EGLIBCซึ่งเป็นทางแยกของ GLibC แต่มันติดตาม GLibC อย่างใกล้ชิดดังนั้นความแตกต่างจึงไม่ใหญ่
tshepang

2
ทั้ง Clang และ tcc สามารถ (ในคราวเดียวแล้ว) คอมไพล์เคอร์เนล Linux
Shawn J. Goff

2
มีคนกำลังทำงานบนuserland GNU ในเคอร์เนล BSDแต่ฉันไม่เคยได้ยินเลย การสลับเมล็ดจะง่ายกว่าจริงๆ คุณสามารถลองมันเป็นครั้งแรกใน VM ถ้าคุณเป็นคนขี้อาย
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


15

busybox รายการโปรดของระบบฝังตัว Linux

BusyBox รวมยูทิลิตี้ยูนิกซ์ทั่วไปหลายรุ่นเข้าด้วยกันในโปรแกรมขนาดเล็ก มันให้การแทนที่ยูทิลิตี้ส่วนใหญ่ที่คุณพบใน GNU fileutils, shellutils ฯลฯ ยูทิลิตี้ใน BusyBox มักจะมีตัวเลือกน้อยกว่าลูกพี่ลูกน้อง GNU ที่มีคุณสมบัติครบถ้วน อย่างไรก็ตามตัวเลือกต่าง ๆ ที่รวมอยู่ในนั้นจะมีฟังก์ชั่นที่คาดหวังและมีพฤติกรรมคล้ายกับ GNU อื่น ๆ BusyBox จัดเตรียมสภาพแวดล้อมที่ค่อนข้างสมบูรณ์สำหรับระบบขนาดเล็กหรือฝังตัว
BusyBox ได้รับการเขียนโดยคำนึงถึงขนาดการเพิ่มประสิทธิภาพและทรัพยากรที่มีอยู่อย่าง จำกัด นอกจากนี้ยังเป็นแบบแยกส่วนมากดังนั้นคุณสามารถรวมหรือแยกคำสั่ง (หรือคุณสมบัติ) ได้อย่างง่ายดายในเวลารวบรวม สิ่งนี้ทำให้ง่ายต่อการปรับแต่งระบบฝังตัวของคุณ ในการสร้างระบบที่ใช้งานได้ให้เพิ่มโหนดอุปกรณ์บางตัวใน / dev ไฟล์กำหนดค่าบางไฟล์ใน / etc และเคอร์เนล Linux

คุณสามารถทำให้ coreutil ชื่อลิงค์ไปยัง busybox binary และมันจะทำงาน คุณยังสามารถเรียกใช้busybox <command>และมันจะทำงาน ตัวอย่าง: หากคุณอยู่ใน Gentoo และยังไม่ได้ติดตั้งviคุณสามารถเรียกใช้busybox vi filenameและคุณจะอยู่ใน vi มัน



และนี่ก็เป็นรายการโปรดที่ฝังอยู่ด้วยดังนั้นทางเลือกอื่นอาจไม่เพียงพอที่จะแทนที่ GNU สำหรับสภาพแวดล้อมเดสก์ท็อป / เซิร์ฟเวอร์ของฉัน
xenoterracide

นี่เป็นวิธีการแก้ปัญหาทางปฏิบัติเพียงอย่างเดียวถ้าคุณไม่ต้องการแฮ็ค C และเวอร์ชันของ busybox ควรจะเป็นไปตามมาตรฐาน
maxschlepzig

5

นี่เป็นหัวข้อเก่าที่ฉันรู้ อย่างไรก็ตามวิธีการแก้ปัญหานี้ไม่เคยพูดถึงและค่อนข้างสูงใน google สำหรับ "Linux กับ bsd userland"

มีวิธีแก้ไขปัญหาอื่น: มรดกตกทอด ฉันรู้ว่ามันใช้งานได้กับ Arch และมันบรรจุอยู่ใน AUR (ดู gnu2sysv เป็นต้น) สิ่งนี้จะแทนที่แพ็กเกจ coreutils ของ Arch และให้ค่าเทียบเท่ามรดกสืบทอด คุณสามารถอ่านเกี่ยวกับสิ่งทั้งหมดใน wiki ของ arch: https://wiki.archlinux.org/index.php/Base2heirloom


2

ตรวจสอบuutils

นี่เป็นการใช้งานข้ามแพลตฟอร์มของ coreutils ของ GNU ที่เขียนใน Rust เป็นใบอนุญาตของ MIT ในขณะที่เขียนคำตอบนี้มันไม่สมบูรณ์100℅ (หายไปบางส่วนที่สำคัญเช่นlsและcp) แต่คนอื่น ๆ จะทำ


0

ฉันสงสัยว่าคุณจะมีเวลาค่อนข้างลำบากในการกำจัด GNU Coreutils แต่มีเครื่องมือ BSD ที่เทียบเท่าเสมอถึงแม้ว่ามันจะไม่ใช่การแทนที่แบบหล่นสำหรับเครื่องมือ GNU


ฉันจะไปเกี่ยวกับการติดตั้งเครื่องมือ BSD บน Linux distro ได้อย่างไร ฉันจะรับพวกเขาได้ที่ไหน
xenoterracide

ระบบปฏิบัติการทั้งหมดของ FreeBSD นั้นมีให้ผ่าน CVS freebsd.org/cgi/cvsweb.cgi/srcอย่างไรก็ตามการทำให้ผู้ใช้ BSD ทำการคอมไพล์ภายใต้เคอร์เนลของ Linux จะค่อนข้างยาก userland ของ GNU นั้นอาจพกพาได้มากกว่า BSD เนื่องจาก userland ของ GNU (อย่างน้อยตอนต้น) ถูกสร้างขึ้นเพื่อให้พกพาได้ระหว่างเคอร์เนลหลาย ๆ ตัว
jsbillings

ฟังดูเหมือน PITA แน่นอนว่าเป็นไปได้ที่จะมีใครบางคนบรรจุกล่องอย่างน้อยหนึ่งครั้งสำหรับ linux
xenoterracide

Solaris (จาก 140- บางสิ่งบางอย่างยังมีอยู่) ก็จะเป็นตัวเลือก หากคุณกำลังใช้ distro คุณจะบ้า หยุดเดี๋ยวนี้. หากคุณใช้LFSลองเปิดดู! มีความสุข! หากคุณกำลังทำ distro ฉันปรบมือให้คุณความกล้าหาญของคุณ
บาฮามาต

ใช่ฉันไม่แน่ใจว่ามันเป็นไปได้ มันอาจจะง่ายกว่าที่จะติดตั้ง FreeBSD และเปิดใช้งานความเข้ากันได้ของ linux คุณสามารถทำให้ GNU coreutils ทำงานภายใต้ FreeBSD ได้อย่างง่ายดาย แต่ไม่ใช่ในทางกลับกัน
jsbillings

0

โดยปกติเมื่อมีคนขอให้ออกไปจากสิ่งที่มีการใช้อย่างแพร่หลายทดสอบอย่างดีตรวจสอบในหลาย ๆ แพลตฟอร์มมันเป็นการแสดงออกถึงปัญหาพื้นฐานที่รู้จักกันในชื่อ "กลิ่นรหัส" และการสะสมของ "หนี้ทางเทคนิค" หรือ "รหัสที่ไม่มีการควบคุม หนี้" ไฟล์เก็บถาวร GNU ได้สร้างหนี้รหัสค่อนข้างมากในช่วงหลายปีที่ผ่านมาและเมื่อ codebase ไม่ได้รับการดูแลอย่างถูกต้องก็สามารถไปถึงจุดแตกหักได้ (รหัสดั้งเดิมและแม้แต่รหัสมรดกที่ผิดปกติ)

โดยปกติเราจะดำเนินการกระบวนการวิศวกรรมซ้ำและการปรับโครงสร้างใหม่ตามช่วงเวลาเพื่อควบคุมสิ่งนี้ ดังนั้นคำถามจริงที่ถูกวางที่นี่คือว่า coreutils รุ่นปรับปรุงใหม่ได้รับการพัฒนาหรือไม่ แน่นอนว่านี่รวมถึงความเป็นไปได้ของการเปลี่ยนทันที (เป็นกรณีพิเศษ) - เช่นเดียวกับ Wayland ที่กำลังถูกขว้างให้เป็น X ... นักพัฒนาจำนวนมากที่ออกมาจากค่าย X

ข้อเสนอแนะของฉันคือการเข้าไปในและ refactor coreutils ใครบางคนต้องทำมัน และใครก็ตามที่หยิบยกประเด็นเรื่องการเปลี่ยนแกนกลาง - ความคิดของคุณเกี่ยวกับโครงการของคุณ

ด้วยเหตุนี้ให้ใช้ประโยชน์จากระบบอัตโนมัติใด ๆ ที่คุณสามารถหาได้: การเปลี่ยนโครงสร้างเครื่องยนต์เช่น cscout หรือสิ่งอื่นใดที่ใช้วิธีการวิเคราะห์ / สังเคราะห์ขั้นสูงเพิ่มเติม แต่การวิเคราะห์เชิงลึกยังคงเป็นพื้นที่ที่ค่อนข้างใหม่และเปิดกว้างสำหรับการวิจัยเชิงรุกและข้ามไปสู่ปัญญาประดิษฐ์ (วิศวกรซอฟต์แวร์หุ่นยนต์)

ระบบสาธารณูปโภคส่วนใหญ่ควรมีห้องทดสอบอยู่แล้วดังนั้นการตรวจสอบสามารถทำได้ด้วยการเปลี่ยนแปลงแบบเป็นขั้นตอนที่ก้าวหน้า + ขั้นตอนการทดสอบการถดถอยอัตโนมัติ ซึ่งสามารถไปได้ค่อนข้างเร็ว (เช่นอัปเดตการแก้ไข 10 ครั้งขึ้นไป / วัน) ความซับซ้อนของกระบวนการนี้เกิดขึ้นหากมีการพึ่งพาฮาร์ดแวร์หรือซอฟต์แวร์ระดับต่ำที่ใดก็ได้ในชุดซอฟต์แวร์ ตั้งแต่นั้นมาเกี่ยวข้องกับการตรวจสอบในหลายแพลตฟอร์ม ฉันไม่รู้มากว่ามี coreutils; ควรมีการแยกบางอย่างจากฮาร์ดแวร์หรือเลเยอร์ซอฟต์แวร์ระดับต่ำ (เช่นจำนวนสถานที่ที่ coreutils รู้ประเภทใดระบบไฟล์ที่ใช้ควรมีน้อยที่สุดหรือดีกว่าศูนย์) เครื่องจำลองและเครื่องเสมือนใช้สำหรับการทดสอบหลายแพลตฟอร์มมีข้อ จำกัด ตัวอย่างเช่น Mac OS X ได้รับการออกแบบมาโดยเฉพาะเพื่อขัดขวางความสามารถในการเลียนแบบหรือ VM


-1

Solaris (เหมือน svn_140-something) ก็เป็นตัวเลือกเช่นกัน

หากคุณกำลังใช้ distro คุณจะบ้า หยุดเดี๋ยวนี้. ขอความช่วยเหลือด้านจิตเวช

หากคุณใช้LFSลองเปิดดู! มีความสุข!

หากคุณกำลังทำ distro ฉันปรบมือให้คุณความกล้าหาญของคุณ


1
นี่ไม่ใช่คำถามเกี่ยวกับ "distro" ที่ฉันสามารถใช้ได้ แต่เกี่ยวกับการแทนที่ coreutils บน Linux ยกเว้นว่าคุณกำลังอ้างถึง coreutils opensolaris? นอกจากนี้ยังมี PITA น้อยกว่าตัวเลือก FreeBSD หรือไม่
xenoterracide

1
ซอร์สโค้ดสำหรับ OpenSolaris เป็นเพียง Solaris ซอร์สโค้ด Solaris จนถึง svn_14x ถูกเผยแพร่โดย Sun / Oracle ภายใต้ CDDL โดยทั่วไปมีสามมรดกหลักสำหรับ Unix userland "พันธุกรรม" Unix (Solaris, AIX, True64 ฯลฯ ซึ่งมาจากรหัส AT&T และปิดส่วนใหญ่ แต่ Solaris เปิดให้บริการครั้งหนึ่ง) BSD (ซึ่งในที่สุดก็ยืนอยู่บนตัวของมันเอง 4.4-lite) และ GNU แต่ฉันคิดว่าการย้ายออกจาก GNU นั้นจะยากพอ ๆ กับที่คุณไปกับ BSD หรือ Solaris หรือคุณจะได้รับความทะเยอทะยานจริงๆและทำให้ xenocore-utils ;-)
บาฮามาต
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.