Ich habe darüber nachgedacht, die Verwendung von GNU Coreutils auf meinen Linux-Systemen einzustellen, aber um ehrlich zu sein, kann ich dies im Gegensatz zu vielen anderen GNU-Komponenten nicht tun Denken Sie an Alternativen (unter Linux) . Welche Alternativen gibt es zu GNU-Coreutils? Benötige ich mehr als ein Paket? Links zum Projekt sind ein Muss, Bonuspunkte für die Benennung von Distributionspaketen.

Bitte schlagen Sie auch keine Dinge vor, es sei denn, Sie wissen, dass sie unter Linux funktionieren und auf Anweisungen verweisen können Ich bezweifle, dass ich bald den Kernel wechseln werde, und ich bin viel zu faul für alles, was weit über ein einfaches ./configure; make; make install hinausgeht. Ich werde C mit Sicherheit nicht dafür hacken.

Warnung: Wenn Ihre Distribution Coreutils verwendet, können diese die Funktionsweise Ihrer Distribution beeinträchtigen. Wenn Sie sie jedoch nicht an erster Stelle in Ihrem $PATH haben, sollten Sie die Dinge nicht beschädigen, da die meisten Skripte absolute Pfade verwenden sollten.

Kommentare

  • Seltsamerweise, warum suchen Sie nach Alternativen?
  • @xeno “ Robuster „? Denken Sie auch daran, dass Ihr System (einschließlich Kernel) größtenteils mit GCC erstellt wurde und von GLibC abhängt 🙂
  • @xeno Debian verwendet derzeit tatsächlich EGLIBC , eine Art Gabel von GLibC. Aber es folgt GLibC genau, so dass der Unterschied ‚ nicht so groß ist.
  • Sowohl Clang als auch tcc konnten (jedenfalls zu einem Zeitpunkt) den Linux-Kernel kompilieren.
  • Es arbeiten Leute an einem GNU-Benutzerland auf einem BSD-Kernel , aber ich habe ‚ nichts anderes gehört. Ein wirklicher Kernelwechsel wäre einfacher. Sie können es zuerst in einer VM versuchen, wenn Sie ‚ ist schüchtern.

Antwort

busybox der Favorit von Eingebettete Linux-Systeme.

BusyBox kombiniert winzige Versionen vieler gängiger UNIX-Dienstprogramme in einer einzigen kleinen ausführbaren Datei. Es bietet Ersatz für die meisten Dienstprogramme, die Sie normalerweise in GNU-Fileutils, Shellutils usw. finden. Die Dienstprogramme in BusyBox bieten im Allgemeinen weniger Optionen als ihre voll ausgestatteten GNU-Cousins. Die enthaltenen Optionen bieten jedoch die erwartete Funktionalität und verhalten sich sehr ähnlich wie ihre GNU-Gegenstücke. BusyBox bietet eine ziemlich vollständige Umgebung für jedes kleine oder eingebettete System.

BusyBox wurde mit Blick auf Größenoptimierung und begrenzte Ressourcen geschrieben . Es ist außerdem äußerst modular aufgebaut, sodass Sie Befehle (oder Funktionen) beim Kompilieren problemlos ein- oder ausschließen können. Dies macht es einfach, Ihre eingebetteten Systeme anzupassen. Um ein funktionierendes System zu erstellen, fügen Sie einfach einige Geräteknoten in / dev, einige Konfigurationsdateien in / etc und einen Linux-Kernel hinzu.

Sie können so ziemlich jeden Coreutil-Namen zu einem Link zur Busybox-Binärdatei machen, und es wird funktionieren. Sie können auch busybox <command> ausführen und es wird funktionieren. Beispiel: Wenn Sie „auf Gentoo sind und Ihre vi noch nicht installiert haben, können Sie busybox vi filename ausführen und befinden sich in vi Es ist

