是否可以选择在Linux上替换GNU coreutils?


20

我一直在考虑停止在Linux系统上使用GNU Coreutils,但是老实说,与许多其他GNU组件不同,我想不出任何替代方法(在Linux上)。GNU coreutils有哪些替代方案?我需要多个包裹吗?链接项目是命名发行包的必不可少的奖励点。

另外,除非您知道它们可以在Linux上运行并且可以参考说明,否则请不要提出任何建议。我怀疑我是否会很快切换内核,而对于简单性之外的任何事情我都太懒了./configure; make; make install。我当然不会为此而破解C。

警告:如果您的发行版使用coreutils,则删除它们可能会破坏发行版功能。但是,不要让它们成为您的第一$PATH也不应该破坏事情,因为大多数脚本应该使用绝对路径。


10
奇怪的是,为什么要寻找替代品?
tshepang 2011年

2
@xeno“更强大”?另外请记住,您的系统(包括内核)很大程度上是使用GCC构建的,并且取决于GLibC :)
tshepang 2011年

3
@xeno Debian实际上正在使用EGLIBC,它类似于GLibC的一个分支。但是它紧随GLibC,因此差异并不大。
tshepang 2011年

2
Clang和tcc都可以(一次,无论如何)编译Linux内核。
肖恩·高夫

2
有人在BSD内核上从事GNU用户领域的工作,但我还没有听说过。真正切换内核会更容易。如果您很害羞,可以先在VM中尝试。
吉尔(Gilles)“所以,别再邪恶了”,

Answers:


15

busybox 嵌入式Linux系统的最爱。

BusyBox将许多常见UNIX实用程序的微型版本组合到单个小型可执行文件中。它代替了通常在GNU fileutils,shellutils等中发现的大多数实用程序。但是,所包含的选项提供了预期的功能,并且其行为与GNU对应项非常相似。BusyBox为任何小型或嵌入式系统提供了一个相当完整的环境。
BusyBox的编写考虑了尺寸的优化和有限的资源。它也是非常模块化的,因此您可以在编译时轻松地包含或排除命令(或功能)。这使自定义嵌入式系统变得容易。要创建一个工作系统,只需在/ dev中添加一些设备节点,在/ etc中添加一些配置文件,以及一个Linux内核。

您几乎可以使任何coreutil名称成为到busybox二进制文件的链接,它将起作用。您也可以运行busybox <command>,它将起作用。示例:如果您使用的是Gentoo,但尚未安装vi,则可以运行,busybox vi filename并且将处于vi状态。它的


随时通过指向发行版的链接进行修改
xenoterracide 2011年

同样,这是嵌入式系统上的最爱,因此尽管它可能无法替代GNU来替代我的桌面/服务器环境
xenoterracide 2011年

如果您不想破解C,这是唯一实用的解决方案atm。而且busybox版本应该符合标准。
maxschlepzig

5

我意识到这是一个较旧的话题。但是,此解决方案从未提及过,在Google上针对“带有bsd用户国的Linux”的解决方案相对较高。

还有另一种解决方案:传家宝。我知道它可以在Arch上运行,并且打包在AUR中(例如,查看gnu2sysv)。这将取代Arch的coreutils软件包,并提供传家宝等价物。您可以在arch的Wiki上了解整个内容:https : //wiki.archlinux.org/index.php/Base2heirloom


2

查看uutils

这是用Rust编写的GNU coreutils的跨平台实现。它是MIT许可的。在撰写此答案时,它还不是100%完整(缺少一些关键性的诸如lscp),但是还有许多其他答案已经完成。


0

我怀疑您很难摆脱GNU Coreutils,但是,总是有等效的BSD工具,尽管它们并不是GNU工具的直接替代品。


我将如何在Linux发行版上安装BSD工具?我在哪里可以买到?
xenoterracide 2011年

FreeBSD的整个操作系统可通过CVS freebsd.org/cgi/cvsweb.cgi/src获得,但是,要使 BSD用户域在Linux内核下进行编译将相当困难。GNU的用户态可能比BSD更可移植,因为GNU的用户态(至少在开始时就已构建)可在多个内核之间移植。
jsbillings 2011年

听起来像是PITA,请确定是否有可能有人在Linux上至少打包了一次。
xenoterracide 2011年

也可以选择Solaris(从140年代开始可用)。如果您使用发行版,那么您会发疯。现在停下 如果您正在使用LFS,请继续!玩得开心!如果您要发行唱片,我为您的英勇先生鼓掌。
bahamat 2011年

是的,我不确定是否有可能。仅安装FreeBSD并启用linux兼容性可能会更容易。您可以轻松地使GNU coreutils在FreeBSD下工作,但反之则不行。
jsbillings

0

通常,当有人要求摆脱在许多平台上经过广泛测试,良好测试和验证的某些事物时,这是对称为“代码气味”和“技术债务”或“代码的不受控制的积累”的潜在问题的外在表达。债务”。多年来,GNU档案库积累了相当多的代码债务,如果未适当维护代码库,它可能会达到断点(遗留代码,甚至病态的旧代码)。

通常,将每隔一段时间进行一次重新设计和重构的过程,以使其处于受控状态。因此,这里提出的真正问题是是否已经开发了重构版本的coreutils。当然,这包括彻底替换(作为特殊情况)的可能性-就像Wayland被推销给X一样……许多开发人员直接来自X阵营。

我的建议是实际使用并重构coreutils。必须有人做。谁提出了替换coreutils的问题-您的想法就是您的项目。

为此,请充分利用您可以找到的任何自动化功能:重构引擎(例如cscout)或应用更高级的分析/综合方法(例如形式概念格)的任何东西。但是深度分析仍然是活跃研究的一个相对较新的开放领域,并且涉及到人工智能。(机器人软件工程师。)

大多数实用程序应该已经有测试套件,因此可以通过逐步进行逐步更改+自动回归测试步骤来进行验证。可以很快进行(例如,每天10个或更多的修订更新)。如果软件套件中任何地方存在硬件或底层软件依赖性,都会使此过程复杂化。因为这需要在多个平台上进行验证。我不太了解coreutils中的内容。与硬件或底层软件层应该有某种隔离(例如,coreutils知道哪种类型的位置数)所使用的文件系统的数量应该最小或更好,为零。)用于进行多平台测试的仿真器和虚拟机具有局限性。例如,Mac OS X经过专门设计,可以阻止对其进行仿真或VM的能力。


-1

也可以选择Solaris(从svn_140开始)。

如果您使用发行版,那么您会发疯。现在停下 寻求精神病学帮助。

如果您正在使用LFS,请继续!玩得开心!

如果您要发行唱片,我为您的英勇先生鼓掌。


1
这不是关于我可以使用哪个发行版的问题,而是关于在Linux上替换coreutils的问题。除非您指的是opensolaris coreutils?难道这比FreeBSD选项的PITA少吗?
xenoterracide

1
OpenSolaris的源代码只是Solaris。Sun / Oracle在CDDL下发布svn_14x之前的Solaris源代码。Unix用户领域基本上有三大主要遗产。“ Genetic” Unix(Solaris,AIX,True64等,它们来自AT&T代码,并且基本上是封闭的,但是Solaris曾经开放了一段时间),BSD(终于从4.4-lite开始独立存在)和GNU。但是我认为,无论您选择使用BSD还是Solaris,离开GNU都会同样困难(或容易)。或者,您可以变得雄心勃勃并制作xenocore-utils ;-)
bahamat 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.