Adakah opsi untuk mengganti GNU coreutils di Linux?

20

Saya sudah berpikir untuk menghentikan penggunaan GNU Coreutils pada sistem Linux saya, tetapi jujur ​​saja, tidak seperti banyak komponen GNU lainnya, saya tidak dapat memikirkan alternatif lain (di Linux) . Apa alternatif yang ada untuk GNU coreutils? Apakah saya memerlukan lebih dari satu paket? Tautan ke proyek adalah keharusan, poin bonus untuk penamaan paket distro.

Juga tolong jangan menyarankan hal-hal kecuali Anda tahu mereka bekerja di Linux, dan dapat referensi petunjuk. Saya ragu saya akan segera mengganti kernel, dan saya terlalu malas untuk hal-hal yang jauh dari langsung ./configure; make; make install. Saya pasti tidak akan meretas C untuk itu.

peringatan: jika distro Anda menggunakan coreutils, menghapusnya dapat merusak fungsi distro Anda. Namun tidak menjadikan mereka yang pertama dalam hal Anda $PATHtidak boleh merusak, karena kebanyakan skrip harus menggunakan jalur absolut.

xenoterracide
sumber
10
Anehnya, mengapa Anda mencari alternatif?
tshepang
2
@ xeno "Lebih kuat"? Juga perlu diingat bahwa sistem Anda (termasuk kernel) sebagian besar dibangun dengan GCC dan tergantung pada GLibC :)
tshepang
3
@xeno Debian sebenarnya sekarang menggunakan EGLIBC , semacam garpu dari GLibC. Tapi GLibC mengikuti dengan cermat, jadi perbedaannya tidak sebesar itu.
tshepang
2
Dentang dan tcc dapat (pada satu waktu, bagaimanapun) mengkompilasi kernel Linux.
Shawn J. Goff
2
Ada orang yang bekerja di GNU userland pada kernel BSD , tapi saya belum pernah mendengar tentang hal sebaliknya. Benar-benar mengganti kernel akan lebih mudah. Anda dapat mencobanya terlebih dahulu dalam VM jika Anda malu.
Gilles 'SO- stop being evil'

Jawaban:

15

busybox favorit sistem Linux Tertanam.

BusyBox menggabungkan versi kecil dari banyak utilitas UNIX umum menjadi satu executable kecil. Ini memberikan penggantian untuk sebagian besar utilitas yang biasanya Anda temukan di GNU fileutils, shellutils, dll. Utilitas di BusyBox umumnya memiliki lebih sedikit pilihan daripada sepupu GNU berfitur lengkap mereka; namun, opsi yang disertakan menyediakan fungsionalitas yang diharapkan dan berperilaku sangat mirip dengan rekan-rekan GNU mereka. BusyBox menyediakan lingkungan yang cukup lengkap untuk sistem kecil atau tertanam.
BusyBox telah ditulis dengan optimasi ukuran dan sumber daya terbatas dalam pikiran. Ini juga sangat modular sehingga Anda dapat dengan mudah memasukkan atau mengecualikan perintah (atau fitur) pada waktu kompilasi. Ini membuatnya mudah untuk menyesuaikan sistem embedded Anda. Untuk membuat sistem kerja, cukup tambahkan beberapa node perangkat di / dev, beberapa file konfigurasi di / etc, dan kernel Linux.

Anda dapat membuat coreutil nama tautan ke binary busybox dan itu akan berhasil. Anda juga dapat menjalankan busybox <command>dan itu akan berhasil. Contoh: jika Anda menggunakan Gentoo dan belum menginstalnya vi, Anda dapat menjalankan busybox vi filenamedan Anda akan berada di vi. Nya

xenoterracide
sumber
jangan ragu untuk memodifikasi ini dengan tautan ke distro
xenoterracide Anda
juga, ini adalah favorit pada embedded, jadi meskipun alternatif itu mungkin tidak akan cukup untuk menggantikan GNU untuk lingkungan desktop / server saya
xenoterracide
Ini adalah satu-satunya solusi praktis, jika Anda tidak ingin meretas C. Dan versi busybox harus sesuai standar.
maxschlepzig
5

Saya sadar ini adalah topik yang lebih tua. Namun, solusi ini tidak pernah disebutkan dan muncul relatif tinggi di google untuk "Linux dengan bsd userland".

Ada solusi lain: pusaka. Saya tahu ini berfungsi di Arch, dan itu dikemas dalam AUR (lihat gnu2sysv, misalnya). Ini akan menggantikan paket coreutils Arch dan memberikan padanan pusaka. Anda dapat membaca semuanya di wiki arch: https://wiki.archlinux.org/index.php/Base2heirloom

bbenne10
sumber
2

Lihat uutils .

Ini adalah implementasi lintas platform dari GNU coreutils yang ditulis dalam Rust. Ini adalah lisensi MIT. Pada saat penulisan jawaban ini tidak 100℅ lengkap (hilang beberapa yang penting seperti lsdan cp), tetapi banyak yang lain dilakukan.

Russ
sumber
0

Saya menduga Anda akan kesulitan menyingkirkan GNU Coreutils, namun, selalu ada alat BSD yang setara, meskipun mereka bukan pengganti pengganti untuk alat GNU.