Kommentare

  • Sie können dies auch mit Links zu Ihrer Distribution ändern.
  • Dies ist auch ein Favorit für Embedded. Obwohl eine Alternative ‚ wahrscheinlich nicht ausreicht GNU für meine Desktop / Server-Umgebung ersetzen
  • Dies ist die einzige praktische Lösung atm, wenn Sie ‚ C nicht hacken möchten. Und Busybox-Versionen sollten es sein ziemlich standardkonform.

Answe r

Dies ist ein älteres Thema, wie ich weiß. Diese Lösung wurde jedoch nie erwähnt und ist bei Google für „Linux with bsd userland“ relativ hoch.

Es gibt noch eine andere Lösung: Erbstück. Ich weiß, dass es auf Arch funktioniert und in der AUR verpackt ist (siehe zum Beispiel gnu2sysv). Dies wird das Coreutils-Paket von Arch ersetzen und die Erbstück-Äquivalente bereitstellen. Sie können das Ganze im Wiki von Arch nachlesen: https://wiki.archlinux.org/index.php/Base2heirloom

Antwort

Überprüfen Sie uutils .

Dies ist eine plattformübergreifende Implementierung der in Rust geschriebenen GNU-Coreutils. Es ist MIT-lizenziert.Zum Zeitpunkt des Schreibens dieser Antwort ist sie nicht 100℅ vollständig (es fehlen einige wichtige wie ls und cp), aber viele andere sind fertig.

Antwort

Ich vermute, es würde Ihnen schwer fallen, GNU Coreutils loszuwerden, aber es gibt sie Immer die entsprechenden BSD-Tools, obwohl sie keinen Ersatz für die GNU-Tools darstellen.

Kommentare

  • Wie würde ich BSD installieren? Tools auf einer Linux-Distribution? Woher bekomme ich sie?
  • Das gesamte Betriebssystem von FreeBSD ‚ ist über CVS freebsd.org/cgi/cvsweb.cgi/src Es wäre jedoch ziemlich schwierig, das BSD-Benutzerland unter einem Linux-Kernel zu kompilieren. Das Benutzerland von GNU ‚ ist wahrscheinlich portabler als BSD, da das Benutzerland von GNU ‚ (zumindest zu Beginn) so aufgebaut wurde, dass es zwischen mehreren Kerneln portierbar ist.
  • das klingt nach ea PITA, sicher, wenn es ‚ vernünftigerweise möglich ist, dass jemand es irgendwo mindestens einmal für Linux gepackt hat.
  • Solaris (ab 140 ist auch etwas verfügbar) wäre auch eine Option. Wenn Sie eine Distribution benutzen, sind Sie verrückt. Hör jetzt auf. Wenn Sie LFS verwenden, rocken Sie weiter! Habe Spaß! Wenn Sie eine Distribution machen, begrüße ich Ihren Mut, Sir.
  • Ja, ich ‚ bin mir nicht sicher, ob es ‚ s sogar möglich. ‚ Es wäre wahrscheinlich einfacher, FreeBSD zu installieren und die Linux-Kompatibilität zu aktivieren. Sie können die GNU-Coreutils problemlos unter FreeBSD zum Laufen bringen, aber nicht umgekehrt.

Antwort

Normalerweise Wenn jemand darum bittet, sich von etwas zu entfernen, das weit verbreitet, gut getestet und auf vielen Plattformen verifiziert ist, ist dies ein äußerer Ausdruck eines zugrunde liegenden Problems, das als „Code-Geruch“ bekannt ist, und der unkontrollierten Anhäufung von „technischen Schulden“ oder „Code Schulden“. Das GNU-Archiv hatte im Laufe der Jahre eine ziemlich große Menge an Code-Schulden aufgebaut, und wenn eine Codebasis nicht ordnungsgemäß verwaltet wird, kann sie einen Bruchpunkt erreichen (Legacy-Code und sogar krankhafter Legacy-Code).

