¿Alguna opción para reemplazar GNU coreutils en Linux?

20

He estado pensando en suspender el uso de GNU Coreutils en mis sistemas Linux, pero para ser honesto, a diferencia de muchos otros componentes GNU, no puedo pensar en ninguna alternativa (en Linux) . ¿Qué alternativas hay a GNU coreutils? ¿Necesitaré más de un paquete? Los enlaces al proyecto son imprescindibles, puntos de bonificación para nombrar paquetes de distribución.

Además, no sugiera cosas a menos que sepa que funcionan en Linux y puede consultar las instrucciones. Dudo que cambie de kernel pronto, y soy demasiado vago para cualquier cosa que no sea sencilla ./configure; make; make install. Ciertamente no voy a hackear C por eso.

advertencia: si su distribución usa coreutils, eliminarlos podría romper la forma en que funciona su distribución. Sin embargo, no tenerlos en primer lugar $PATHno debería romper las cosas, ya que la mayoría de los scripts deberían usar rutas absolutas.

xenoterracida
fuente
10
Curiosamente, ¿por qué buscas alternativas?
tshepang
2
@xeno "¿Más robusto"? También hay que tener en cuenta que el sistema (incluyendo núcleo) está construido en gran parte con GCC y depende de glibc :)
Tshepang
3
@xeno Debian ahora está usando EGLIBC , que es una especie de bifurcación de GLibC. Pero sigue a GLibC de cerca, por lo que la diferencia no es tan grande.
tshepang
2
Tanto Clang como tcc podrían (de una vez, de todos modos) compilar el kernel de Linux.
Shawn J. Goff
2
Hay personas que trabajan en un usuario GNU en un kernel BSD , pero no he oído hablar al revés. Realmente cambiar de núcleo sería más fácil. Puedes probarlo primero en una VM si eres tímido.
Gilles 'SO- deja de ser malvado'

Respuestas:

15

busybox El favorito de los sistemas Linux embebidos.

BusyBox combina pequeñas versiones de muchas utilidades comunes de UNIX en un único ejecutable pequeño. Proporciona reemplazos para la mayoría de las utilidades que normalmente se encuentran en GNU fileutils, shellutils, etc. Las utilidades en BusyBox generalmente tienen menos opciones que sus primos GNU con todas las funciones; sin embargo, las opciones que se incluyen proporcionan la funcionalidad esperada y se comportan de manera muy similar a sus contrapartes GNU. BusyBox proporciona un entorno bastante completo para cualquier sistema pequeño o integrado.
BusyBox se ha escrito teniendo en cuenta la optimización del tamaño y los recursos limitados. También es extremadamente modular, por lo que puede incluir o excluir fácilmente comandos (o funciones) en tiempo de compilación. Esto facilita la personalización de sus sistemas integrados. Para crear un sistema de trabajo, simplemente agregue algunos nodos de dispositivo en / dev, algunos archivos de configuración en / etc, y un kernel de Linux.

Puede hacer que cualquier nombre coreutil sea un enlace al binario busybox y funcionará. también puedes correr busybox <command>y funcionará. Ejemplo: si estás en Gentoo y aún no has instalado tu vi, puedes ejecutar busybox vi filenamey estarás en vi. Sus

xenoterracida
fuente
siéntase libre de modificar esto con enlaces a su distribución
xenoterracide
También, esta es una de las favoritas en incrustado, por lo que, aunque una alternativa es probable que no va a ser suficiente para reemplazar de GNU para mi entorno de escritorio / servidor
xenoterracide
Esta es la única solución práctica para cajeros automáticos, si no quieres hackear C. Las versiones de busybox deberían ser bastante estándar.
maxschlepzig
5

Este es un tema antiguo, me doy cuenta. Sin embargo, esta solución nunca se mencionó y aparece relativamente en Google para "Linux con bsd userland".

Hay otra solución: reliquia. Sé que funciona en Arch, y está empaquetado en el AUR (mira gnu2sysv, por ejemplo). Esto reemplazará el paquete coreutils de Arch y proporcionará los equivalentes de la herencia. Puedes leer todo sobre la wiki de arch: https://wiki.archlinux.org/index.php/Base2heirloom

bbenne10
fuente
2

Echa un vistazo a uutils .

Esta es una implementación multiplataforma de los coreutils de GNU que está escrita en Rust. Tiene licencia MIT. Al momento de escribir esta respuesta, no está completa 100℅ (faltan algunos cruciales como lsy cp), pero muchos otros están listos.

Russ
fuente
0

Sospecho que le sería difícil deshacerse de GNU Coreutils, sin embargo, siempre hay herramientas BSD equivalentes, aunque no son reemplazos directos para las herramientas GNU.

