Qualche opzione per sostituire i coreutils GNU su Linux?


20

Ho pensato di interrompere l'uso di GNU Coreutils sui miei sistemi Linux, ma a dire il vero, a differenza di molti altri componenti GNU, non riesco a pensare ad alcuna alternativa (su Linux) . Quali alternative ci sono ai coreutils GNU? avrò bisogno di più di un pacchetto? I collegamenti al progetto sono un must, punti bonus per la denominazione dei pacchetti di distribuzione.

Inoltre, ti suggeriamo di non suggerire cose se non sai che funzionano su Linux e puoi consultare le istruzioni. Dubito che presto cambierò kernel, e sono troppo pigro per qualcosa di molto al di là di un semplice ./configure; make; make install. Non ho intenzione di hackerare C per questo.

attenzione: se la tua distribuzione usa coreutils rimuoverli potrebbe interrompere il modo in cui la tua distribuzione funziona. Tuttavia, non averli come primi nel tuo $PATHnon dovrebbe rompere le cose, poiché la maggior parte degli script dovrebbe usare percorsi assoluti.


10
Curiosamente, perché stai cercando alternative?
Tshepang,

2
@xeno "Più robusto"? Inoltre, tieni presente che il tuo sistema (incluso il kernel) è in gran parte costruito con GCC e dipende da GLibC :)
tshepang

3
@xeno Debian attualmente utilizza EGLIBC , una sorta di fork di GLibC. Ma segue da vicino GLibC, quindi la differenza non è così grande.
Tshepang,

2
Sia Clang che tcc potevano (una volta, comunque) compilare il kernel Linux.
Shawn J. Goff,

2
Ci sono persone che lavorano su una userland GNU su un kernel BSD , ma non ho sentito il contrario. Cambiare veramente i kernel sarebbe più facile. Puoi provarlo prima in una VM se sei timido.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


15

busybox il preferito dei sistemi Linux integrati.

BusyBox combina minuscole versioni di molte comuni utility UNIX in un unico piccolo eseguibile. Fornisce sostituzioni per la maggior parte delle utility che di solito si trovano nei file GNU, shellutils, ecc. Le utility in BusyBox hanno generalmente meno opzioni rispetto ai loro cugini GNU con funzionalità complete; tuttavia, le opzioni incluse forniscono le funzionalità previste e si comportano in modo molto simile alle loro controparti GNU. BusyBox fornisce un ambiente abbastanza completo per qualsiasi sistema piccolo o incorporato.
BusyBox è stato scritto pensando all'ottimizzazione delle dimensioni e alle risorse limitate. È anche estremamente modulare, quindi puoi facilmente includere o escludere comandi (o funzionalità) in fase di compilazione. Ciò semplifica la personalizzazione dei sistemi integrati. Per creare un sistema funzionante, basta aggiungere alcuni nodi di dispositivo in / dev, alcuni file di configurazione in / etc e un kernel Linux.

Puoi praticamente rendere qualsiasi nome di coreutil un link al binario di busybox e funzionerà. puoi anche correre busybox <command>e funzionerà. Esempio: se sei su Gentoo e non hai ancora installato il tuo vi, puoi eseguire busybox vi filenamee sarai in vi. Suo


sentiti libero di modificarlo con i link alla tua distro
xenoterracide

inoltre, questo è uno dei preferiti su embedded, quindi sebbene un'alternativa probabilmente non sarà sufficiente a sostituire GNU per il mio ambiente desktop / server
xenoterracide

Questa è l'unica soluzione pratica atm, se non vuoi hackerare C. E le versioni di busybox dovrebbero essere conformi allo standard.
maxschlepzig,

5

Questo è un argomento più vecchio, mi rendo conto. Tuttavia, questa soluzione non è mai stata menzionata e risulta relativamente alta su Google per "Linux con bsd userland".

C'è un'altra soluzione: il cimelio. So che funziona su Arch, ed è confezionato in AUR (ad esempio gnu2sysv). Questo sostituirà il pacchetto coreutils di Arch e fornirà gli equivalenti cimelio. Puoi leggere tutto sul wiki di arch: https://wiki.archlinux.org/index.php/Base2heirloom


2

Dai un'occhiata a uutils .

Questa è un'implementazione multipiattaforma dei coreutils GNU scritta in Rust. È concesso in licenza dal MIT. Al momento in cui scrivo questa risposta non è completa (mancano alcune cruciali come lse cp), ma molte altre sono state completate.


0

Ho il sospetto che avresti difficoltà a sbarazzarti di GNU Coreutils, tuttavia, ci sono sempre gli strumenti BSD equivalenti, anche se non sono sostituti drop-in per gli strumenti GNU.


come potrei fare per installare gli strumenti BSD su una distribuzione Linux? dove li prenderei?
xenoterracide,

