Bất kỳ tùy chọn để thay thế GNU coreutils trên Linux?


20

Tôi đã suy nghĩ về việc ngừng sử dụng GNU Coreutils trên các hệ thống Linux của mình, nhưng thành thật mà nói, không giống như nhiều thành phần GNU khác, tôi không thể nghĩ ra bất kỳ sự thay thế nào (trên Linux) . Có những lựa chọn thay thế nào cho lõi core GNU? Tôi sẽ cần nhiều hơn một gói? Liên kết đến dự án là bắt buộc, điểm thưởng cho việc đặt tên gói distro.

Ngoài ra, vui lòng không đề xuất mọi thứ trừ khi bạn biết chúng hoạt động trên Linux và có thể tham khảo hướng dẫn. Tôi nghi ngờ tôi sẽ sớm chuyển đổi hạt nhân, và tôi quá lười biếng cho bất cứ điều gì ngoài sự đơn giản ./configure; make; make install. Tôi chắc chắn sẽ không hack C cho nó.

cảnh báo: nếu distro của bạn sử dụng coreutils loại bỏ chúng có thể phá vỡ cách thức phân phối của bạn. Tuy nhiên, không có chúng là đầu tiên trong bạn $PATHkhông nên phá vỡ mọi thứ, vì hầu hết các tập lệnh nên sử dụng đường dẫn tuyệt đối.


10
Thật kỳ lạ, tại sao bạn tìm kiếm sự thay thế?
tshepang

2
@xeno "Mạnh mẽ hơn"? Ngoài ra, hãy nhớ rằng hệ thống của bạn (bao gồm kernel) phần lớn được xây dựng bằng GCC và phụ thuộc vào GLibC :)
tshepang

3
@xeno Debian thực sự hiện đang sử dụng EGLIBC , một loại nhánh của GLibC. Nhưng nó theo sát GLibC, vì vậy sự khác biệt không phải là lớn.
tshepang

2
Cả Clang và tcc đều có thể (cùng một lúc) biên dịch nhân Linux.
Shawn J. Goff

2
Có những người làm việc trên vùng người dùng GNU trên nhân BSD , nhưng tôi chưa nghe nói về cách khác. Thực sự chuyển đổi hạt nhân sẽ dễ dàng hơn. Bạn có thể thử nó trước trong VM nếu bạn ngại.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


15

busybox yêu thích của các hệ thống nhúng Linux.

BusyBox kết hợp các phiên bản nhỏ của nhiều tiện ích UNIX phổ biến thành một tệp thực thi nhỏ. Nó cung cấp thay thế cho hầu hết các tiện ích bạn thường tìm thấy trong tập tin GNU, shellutils, v.v ... Các tiện ích trong BusyBox thường có ít tùy chọn hơn so với anh em GNU đầy đủ tính năng của chúng; tuy nhiên, các tùy chọn được bao gồm cung cấp chức năng mong đợi và hoạt động rất giống với các đối tác GNU của chúng. BusyBox cung cấp một môi trường khá hoàn chỉnh cho bất kỳ hệ thống nhỏ hoặc nhúng nào.
BusyBox đã được viết với mục đích tối ưu hóa kích thước và giới hạn tài nguyên. Nó cũng cực kỳ mô-đun để bạn có thể dễ dàng bao gồm hoặc loại trừ các lệnh (hoặc tính năng) tại thời điểm biên dịch. Điều này giúp dễ dàng tùy chỉnh các hệ thống nhúng của bạn. Để tạo một hệ thống làm việc, chỉ cần thêm một số nút thiết bị trong / dev, một vài tệp cấu hình trong / etc và nhân Linux.

Bạn có thể biến bất kỳ tên coreutil nào thành một liên kết đến tệp nhị phân busybox và nó sẽ hoạt động. bạn cũng có thể chạy busybox <command>và nó sẽ hoạt động. Ví dụ: nếu bạn đang sử dụng Gentoo và chưa cài đặt vi, bạn có thể chạy busybox vi filenamevà bạn sẽ ở trong vi. nó là


