Linux'ta GNU coreutils yerine herhangi bir seçenek var mı?


20

Linux sistemlerimde GNU Coreutils kullanımını durdurmayı düşünüyorum, ama dürüst olmak gerekirse, diğer birçok GNU bileşeninin aksine, hiçbir alternatif düşünemiyorum (Linux'ta) . GNU coreutils'in hangi alternatifleri var? birden fazla pakete ihtiyacım olacak mı? Projeye verilen linkler bir zorunluluktur, dağıtım paketlerini adlandırmak için bonus puanlardır.

Ayrıca Linux'ta çalıştıklarını bilmiyorsanız ve talimatlara başvuramıyorsanız lütfen bir şey önermeyin . Yakında çekirdekleri değiştireceğimden şüpheliyim ve basit bir şeyin ötesinde bir şey için çok tembelim ./configure; make; make install. Bunun için C'yi kesinlikle kesmeyeceğim.

uyarı: dağıtımınız coreutils kullanıyorsa, bunları kaldırmak dağıtımınızın işlevini bozabilir. Bununla birlikte, onların ilkinde $PATHolmamak, bir çok betiğin mutlak yolları kullanması gerektiği için her şeyi kırmamalı.


10
Merakla, neden alternatifler arıyorsun?
tshepang

2
@xeno "Daha sağlam"? Ayrıca, sisteminizin (çekirdek dahil) büyük ölçüde GCC ile inşa edildiğini ve GLibC'ye bağlı olduğunu unutmayın :)
tshepang

3
@xeno Debian aslında şu anda kullanmakta olduğu EGLIBC , sıralama glibc'nin bir çatal hangi. Fakat GLibC'yi yakından takip ediyor, bu yüzden fark o kadar büyük değil.
tshepang

2
Hem Clang hem de tcc (bir seferde, yine de) Linux çekirdeğini derleyebilirdi.
Shawn J. Goff,

2
Bir BSD çekirdeğinde GNU kullanıcısı çalışan insanlar var , ama tam tersini duymadım. Gerçekten çekirdekleri değiştirmek daha kolay olurdu. Utangaçsanız, önce bir VM'de deneyebilirsiniz.
Gilles 'SO- kötülük' dur '20

Yanıtlar:


15

busybox Gömülü Linux sistemlerinin favorisi.

BusyBox, birçok ortak UNIX yardımcı programının küçük sürümlerini tek bir küçük yürütülebilir dosyada birleştirir. Genellikle GNU fileutil'lerinde, shellutil'lerde vb. Bulacağınız çoğu yardımcı programın yerine geçer. BusyBox'taki yardımcı programlar genellikle tam özellikli GNU kuzenlerinden daha az seçeneğe sahiptir; ancak, içerilen seçenekler beklenen işlevselliği sağlar ve GNU'lu benzerlerine çok benzer şekilde davranır. BusyBox, küçük veya gömülü sistemler için oldukça eksiksiz bir ortam sağlar.
BusyBox, boyut optimizasyonu ve sınırlı kaynaklar düşünülerek yazılmıştır. Ayrıca son derece modüler olduğundan derleme zamanında komutları (veya özellikleri) kolayca ekleyebilir veya hariç tutabilirsiniz. Bu, yerleşik sistemlerinizi özelleştirmenizi kolaylaştırır. Çalışan bir sistem oluşturmak için, / dev dizinindeki bazı aygıt düğümlerini, / etc dizinindeki birkaç yapılandırma dosyasını ve bir Linux çekirdeğini eklemeniz yeterli.

Herhangi bir coreutil adını, meşgul kutusu ikili koduna bir bağlantı yapabilir ve hemen işe yarayabilir. Ayrıca çalıştırabilirsiniz busybox <command>ve çalışacak. Örnek: Eğer Gentoo'daysanız ve henüz kurulumunu viyapmadıysanız, koşabilirsiniz busybox vi filenameve vi'de olacaksınız. Onun


Bunu
dağıtmak

Ayrıca, bu gömülü bir favori, bu yüzden bir alternatif muhtemelen masaüstü / sunucu
ortamım

C'yi kesmek istemiyorsanız, bu tek pratik çözüm atm. Ve busybox sürümleri oldukça standart olmalı.
maxschlepzig,

5

Bu daha eski bir konu, farkındayım. Bununla birlikte, bu çözüm hiç söz edilmedi ve "bsd userland ile Linux" için google'da göreceli olarak yüksek çıktı.

Başka bir çözüm var: yadigarı. Arch üzerinde çalıştığını biliyorum ve AUR'da paketlendi (örneğin, gnu2sysv'ye bakın). Bu, Arch'ın coreutils paketinin yerini alacak ve yadigarı eşdeğerlerini sağlayacaktır. Arch'ın wiki'sindeki her şeyi okuyabilirsiniz: https://wiki.archlinux.org/index.php/Base2heirloom


2

Uutils'i kontrol et .

Bu, Rust ile yazılmış GNU çekirdek elemanlarının bir çapraz platform uygulamasıdır. MIT lisanslıdır. Bu cevabı yazarken 100℅ tamamlanmadı ( lsve gibi bazı önemli cevaplar eksik cp), fakat birçokları yapıldı.


0

GNU Coreutil'lerden kurtulmakta zorlanacağınızdan şüpheleniyorum, ancak GNU araçları için değiştirmeler olmasa da her zaman eşdeğer BSD araçları var.


Linux dağıtımına BSD araçları kurma konusunda nasıl gideceğim? onları nereden bulabilirim?
xenoterracide

