Любые варианты заменить GNU coreutils в Linux?

20

Я думал о прекращении использования GNU Coreutils в моих системах Linux, но, честно говоря, в отличие от многих других компонентов GNU, я не могу придумать никаких альтернатив (в Linux) . Какие есть альтернативы GNU coreutils? мне понадобится более одной упаковки? Ссылки на проект являются обязательными, бонусными баллами за наименование дистрибутивных пакетов.

Также, пожалуйста, не предлагайте вещи, если вы не знаете, что они работают в Linux, и можете ссылаться на инструкции. Я сомневаюсь, что скоро переключу ядро, и я слишком ленив для чего-то большего, чем просто ./configure; make; make install. Я, конечно, не собираюсь взламывать C за это.

предупреждение: если ваш дистрибутив использует coreutils, удаление их может нарушить работу вашего дистрибутива. Однако, если вы не ставите их на первое место, вы $PATHне должны ломать голову, так как большинство сценариев должны использовать абсолютные пути.

xenoterracide
источник
10
Любопытно, почему вы ищете альтернативы?
чепанг
2
@xeno "Более крепкий"? Также имейте в виду, что ваша система (включая ядро) в основном построена с GCC и зависит от GLibC :)
tshepang
3
@xeno Debian сейчас использует EGLIBC , что-то вроде разветвления GLibC. Но это тесно связано с GLibC, так что разница не такая большая.
чепанг
2
И Clang, и tcc могли (в любом случае, когда-то) скомпилировать ядро ​​Linux.
Шон Дж. Гофф
2
Есть люди, работающие в GNU userland на ядре BSD , но я не слышал об обратном. Действительно переключение ядер было бы проще. Вы можете попробовать это сначала на ВМ, если вы стесняетесь.
Жиль "ТАК - перестань быть злым"

Ответы:

15

busybox фаворит встраиваемых систем Linux.

BusyBox объединяет крошечные версии многих распространенных утилит UNIX в один маленький исполняемый файл. Он предоставляет замену большинству утилит, которые вы обычно найдете в GNU fileutils, shellutils и т. Д. У утилит в BusyBox обычно меньше опций, чем у полнофункциональных собратьев GNU; однако включенные опции обеспечивают ожидаемую функциональность и ведут себя во многом как их аналоги GNU. BusyBox обеспечивает достаточно полную среду для любой небольшой или встроенной системы.
BusyBox был написан с учетом оптимизации размера и ограниченных ресурсов. Он также чрезвычайно модульный, поэтому вы можете легко включать или исключать команды (или функции) во время компиляции. Это позволяет легко настроить ваши встроенные системы. Чтобы создать работающую систему, просто добавьте несколько узлов устройства в / dev, несколько файлов конфигурации в / etc и ядро ​​Linux.

Вы можете сделать любое имя coreutil ссылкой на двоичный файл busybox, и оно будет работать. Вы также можете запустить, busybox <command>и это будет работать. Пример: если вы используете Gentoo и еще не установили свой vi, вы можете запустить busybox vi filenameи вы будете в vi. Это

xenoterracide
источник
не стесняйтесь изменять это со ссылками на ваш дистрибутив
xenoterracide
Кроме того, это фаворит для встраиваемых систем, поэтому, хотя альтернативы, вероятно, будет недостаточно, чтобы заменить GNU для моей среды рабочего стола / сервера
xenoterracide
Это единственное практическое решение, если вы не хотите взламывать C. И версии busybox должны соответствовать стандарту.
maxschlepzig
5

Это старая тема, я понимаю. Тем не менее, это решение никогда не упоминалось и довольно высоко ценится в Google для «Linux с BSD userland».

Есть другое решение: семейная реликвия. Я знаю, что он работает на Arch и упакован в AUR (посмотрите на gnu2sysv, например). Это заменит пакет coreutils Arch и предоставит эквиваленты семейной реликвии. Вы можете прочитать обо всем этом в вики Arch: https://wiki.archlinux.org/index.php/Base2heirloom

bbenne10
источник
2

Проверьте uutils .

Это кроссплатформенная реализация ядра GNU coreutils, написанная на Rust. Это лицензия MIT. На момент написания этого ответа он не завершен на 100℅ (не хватает некоторых важных, таких как lsи cp), но многие другие уже сделаны.

Russ
источник
0

Я подозреваю, что вам будет трудно избавиться от GNU Coreutils, однако, всегда есть эквивалентные инструменты BSD, хотя они не являются заменой для инструментов GNU.