L'intero sistema operativo di FreeBSD è disponibile tramite CVS freebsd.org/cgi/cvsweb.cgi/src , tuttavia, ottenere la compilazione della userland BSD sotto un kernel Linux sarebbe piuttosto difficile. La userland di GNU è probabilmente più portatile di BSD, poiché la userland di GNU (almeno all'inizio) è stata costruita per essere portatile tra più kernel.
jsbillings,

sembra un PITA, sicuro se è ragionevolmente possibile che qualcuno da qualche parte lo abbia impacchettato almeno una volta per Linux.
xenoterracide,

Solaris (a partire da 140-qualcosa è anche disponibile) sarebbe anche un'opzione. Se stai usando una distro sei pazzo. Fermati adesso. Se stai usando LFS , vai avanti! Divertiti! Se stai facendo una distro, applaudo il tuo coraggio, signore.
Bahamat,

Sì, non sono sicuro che sia nemmeno possibile. Probabilmente sarebbe più semplice installare FreeBSD e abilitare la compatibilità con Linux. Puoi facilmente far funzionare i coreutils GNU sotto FreeBSD, ma non viceversa.
jsbillings,

0

Di solito, quando qualcuno chiede di allontanarsi da qualcosa che è in uso diffuso, ben testato, verificato su molte piattaforme, è un'espressione esteriore di un problema di fondo noto come "odore di codice" e l'accumulo incontrollato di "debito tecnico" o "codice debito". L'archivio GNU ha accumulato una quantità abbastanza grande di debito di codice nel corso degli anni e quando una base di codice non è adeguatamente mantenuta può raggiungere un punto di rottura (codice legacy e persino codice legacy morboso).

Normalmente, si effettuerebbe un processo di reingegnerizzazione e refactoring a intervalli regolari per tenerlo sotto controllo. Quindi, la vera domanda che viene posta qui è se è stata sviluppata una versione refactored di coreutils. Questo, ovviamente, include la possibilità di una sostituzione totale (come un caso speciale) - proprio come Wayland è stato proposto per X ... molti dei suoi sviluppatori escono direttamente dal campo X.

Il mio consiglio è di entrare e refactoring coreutils. Qualcuno deve farlo. E chiunque solleva il problema della sostituzione dei coreutils: la tua idea, il tuo progetto.

A tal fine, approfitta di qualsiasi automazione tu possa trovare: motori di refactoring, come cscout, o tutto ciò che applica metodi di analisi / sintesi più avanzati (ad esempio reticoli concettuali formali). Ma un'analisi approfondita è ancora un'area relativamente nuova e aperta della ricerca attiva - e attraversa l'intelligenza artificiale. (Un ingegnere del software robot.)

La maggior parte dei programmi di utilità dovrebbe già disporre di suite di test, pertanto la convalida può essere effettuata con una modifica progressiva graduale + passaggi di test di regressione automatizzati; che può andare piuttosto veloce (ad es. 10 o più aggiornamenti di revisione / giorno). Una complicazione a questo processo si verifica in presenza di dipendenze hardware o software di basso livello in qualsiasi punto della suite di software; poiché ciò comporta la convalida su più piattaforme. Non so molto di quello che c'è nei coreutils; dovrebbe esserci un qualche tipo di separazione dagli strati hardware o software di basso livello (ad es. il numero di posti in cui coreutils sa quale tipodel filesystem su cui è installato dovrebbe essere minimo o, meglio, zero.) Gli emulatori e le macchine virtuali, utilizzati per eseguire test multipiattaforma, hanno dei limiti. Ad esempio, Mac OS X è specificamente progettato in modo da ostacolare la capacità di emularlo o VM.


-1

Anche Solaris (a partire da svn_140-qualcosa) sarebbe un'opzione.

Se stai usando una distro sei pazzo. Fermati adesso. Cerca un aiuto psichiatrico.

Se stai usando LFS , vai avanti! Divertiti!

Se stai facendo una distribuzione, applaudo il tuo coraggio, signore.


1
questa non è una domanda su "quale distro" posso usare, si tratta di sostituire coreutils su Linux. A meno che non ti riferisca ai coreutils di opensolaris? anche questo è meno di un PITA rispetto all'opzione FreeBSD?
xenoterracide,

1
Il codice sorgente per OpenSolaris è solo Solaris. Il codice sorgente di Solaris fino a quando svn_14x è stato rilasciato da Sun / Oracle sotto CDDL. Esistono fondamentalmente tre patrimoni principali per gli utenti di Unix. Unix "genetico" (Solaris, AIX, True64, ecc., Che proveniva dal codice AT&T ed è in gran parte chiuso, ma Solaris era aperto per un certo periodo), BSD (che alla fine era in piedi da solo a partire da 4.4-lite) e GNU. Ma penso che allontanarsi da GNU sarà altrettanto difficile (o facile) se vai con BSD o Solaris. Oppure puoi diventare davvero ambizioso e fare xenocore-utils ;-)
bahamat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.