Des options pour remplacer GNU coreutils sous Linux?

20

J'ai pensé à cesser d'utiliser GNU Coreutils sur mes systèmes Linux, mais pour être honnête, contrairement à de nombreux autres composants GNU, je ne peux penser à aucune alternative (sous Linux) . Quelles sont les alternatives à GNU coreutils? aurai-je besoin de plus d'un package? Les liens vers le projet sont un must, des points bonus pour nommer les packages de distribution.

Veuillez également ne pas suggérer des choses à moins que vous sachiez qu'elles fonctionnent sous Linux et que vous pouvez faire référence à des instructions. Je doute que je changerai de noyau bientôt, et je suis beaucoup trop paresseux pour quoi que ce soit au-delà d'une simple ./configure; make; make install. Je ne vais certainement pas pirater C pour ça.

avertissement: si votre distribution utilise des coreutils, leur suppression pourrait perturber le fonctionnement de votre distribution. Cependant, ne pas les avoir en tête de liste $PATHne devrait pas casser les choses, car la plupart des scripts doivent utiliser des chemins absolus.

xénoterracide
la source
10
Curieusement, pourquoi cherchez-vous des alternatives?
tshepang
2
@xeno "Plus robuste"? Gardez également à l'esprit que votre système (y compris le noyau) est largement construit avec GCC et dépend de GLibC :)
tshepang
3
@xeno Debian utilise actuellement EGLIBC , une sorte de fork de GLibC. Mais il suit de près GLibC, donc la différence n'est pas si grande.
tshepang
2
Clang et tcc pourraient (en même temps, de toute façon) compiler le noyau Linux.
Shawn J. Goff
2
Il y a des gens qui travaillent sur un espace utilisateur GNU sur un noyau BSD , mais je n'ai pas entendu l'inverse. Changer les noyaux serait vraiment plus facile. Vous pouvez l'essayer d'abord dans une machine virtuelle si vous êtes timide.
Gilles 'SO- arrête d'être méchant'

Réponses:

15

busybox le favori des systèmes Linux embarqués.

BusyBox combine de minuscules versions de nombreux utilitaires UNIX courants en un seul petit exécutable. Il fournit des remplacements pour la plupart des utilitaires que vous trouvez habituellement dans les fichiers GNU, shellutils, etc. Les utilitaires dans BusyBox ont généralement moins d'options que leurs cousins ​​GNU complets; cependant, les options incluses fournissent les fonctionnalités attendues et se comportent très bien comme leurs homologues GNU. BusyBox fournit un environnement assez complet pour tout petit système ou système embarqué.
BusyBox a été écrit avec une optimisation de la taille et des ressources limitées à l'esprit. Il est également extrêmement modulaire afin que vous puissiez facilement inclure ou exclure des commandes (ou fonctionnalités) au moment de la compilation. Cela facilite la personnalisation de vos systèmes embarqués. Pour créer un système qui fonctionne, ajoutez simplement quelques nœuds de périphérique dans / dev, quelques fichiers de configuration dans / etc et un noyau Linux.

Vous pouvez à peu près faire n'importe quel nom coreutil un lien vers le binaire busybox et cela fonctionnera. vous pouvez également exécuter busybox <command>et cela fonctionnera. Exemple: si vous êtes sur Gentoo et que vous n'avez pas encore installé votre vi, vous pouvez exécuter busybox vi filenameet vous serez en vi. Ses

xénoterracide
la source
n'hésitez pas à modifier cela avec des liens vers votre distribution
xenoterracide
aussi, c'est un favori sur l'embarqué, donc bien qu'une alternative cela ne suffira probablement pas pour remplacer GNU pour mon environnement de bureau / serveur
xenoterracide
C'est la seule solution pratique pour atm, si vous ne voulez pas pirater C. Et les versions de busybox devraient être assez conformes aux normes.
maxschlepzig
5

C'est un sujet plus ancien, je m'en rends compte. Cependant, cette solution n'a jamais été mentionnée et arrive relativement haut sur google pour "Linux avec bsd userland".

Il y a une autre solution: héritage. Je sais que cela fonctionne sur Arch, et il est emballé dans l'AUR (regardez gnu2sysv, par exemple). Cela remplacera le package coreutils d'Arch et fournira les équivalents patrimoniaux. Vous pouvez lire tout sur le wiki d'Arch: https://wiki.archlinux.org/index.php/Base2heirloom

bbenne10
la source
2

Découvrez les uutils .

Il s'agit d'une implémentation multiplateforme des coreutils GNU qui est écrite en Rust. Il est sous licence MIT. Au moment de la rédaction de cette réponse, elle n'est pas complète à 100℅ (il en manque certaines cruciales comme lset cp), mais de nombreuses autres sont terminées.

Russ
la source
0

Je soupçonne que vous auriez du mal à vous débarrasser de GNU Coreutils, cependant, il y a toujours les outils BSD équivalents, bien qu'ils ne soient pas des remplacements directs pour les outils GNU.