jsbillings
fuente
¿Cómo haría para instalar las herramientas BSD en una distribución de Linux? ¿Dónde los conseguiría?
xenoterracide
Todo el sistema operativo de FreeBSD está disponible a través de CVS freebsd.org/cgi/cvsweb.cgi/src , sin embargo, lograr que el país de usuario BSD se compile bajo un kernel de Linux sería bastante difícil. La tierra de usuarios de GNU es probablemente más portátil que BSD, ya que la tierra de usuarios de GNU (al menos al principio) fue construida para ser portátil entre múltiples núcleos.
jsbillings
eso suena como un PITA, seguro si es razonablemente posible que alguien en algún lugar lo haya empaquetado al menos una vez para Linux.
xenoterracide
Solaris (a partir de 140 y algo también está disponible) también sería una opción. Si estás usando una distribución, estás loco. Parar ahora. Si está utilizando LFS , ¡adelante! ¡Que te diviertas! Si está haciendo una distribución, aplaudo su valentía señor.
bahamat
Sí, no estoy seguro de que sea posible. Probablemente sea más fácil instalar FreeBSD y habilitar la compatibilidad con Linux. Puede hacer que los coreutils de GNU funcionen con FreeBSD, pero no al revés.
jsbillings
0

Por lo general, cuando alguien pide alejarse de algo que está en uso generalizado, bien probado y verificado en muchas plataformas, es una expresión externa de un problema subyacente conocido como "olor a código" y la acumulación incontrolada de "deuda técnica" o "código deuda". El archivo GNU había acumulado una gran cantidad de deuda de código a lo largo de los años, y cuando una base de código no se mantiene adecuadamente puede llegar a un punto de ruptura (código heredado e incluso código heredado mórbido).

Normalmente, uno llevaría a cabo un proceso de reingeniería y refactorización a intervalos para mantener esto bajo control. Entonces, la verdadera pregunta que se plantea aquí es si se ha desarrollado una versión refactorizada de coreutils. Esto, por supuesto, incluye la posibilidad de un reemplazo absoluto (como un caso especial), al igual que Wayland se propone para X ... muchos de sus desarrolladores salen directamente del campamento X.

Mi sugerencia es entrar y refactorizar coreutils. Alguien tiene que hacerlo. Y quien plantea el problema de reemplazar coreutils: su idea, su proyecto.

Para este fin, aproveche cualquier automatización que pueda encontrar: refactorizar motores, como cscout, o cualquier cosa que aplique métodos de análisis / síntesis más avanzados (por ejemplo, redes conceptuales formales). Pero el análisis profundo sigue siendo un área relativamente nueva y abierta de investigación activa, y se cruza con la Inteligencia Artificial. (Un ingeniero de software de robot).

La mayoría de las utilidades ya deberían tener conjuntos de pruebas en su lugar, por lo que la validación se puede hacer con un cambio progresivo gradual + pasos de prueba de regresión automatizados; que puede ir bastante rápido (por ejemplo, 10 o más actualizaciones de revisión / día). Una complicación de este proceso ocurre si hay dependencias de hardware o software de bajo nivel en cualquier parte del paquete de software; ya que eso implica validación en múltiples plataformas. No sé mucho de eso hay en coreutils; debe haber algún tipo de separación entre el hardware o las capas de software de bajo nivel (por ejemplo, el número de lugares donde coreutils sabe qué tipodel sistema de archivos en el que se encuentra debe ser mínimo o, mejor, cero.) Los emuladores y las máquinas virtuales, que se utilizan para realizar pruebas multiplataforma, tienen limitaciones. Por ejemplo, Mac OS X está diseñado específicamente para obstruir la capacidad de emularlo o VM.

Rock Brentwood
fuente
-1

Solaris (a partir de svn_140-something) también sería una opción.

Si estás usando una distribución, estás loco. Parar ahora. Busque ayuda psiquiátrica.

Si está utilizando LFS , ¡adelante! ¡Que te diviertas!

Si está haciendo una distribución, aplaudo su valentía señor.

bahamat
fuente
1
No se trata de "qué distribución" puedo usar, se trata de reemplazar coreutils en Linux. ¿A menos que te refieras a opensolaris coreutils? ¿Es esto menos PITA que la opción FreeBSD?
xenoterracide
1
El código fuente de OpenSolaris es solo Solaris. El código fuente de Solaris hasta que svn_14x fue lanzado por Sun / Oracle bajo CDDL. Básicamente, hay tres herencias principales para el país de usuarios de Unix. Unix "genético" (Solaris, AIX, True64, etc., que proviene del código AT&T y está cerrado en gran parte, pero Solaris estuvo abierto por un tiempo), BSD (que finalmente se mantuvo solo a partir de 4.4-lite) y GNU. Pero creo que alejarse de GNU será igualmente difícil (o fácil) ya sea con BSD o Solaris. O puede ser realmente ambiciosos y hacer xenocore-utils ;-)
bahamat