Normalerweise Man würde in Abständen einen Prozess des Re-Engineerings und Refactorings durchführen, um dies unter Kontrolle zu halten. Die eigentliche Frage, die hier gestellt wird, ist also, ob eine überarbeitete Version von Coreutils entwickelt wurde. Dies beinhaltet natürlich die Möglichkeit eines vollständigen Ersatzes (als Sonderfall) – ähnlich wie es Wayland vorsieht X … viele seiner Entwickler kommen direkt aus dem X-Lager.

Mein Vorschlag ist, tatsächlich reinzugehen und Coreutils zu refaktorieren. Jemand muss es tun. Und wer auch immer das Problem des Ersetzens von Coreutils aufwirft – Ihre Idee Ihr Projekt.

Nutzen Sie zu diesem Zweck die Automatisierung, die Sie finden können: Refactoring von Engines wie cscout oder alles, was fortgeschrittenere Analyse- / Synthesemethoden anwendet (zB formale Konzeptgitter). Die Tiefenanalyse ist jedoch noch ein relativ neues und offenes Gebiet der aktiven Forschung – und geht in die künstliche Intelligenz über. (Ein Roboter-Softwareentwickler.)

Die meisten Dienstprogramme sollten bereits über Testsuiten verfügen, damit die Validierung mit fortschreitenden schrittweisen Änderungen und automatisierten Regressionstestschritten erfolgen kann. Dies kann ziemlich schnell gehen (z. B. 10 oder mehr Revisionsaktualisierungen / Tag). Eine Komplikation dieses Prozesses tritt auf, wenn irgendwo in der Software-Suite Hardware- oder Software-Abhängigkeiten auf niedriger Ebene bestehen. da dies eine Validierung auf mehreren Plattformen beinhaltet. Ich weiß nicht viel darüber, was es in Coreutils gibt; es sollte eine Art Trennung von den Hardware- oder Low-Level-Softwareschichten geben (z. B. die Anzahl der Stellen, an denen Coreutils weiß, von welchem Typ Das Dateisystem, auf dem es sich befindet, sollte minimal oder besser Null sein.) Emulatoren und virtuelle Maschinen, die für Tests auf mehreren Plattformen verwendet werden, weisen Einschränkungen auf. Beispielsweise wurde Mac OS X speziell entwickelt, um die Fähigkeit zu beeinträchtigen

Antwort

Solaris (ab svn_140-etwas) wäre ebenfalls eine Option.

Wenn Sie eine Distribution verwenden, sind Sie verrückt. Hören Sie jetzt auf. Suchen Sie psychiatrische Hilfe.

Wenn Sie LFS verwenden, rock on! Viel Spaß!

Wenn Sie eine Distribution machen, begrüße ich Ihren tapferen Herrn.

Kommentare

  • dies isn ‚ ta Frage zu “ welche Distribution “ kann ich verwenden, es

    befasst sich mit dem Ersetzen von Coreutils unter Linux. Es sei denn, Sie ‚ beziehen sich auf opensolaris coreutils? Ist dies auch weniger eine PITA als die FreeBSD-Option?

  • Der Quellcode für OpenSolaris ist nur Solaris. Der Solaris-Quellcode bis svn_14x wurde von Sun / Oracle unter CDDL veröffentlicht. Grundsätzlich gibt es drei Hauptvererbungen für Unix Userland.“ Genetic “ Unix (Solaris, AIX, True64 usw.), das von AT & T-Code und ist weitgehend geschlossen, aber Solaris war eine Zeit lang geöffnet), BSD (das schließlich auf ‚ ab 4.4-lite stand) und GNU. Aber ich denke, dass es genauso schwierig (oder einfach) sein wird, sich von GNU zu entfernen, ob Sie sich für BSD oder Solaris entscheiden. Oder du kannst wirklich ehrgeizig werden und Xenocore-Utensilien herstellen 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.