jsbillings
la source
comment pourrais-je installer des outils BSD sur une distribution Linux? où pourrais-je les obtenir?
xenoterracide
L'intégralité du système d'exploitation de FreeBSD est disponible via CVS freebsd.org/cgi/cvsweb.cgi/src , cependant, il serait plutôt difficile de compiler l' espace utilisateur BSD sous un noyau Linux. L'espace utilisateur de GNU est probablement plus portable que BSD, puisque l'espace utilisateur de GNU (au moins au début) a été conçu pour être portable entre plusieurs noyaux.
jsbillings
cela ressemble à un PITA, bien sûr, s'il est raisonnablement possible que quelqu'un quelque part l'ait empaqueté au moins une fois pour linux.
xenoterracide
Solaris (à partir de 140, quelque chose est également disponible) serait également une option. Si vous utilisez une distribution, vous êtes fou. Arrêter maintenant. Si vous utilisez LFS , lancez-vous ! S'amuser! Si vous faites une distribution, j'applaudis votre bravoure monsieur.
bahamat
Oui, je ne suis pas sûr que ce soit même possible. Il serait probablement plus facile d'installer simplement FreeBSD et d'activer la compatibilité linux. Vous pouvez facilement faire fonctionner les coreutils GNU sous FreeBSD, mais pas vice-versa.
jsbillings
0

Habituellement, lorsque quelqu'un demande à s'éloigner de quelque chose qui est largement utilisé, bien testé, vérifié sur de nombreuses plates-formes, c'est l'expression extérieure d'un problème sous-jacent appelé "odeur de code" et l'accumulation incontrôlée de "dette technique" ou "code dette". Les archives GNU avaient accumulé une quantité assez importante de dette de code au fil des ans, et lorsqu'une base de code n'est pas correctement entretenue, elle peut atteindre un point de rupture (code hérité, et même code hérité morbide).

Normalement, on mènerait un processus de réingénierie et de refactorisation à intervalles pour garder cela sous contrôle. Donc, la vraie question qui se pose ici est de savoir si une version refactorisée de coreutils a été développée. Cela, bien sûr, inclut la possibilité d'un remplacement pur et simple (comme un cas spécial) - un peu comme Wayland est destiné à être pour X ... beaucoup de ses développeurs viennent directement du camp X.

Ma suggestion est en fait d'aller refactoriser les coreutils. Quelqu'un doit le faire. Et quiconque soulève la question du remplacement des coreutils - votre idée, votre projet.

À cette fin, profitez de toute automatisation que vous pouvez trouver: des moteurs de refactorisation, comme cscout, ou tout ce qui applique des méthodes d'analyse / synthèse plus avancées (par exemple, des réseaux de concepts formels). Mais l'analyse approfondie est encore un domaine relativement nouveau et ouvert de recherche active - et traverse l'intelligence artificielle. (Un ingénieur logiciel robot.)

La plupart des utilitaires devraient déjà avoir des suites de tests en place, de sorte que la validation peut être effectuée avec un changement progressif par étapes + des étapes de test de régression automatisées; qui peut aller assez vite (par exemple 10 mises à jour de révision ou plus / jour). Une complication à ce processus se produit s'il existe des dépendances matérielles ou logicielles de bas niveau n'importe où dans la suite logicielle; car cela implique une validation sur plusieurs plateformes. Je n'en sais pas grand-chose dans les coreutils; il devrait y avoir une sorte de séparation des couches matérielles ou logicielles de bas niveau (par exemple, le nombre d'endroits où coreutils sait quel typedu système de fichiers sur lequel il se trouve doit être minimal ou, mieux, nul.) Les émulateurs et les machines virtuelles, utilisés pour effectuer des tests multiplateformes, ont des limites. Par exemple, Mac OS X est spécifiquement conçu de manière à entraver la possibilité de l'émuler ou de le VM.

Rock Brentwood
la source
-1

Solaris (à partir de svn_140-quelque chose) serait également une option.

Si vous utilisez une distribution, vous êtes fou. Arrêter maintenant. Cherchez de l'aide psychiatrique.

Si vous utilisez LFS , lancez-vous ! S'amuser!

Si vous faites une distribution, j'applaudis votre bravoure monsieur.

bahamat
la source
1
il ne s'agit pas de "quelle distribution" puis-je utiliser, il s'agit de remplacer coreutils sous Linux. À moins que vous ne parliez d'OpenSolaris coreutils? est-ce aussi moins un PITA que l'option FreeBSD?
xenoterracide
1
Le code source d'OpenSolaris est simplement Solaris. Le code source de Solaris jusqu'à svn_14x a été publié par Sun / Oracle sous CDDL. Il existe essentiellement trois héritages principaux pour le monde utilisateur Unix. Unix "génétique" (Solaris, AIX, True64, etc., qui provient du code AT&T et est en grande partie fermé, mais Solaris était ouvert pendant un certain temps), BSD (qui a finalement été autonome à partir de la version 4.4) et GNU. Mais je pense que s'éloigner de GNU sera tout aussi difficile (ou facile) que vous optiez pour BSD ou Solaris. Ou vous pouvez devenir vraiment ambitieux et faire des xenocore-utils ;-)
bahamat