jsbillings
источник
Как мне установить инструменты BSD в дистрибутиве Linux? где бы я их взял?
ксенотеррацид
Вся ОС FreeBSD доступна через CVS freebsd.org/cgi/cvsweb.cgi/src , однако получить пользовательскую среду BSD для компиляции под ядром Linux будет довольно сложно. Пользовательское пространство GNU, вероятно, более переносимо, чем BSD, поскольку пользовательское пространство GNU (по крайней мере, в начале) было построено так, чтобы быть переносимым между несколькими ядрами.
Jsbillings
это звучит как PITA, конечно, если это возможно, кто-то где-то упаковал это хотя бы один раз для Linux.
ксенотеррацид
Солярис (по состоянию на 140-кое-что также доступно) также будет вариант. Если вы используете дистрибутив, вы сумасшедший. Остановить сейчас. Если вы используете LFS , качайте! Повеселись! Если вы создаете дистрибутив, я приветствую вашу храбрость, сэр.
Багамат
Да, я не уверен, что это даже возможно. Вероятно, было бы проще просто установить FreeBSD и включить совместимость с Linux. Вы можете легко заставить GNU coreutils работать под FreeBSD, но не наоборот.
Jsbillings
0

Обычно, когда кто-то просит уйти от того, что широко используется, хорошо протестировано, проверено на многих платформах, это является внешним выражением основной проблемы, известной как «запах кода» и неконтролируемое накопление «технического долга» или «кода». долг». Архив GNU накапливал довольно большую задолженность по коду за эти годы, и, если кодовая база не поддерживается должным образом, она может достичь критической точки (унаследованный код и даже болезненный унаследованный код).

Как правило, можно проводить процесс реинжиниринга и рефакторинга через определенные промежутки времени, чтобы держать его под контролем. Итак, реальный вопрос, который ставится здесь, заключается в том, была ли разработана переработанная версия coreutils. Это, конечно, включает в себя возможность прямой замены (как особый случай) - очень похоже на то, что Вейленд рассчитан на Х ... многие его разработчики выходят прямо из лагеря Х.

Мое предложение состоит в том, чтобы на самом деле пойти и рефакторинг coreutils. Кто-то должен это сделать. А кто бы ни поднимал вопрос о замене coreutils - ваша идея вашего проекта.

Для этого используйте все средства автоматизации, которые вы можете найти: механизмы рефакторинга, такие как cscout, или все, что использует более продвинутые методы анализа / синтеза (например, формальные концептуальные решетки). Но глубокий анализ все еще является относительно новой и открытой областью активных исследований - и переходит к искусственному интеллекту. (Робот-программист.)

Большинство утилит уже должны иметь на своем месте наборы тестов, поэтому проверка может быть выполнена с постепенным пошаговым изменением + автоматизированные этапы регрессионного тестирования; который может идти довольно быстро (например, 10 или более обновлений в день). Усложнение этого процесса происходит, если в программном комплексе есть аппаратные или низкоуровневые программные зависимости; так как это влечет за собой проверку на нескольких платформах. Я не знаю много из того, что есть в coreutils; в нем должно быть какое-то отделение от аппаратного или низкоуровневого программного уровня (например, количество мест, где coreutils знает, какого типафайловой системы, в которой она включена, должна быть минимальной или, что еще лучше, нулевой.) Эмуляторы и виртуальные машины, используемые для целей многоплатформенного тестирования, имеют ограничения. Например, Mac OS X специально разработана таким образом, чтобы препятствовать возможности эмулировать или виртуализировать ее.

Рок Брентвуд
источник
-1

Solaris (по состоянию на svn_140-что-то) также будет вариант.

Если вы используете дистрибутив, вы сумасшедший. Остановить сейчас. Обратиться за психиатрической помощью.

Если вы используете LFS , качайте! Повеселись!

Если вы создаете дистрибутив, я приветствую вашу храбрость, сэр.

bahamat
источник
1
вопрос не в том, «какой дистрибутив» я могу использовать, а в замене coreutils на Linux. Разве вы не имеете в виду opensolaris coreutils? также это меньше PITA, чем опция FreeBSD?
ксенотеррацид
1
Исходный код OpenSolaris - это просто Solaris. Исходный код Solaris вплоть до svn_14x был выпущен Sun / Oracle под CDDL. Существует три основных варианта наследства пользователей Unix. «Генетический» Unix (Solaris, AIX, True64 и т. Д., Который пришел из кода AT & T и в основном закрыт, но Solaris был открыт некоторое время), BSD (который наконец-то стал самостоятельным с 4.4-lite) и GNU. Но я думаю, что отойти от GNU будет одинаково сложно (или легко), если вы идете с BSD или Solaris. Или вы можете стать действительно амбициозными и создать xenocore-utils ;-)
bahamat