vui lòng sửa đổi điều này với các liên kết đến bản phân phối của bạn
xenoterracide

Ngoài ra, đây là mục ưa thích trên nhúng, vì vậy, mặc dù một giải pháp thay thế có lẽ sẽ không đủ để thay thế GNU cho môi trường máy tính để bàn / máy chủ của tôi
xenoterracide

Đây là giải pháp thực tế duy nhất, nếu bạn không muốn hack C. Và các phiên bản busybox phải tuân thủ khá chuẩn.
maxschlepzig

5

Đây là một chủ đề cũ hơn, tôi nhận ra. Tuy nhiên, giải pháp này không bao giờ được đề cập và xuất hiện tương đối cao trên google cho "Linux với bsd userland".

Có một giải pháp khác: gia truyền. Tôi biết nó hoạt động trên Arch và nó được đóng gói trong AUR (ví dụ, xem gnu2sysv). Điều này sẽ thay thế gói coreutils của Arch và cung cấp các tương đương gia truyền. Bạn có thể đọc về toàn bộ nội dung trên wiki của arch: https://wiki.archlinux.org/index.php/Base2heirloom


2

Kiểm tra uutils .

Đây là một triển khai đa nền tảng của các lõi GNU được viết bằng Rust. Nó được MIT cấp phép. Tại thời điểm viết câu trả lời này, nó chưa hoàn thành 100℅ (thiếu một số câu hỏi quan trọng như lscp), nhưng nhiều câu hỏi khác đã được thực hiện.


0

Tôi nghi ngờ bạn sẽ gặp khó khăn trong việc loại bỏ GNU Coreutils, tuy nhiên, luôn có các công cụ BSD tương đương, mặc dù chúng không thay thế cho các công cụ GNU.


Làm cách nào để cài đặt các công cụ BSD trên bản phân phối Linux? Tôi sẽ lấy chúng ở đâu?
xenoterracide

Toàn bộ hệ điều hành của FreeBSD có sẵn thông qua CVS freebsd.org/cgi/cvsweb.cgi/src , tuy nhiên, việc đưa vùng người dùng BSD biên dịch theo nhân Linux sẽ khá khó khăn. Vùng người dùng của GNU có thể dễ mang theo hơn BSD, vì vùng người dùng của GNU (ít nhất là vào lúc bắt đầu) được xây dựng để có thể di động giữa nhiều hạt nhân.
jsbillings

Nghe có vẻ giống như một PITA, chắc chắn nếu có thể một ai đó ở đâu đó đã đóng gói nó ít nhất một lần cho linux.
xenoterracide

Solaris (tính đến 140 - cũng có sẵn) cũng sẽ là một lựa chọn. Nếu bạn đang sử dụng một bản phân phối, bạn là điên rồ. Dừng lại ngay. Nếu bạn đang sử dụng LFS , hãy bật! Chúc vui vẻ! Nếu bạn đang làm một bản phân phối, tôi hoan nghênh sự dũng cảm của bạn thưa ông.
bahamat

Vâng, tôi không chắc nó thậm chí có thể. Có lẽ sẽ dễ dàng hơn khi chỉ cài đặt FreeBSD và kích hoạt khả năng tương thích linux. Bạn có thể dễ dàng để các lõi GNU hoạt động theo FreeBSD, nhưng không phải ngược lại.
jsbillings

0

Thông thường, khi ai đó yêu cầu tránh xa thứ gì đó đang được sử dụng rộng rãi, được kiểm tra tốt, được xác minh trên nhiều nền tảng, đó là biểu hiện bên ngoài của một vấn đề tiềm ẩn được gọi là "mùi mã" và sự tích lũy không kiểm soát của "nợ kỹ thuật" hoặc "mã" nợ nần". Kho lưu trữ GNU đã tạo ra một khoản nợ mã khá lớn trong nhiều năm và khi một cơ sở mã không được duy trì đúng cách, nó có thể đạt đến một điểm đột phá (mã kế thừa và thậm chí cả mã kế thừa bệnh hoạn).