FreeBSD'nin tüm işletim sistemine CVS freebsd.org/cgi/cvsweb.cgi/src adresinden ulaşılabilir , ancak BSD kullanıcısını Linux çekirdeği altında derlemesini almak zor olabilir. GNU’nun kullanıcı alanı muhtemelen BSD’den daha fazla taşınabilir, çünkü GNU’nun kullanıcı alanı (en azından başlangıçta) çoklu çekirdekler arasında taşınabilir olması için yapılmıştır.
jsbillings

Bu, bir PITA gibi ses çıkarırsa, makul bir yerde birisinin linux için en az bir kez paketlemiş olabileceğinden emin olabilirsiniz.
xenoterracide

Solaris (140-bir şey olarak da mevcuttur) da bir seçenek olacaktır. Eğer bir dağıtım kullanıyorsanız, delisiniz. Şimdi dur. LFS kullanıyorsanız , devam edin! İyi eğlenceler! Eğer bir dağıtım yapıyorsanız, cesaretinizi alkışlarım efendim.
bahamat

Evet, mümkün olduğundan bile emin değilim. Sadece FreeBSD'yi kurmak ve linux uyumluluğunu etkinleştirmek daha kolay olurdu. FreeBSD altında çalışan GNU coreutils'lerini kolayca elde edebilirsiniz, ancak bunun tersi mümkün değildir.
jsbillings

0

Genellikle, birileri yaygın kullanımda, iyi test edilmiş, birçok platformda doğrulanmış bir şeyden uzaklaşmak istediğinde, "kod kokusu" olarak bilinen temel bir sorunun dışa dönük bir ifadesi ve "teknik borç" veya "kodun kontrolsüz bir şekilde toplanması" ifadesidir. borç". GNU arşivi yıllar boyunca oldukça fazla miktarda kod borcu oluşturmuştu ve bir kod temeli uygun şekilde korunmadığında bir kırılma noktasına ulaşabilir (eski kod ve hatta morbid eski kod).

Normalde, kişi bunu kontrol altında tutmak için belirli aralıklarla yeniden mühendislik ve yeniden düzenleme işlemi gerçekleştirir. Dolayısıyla, burada sorulan asıl soru, çekirdek parçaların yeniden yapılandırılmış bir versiyonunun geliştirilip geliştirilmediğidir. Bu, elbette, tam bir değiştirme olasılığını da içeriyor (özel bir durum olarak) - Wayland'ın X için olduğu gibi ... geliştiricilerin birçoğu X kampından çıkıyor.

Benim önerim aslında içeri girip refactor coreutils etmektir. Birisinin yapması gerek. Ve çekirdek elemanların değiştirilmesi konusunu her kim ortaya çıkarırsa, sizin fikrinizdir.

Bu amaçla, bulabileceğiniz herhangi bir otomasyondan yararlanın: cscout gibi yeniden motorları veya daha gelişmiş analiz / sentez yöntemlerini uygulayan herhangi bir şey (örn. Biçimsel kavram kafesleri). Ancak, derin analizler halen nispeten yeni ve açık bir aktif araştırma alanıdır - ve Yapay Zekaya geçmektedir. (Bir robot yazılım mühendisi.)

Yardımcı programların çoğu halihazırda test takımlarına sahip olmalıdır, bu nedenle aşamalı adım adım değişiklik + otomatik regresyon test adımları ile doğrulama yapılabilir; oldukça hızlı gidebilir (örneğin, 10 veya daha fazla revizyon güncellemesi / gün). Yazılım paketinin herhangi bir yerinde donanım veya düşük seviye yazılım bağımlılığı varsa, bu işlem için bir komplikasyon meydana gelir; Bu, birden fazla platformda doğrulama gerektirdiğinden beri. Bunun çekirdeklerin içinde olduğunu fazla bilmiyorum; donanım veya düşük seviye yazılım katmanlarından bir tür ayrılık olmalıdır (örneğin, coreutils'in ne tür bildiği yerlerin sayısı)üzerinde bulunduğu dosya sistemi asgari veya daha iyi olmalı, sıfır olmalıdır.) Çok platformlu testler yapmak için kullanılan emülatörler ve sanal makineler sınırlamaları vardır. Örneğin, Mac OS X, özellikle onu taklit etme ya da sanallaştırma yeteneğini engelleyecek şekilde tasarlanmıştır.


-1

Solaris (svn_140-bir şey olarak) aynı zamanda bir seçenek olacaktır.

Eğer bir dağıtım kullanıyorsanız, delisiniz. Şimdi dur. Psikiyatrik yardım isteyin.

LFS kullanıyorsanız , devam edin! İyi eğlenceler!

Eğer bir dağıtım yapıyorsanız, cesaretinizi alkışlarım efendim.


1
bu, hangi dağıtımı kullanabileceğimle ilgili bir soru değil, Linux'ta coreutil'leri değiştirmekle ilgili. Opensolaris coreutils'e atıfta bulunmadığınız sürece? Ayrıca bu FreeBSD seçeneğinden daha az bir PITA mı?
xenoterracide

1
OpenSolaris'in kaynak kodu sadece Solaris'tir. Solaris kaynak kodu svn_14x, Sun / Oracle tarafından CDDL kapsamında yayınlanıncaya kadar yükseldi. Unix kullanıcısı için temel olarak üç ana miras vardır. AT&T kodundan gelen ve çoğunlukla kapalı olan "Genetik" Unix (Solaris, AIX, True64 vb.), Ancak Solaris bir süre açık kaldı), BSD (nihayet 4.4-lite itibariyle kendi başına durdu) ve GNU. Ancak, GNU'dan uzaklaşmanın BSD ya da Solaris ile gitmek isterseniz eşit derecede zor (ya da kolay) olacağını düşünüyorum. Ya da gerçekten hırslı olabilirsiniz ve xenocore-utils ;-)
bahamat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.