jsbillings
sumber
bagaimana saya menginstal perangkat BSD pada distro Linux? di mana saya akan mendapatkannya?
xenoterracide
Seluruh OS FreeBSD tersedia melalui CVS freebsd.org/cgi/cvsweb.cgi/src , namun, mendapatkan BSD userland untuk dikompilasi di bawah kernel Linux akan agak sulit. Userland GNU mungkin lebih portable daripada BSD, karena userland GNU (setidaknya di awal) dibangun untuk menjadi portable di antara banyak kernel.
jsbillings
itu terdengar seperti PITA, yakin apakah itu mungkin seseorang di suatu tempat telah mengemasnya setidaknya sekali untuk linux.
xenoterracide
Solaris (pada 140-sesuatu juga tersedia) juga akan menjadi pilihan. Jika Anda menggunakan distro, Anda gila. Berhenti sekarang. Jika Anda menggunakan LFS , teruskan ! Selamat bersenang-senang! Jika Anda membuat distro, saya memuji keberanian Anda, Tuan.
bahamat
Ya, saya tidak yakin itu mungkin. Mungkin lebih mudah untuk hanya menginstal FreeBSD dan mengaktifkan kompatibilitas linux. Anda dapat dengan mudah membuat coreutils GNU bekerja di bawah FreeBSD, tetapi tidak sebaliknya.
jsbillings
0

Biasanya, ketika seseorang meminta untuk menjauh dari sesuatu yang digunakan secara luas, diuji dengan baik, diverifikasi pada banyak platform, itu merupakan ekspresi luar dari masalah mendasar yang dikenal sebagai "bau kode" dan akumulasi "utang teknis" atau "kode yang tidak terkendali" hutang". Arsip GNU telah membangun jumlah hutang kode yang cukup besar selama bertahun-tahun, dan ketika basis kode tidak dipelihara dengan baik, ia dapat mencapai titik puncak (kode warisan, dan bahkan kode warisan yang tidak wajar).

Biasanya, seseorang akan melakukan proses rekayasa ulang dan refactoring pada interval untuk menjaga ini tetap terkendali. Jadi, pertanyaan sebenarnya yang diajukan di sini adalah apakah versi inti dari refutor telah dikembangkan. Ini, tentu saja, termasuk kemungkinan penggantian langsung (sebagai kasus khusus) - seperti Wayland sedang dipromosikan untuk X ... banyak pengembangnya yang langsung keluar dari kamp X.

Saran saya adalah untuk benar-benar masuk dan refactor coreutils. Seseorang harus melakukannya. Dan siapa pun yang mengangkat masalah mengganti coreutils - ide Anda proyek Anda.

Untuk tujuan ini, manfaatkan otomatisasi apa pun yang dapat Anda temukan: mesin refactoring, seperti cscout, atau apa pun yang menerapkan metode analisis / sintesis yang lebih maju (misalnya, kisi konsep formal). Tetapi analisis mendalam masih merupakan bidang penelitian aktif yang relatif baru dan terbuka - dan beralih ke Intelegensi Buatan. (Seorang insinyur perangkat lunak robot.)

Sebagian besar utilitas seharusnya sudah memiliki ruang uji di tempat, sehingga validasi dapat dilakukan dengan perubahan langkah-progresif + langkah-langkah pengujian regresi otomatis; yang bisa berjalan sangat cepat (mis. 10 atau lebih pembaruan revisi / hari). Kerumitan untuk proses ini terjadi jika ada perangkat keras atau ketergantungan perangkat lunak tingkat rendah di mana saja dalam rangkaian perangkat lunak; karena itu memerlukan validasi pada berbagai platform. Saya tidak tahu banyak tentang itu di coreutils; harus ada semacam pemisahan di dalamnya dari perangkat keras atau lapisan perangkat lunak tingkat rendah (misalnya jumlah tempat di mana coreutils tahu jenis apasistem file yang dihidupkan harus minimal atau, lebih baik, nol.) Emulator dan mesin virtual, digunakan untuk tujuan melakukan pengujian multi-platform, memiliki keterbatasan. Misalnya, Mac OS X dirancang khusus dengan cara menghalangi kemampuan untuk meniru atau VM itu.

Rock Brentwood
sumber
-1

Solaris (per svn_140-sesuatu) juga akan menjadi pilihan.

Jika Anda menggunakan distro, Anda gila. Berhenti sekarang. Mencari bantuan psikiater.

Jika Anda menggunakan LFS , teruskan ! Selamat bersenang-senang!

Jika Anda membuat distro, saya memuji keberanian Anda, Tuan.

bahamat
sumber
1
ini bukan pertanyaan tentang "distro mana" yang bisa saya gunakan, ini tentang mengganti coreutils di Linux. Kecuali jika Anda merujuk ke opensolaris coreutils? juga apakah ini kurang dari PITA daripada opsi FreeBSD?
xenoterracide
1
Kode sumber untuk OpenSolaris hanyalah Solaris. Kode sumber Solaris hingga svn_14x dirilis oleh Sun / Oracle di bawah CDDL. Pada dasarnya ada tiga warisan utama untuk Unix userland. "Genetic" Unix (Solaris, AIX, True64, dll., Yang berasal dari kode AT&T dan sebagian besar ditutup, tetapi Solaris terbuka untuk sementara waktu), BSD (yang akhirnya berdiri sendiri pada 4.4-lite) dan GNU. Tapi saya pikir pindah dari GNU akan sama sulitnya (atau mudah) apakah Anda menggunakan BSD atau Solaris. Atau Anda bisa menjadi sangat ambisius dan membuat xenocore-utils ;-)
bahamat