Thông thường, người ta sẽ thực hiện một quy trình tái thiết kế và tái cấu trúc theo các khoảng thời gian để giữ cho điều này được kiểm soát. Vì vậy, câu hỏi thực sự được đặt ra ở đây là liệu một phiên bản lõi được tái cấu trúc đã được phát triển hay chưa. Tất nhiên, điều này bao gồm khả năng thay thế hoàn toàn (như một trường hợp đặc biệt) - giống như Wayland đang được dành cho X ... nhiều nhà phát triển của nó đi thẳng ra khỏi trại X.

Đề nghị của tôi là thực sự đi vào và tái cấu trúc coreutils. Ai đó phải làm điều đó. Và bất cứ ai đặt ra vấn đề thay thế coreutils - ý tưởng của bạn là dự án của bạn.

Để kết thúc này, hãy tận dụng bất kỳ tự động hóa nào bạn có thể tìm thấy: tái cấu trúc các công cụ, như cscout, hoặc bất cứ điều gì áp dụng các phương pháp phân tích / tổng hợp nâng cao hơn (ví dụ: mạng khái niệm chính thức). Nhưng phân tích sâu vẫn là một lĩnh vực tương đối mới và mở của nghiên cứu tích cực - và chuyển sang Trí tuệ nhân tạo. (Một kỹ sư phần mềm robot.)

Hầu hết các tiện ích đã có sẵn bộ kiểm thử, vì vậy việc xác thực có thể được thực hiện với thay đổi từng bước tiến bộ + các bước kiểm tra hồi quy tự động; có thể đi khá nhanh (ví dụ 10 hoặc nhiều cập nhật sửa đổi / ngày). Một sự phức tạp của quá trình này xảy ra nếu có sự phụ thuộc phần cứng hoặc phần mềm cấp thấp ở bất cứ đâu trong bộ phần mềm; kể từ đó đòi hỏi xác nhận trên nhiều nền tảng. Tôi không biết nhiều về điều đó có trong coreutils; cần có một số loại tách trong nó khỏi các lớp phần cứng hoặc phần mềm cấp thấp (ví dụ: số nơi mà coreutils biết loại nàocủa hệ thống tập tin, nó phải ở mức tối thiểu hoặc tốt hơn, bằng không.) Trình giả lập và máy ảo, được đưa vào sử dụng cho mục đích thử nghiệm đa nền tảng, có những hạn chế. Chẳng hạn, Mac OS X được thiết kế đặc biệt theo cách cản trở khả năng giả lập hoặc VM nó.


-1

Solaris (kể từ svn_140-gì đó) cũng sẽ là một lựa chọn.

Nếu bạn đang sử dụng một bản phân phối, bạn là điên rồ. Dừng lại ngay. Tìm kiếm sự giúp đỡ tâm thần.

Nếu bạn đang sử dụng LFS , hãy bật! Chúc vui vẻ!

Nếu bạn đang làm một bản phân phối, tôi hoan nghênh sự dũng cảm của bạn thưa ông.


1
đây không phải là câu hỏi về "distro" nào tôi có thể sử dụng, đó là về việc thay thế coreutils trên Linux. Trừ khi bạn đang đề cập đến coreutils opensolaris? đây cũng là một Pita ít hơn so với tùy chọn FreeBSD?
xenoterracide

1
Mã nguồn của OpenSolaris chỉ là Solaris. Mã nguồn Solaris cho đến khi svn_14x được Sun / Oracle phát hành dưới CDDL. Về cơ bản có ba di sản chính cho người dùng Unix. Unix "Di truyền" (Solaris, AIX, True64, v.v., xuất phát từ mã AT & T và phần lớn đã đóng cửa, nhưng Solaris đã mở một thời gian), BSD (cuối cùng đứng trên chính nó là 4,4 lite) và GNU. Nhưng tôi nghĩ rằng việc di chuyển khỏi GNU sẽ khó khăn như nhau (hoặc dễ dàng) khi bạn đi với BSD hoặc Solaris. Hoặc bạn có thể thực sự tham vọng và tạo ra xenocore-utils ;-)
bahamat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.