He estado pensando en descontinuar el uso de GNU Coreutils en mis sistemas Linux, pero para ser honesto, a diferencia de muchos otros componentes GNU, no puedo piense en alternativas (en Linux) . ¿Qué alternativas existen a las coreutils de GNU? ¿Necesitaré más de un paquete? Los enlaces al proyecto son obligatorios, puntos de bonificación por nombrar paquetes de distribución.
Además, no sugiera cosas a menos que sepa que funcionan en Linux y pueda hacer referencia a instrucciones. Dudo que pronto cambie de kernel, y soy demasiado vago para algo más allá de un simple ./configure; make; make install
. Ciertamente no voy a piratear C para ello.
advertencia: si su distribución usa coreutils, eliminarlas podría romper el funcionamiento de su distribución. Sin embargo, no tenerlos en primer lugar en su $PATH
no debería romper cosas, ya que la mayoría de los scripts deben usar rutas absolutas.
Comentarios
- Curiosamente, ¿por qué busca alternativas?
- @xeno » Más robusto «? También tenga en cuenta que su sistema (incluido el kernel) está construido en gran parte con GCC y depende de GLibC 🙂
- @xeno Debian ahora está usando EGLIBC , que es una especie de bifurcación de GLibC. Pero sigue de cerca a GLibC, por lo que la diferencia ‘ es tan grande.
- Tanto Clang como tcc podrían (al menos en algún momento) compilar el kernel de Linux.
- Hay personas que trabajan en un GNU userland en un kernel BSD , pero ‘ no he oído hablar de lo contrario. Realmente cambiar de kernel sería más fácil. Puedes probarlo primero en una VM si ‘ eres tímido.
Responde
busybox
el favorito de 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 de 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 que funcione, simplemente agregue algunos nodos de dispositivo en / dev, algunos archivos de configuración en / etc y un kernel de Linux.
Puede convertir prácticamente cualquier nombre de coreutil en un enlace al binario de busybox y funcionará. también puede ejecutar busybox <command>
y funcionará. Ejemplo: si está en Gentoo y no ha instalado su vi
todavía, puede ejecutar busybox vi filename
y estará en vi . Es
-
Alpine Linux : basado en BusyBox y uClibc, aquí hay una descripción general
Comentarios
- siéntete libre de modificar esto con enlaces a tu distribución
- también, este es un favorito en incrustado, por lo que, aunque una alternativa, ‘ probablemente no sea suficiente para reemplazar GNU para mi entorno de escritorio / servidor
- Esta es la única solución práctica en un cajero automático, si no ‘ no desea hackear C. Y las versiones de busybox deberían ser bastante estándar.
Answe r
Este es un tema más antiguo, me doy cuenta. Sin embargo, esta solución nunca se mencionó y aparece relativamente alta en Google para «Linux con bsd userland».
Hay otra solución: reliquia. Sé que funciona en Arch, y está empaquetado en AUR (mira gnu2sysv, por ejemplo). Esto reemplazará el paquete coreutils de Arch y proporcionará las reliquias equivalentes. Puede leer sobre todo esto en la wiki de arch: https://wiki.archlinux.org/index.php/Base2heirloom
Respuesta
Consulte uutils .
Esta es una implementación multiplataforma de las coreutils GNU que está escrita en Rust. Tiene licencia del MIT.En el momento de escribir esta respuesta, no está 100℅ completa (faltan algunas cruciales como ls
y cp
), pero muchas otras
Respuesta
Sospecho que te resultará difícil deshacerte de GNU Coreutils, sin embargo, hay siempre las herramientas BSD equivalentes, aunque no son reemplazos directos para las herramientas GNU.
Comentarios
- ¿Cómo haría para instalar BSD? herramientas en una distribución de Linux? ¿Dónde las conseguiría?
- El sistema operativo completo de FreeBSD ‘ está disponible a través de CVS freebsd.org/cgi/cvsweb.cgi/src , sin embargo, conseguir que el área de usuario BSD se compile bajo un kernel de Linux sería bastante difícil. El área de usuario de GNU ‘ es probablemente más portátil que BSD, ya que el área de usuario de GNU ‘ (al menos al principio) fue construido para ser portátil entre múltiples núcleos.
- que suena como ea PITA, seguro si ‘ es razonablemente posible que alguien en algún lugar lo haya empaquetado al menos una vez para Linux.
- Solaris (a partir de 140-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ás usando LFS , ¡sigue adelante! ¡Diviértete! Si está haciendo una distribución, aplaudo su valentía, señor.
- Sí, ‘ no estoy seguro ‘ s incluso posible. Probablemente sea ‘ más fácil instalar FreeBSD y habilitar la compatibilidad con Linux. Puede hacer que las coreutils GNU funcionen fácilmente en FreeBSD, pero no al revés.
Respuesta
Por lo general, cuando alguien pide alejarse de algo que es de 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 «deuda de código». El archivo GNU ha acumulado una cantidad bastante grande 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 , se 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 total (como un caso especial), al igual que Wayland está siendo propuesto para X … muchos de sus desarrolladores vienen directamente del campo X.
Mi sugerencia es realmente entrar y refactorizar coreutils. Alguien tiene que hacerlo. Y quien plantee el problema de reemplazar las coreutils: su idea, su proyecto.
Con este fin, aproveche cualquier automatización que pueda encontrar: motores de refactorización, como cscout, o cualquier cosa que aplique métodos de análisis / síntesis más avanzados (por ejemplo, celosías de conceptos formales). Pero el análisis profundo es todavía un área relativamente nueva y abierta de investigación activa, y pasa a la Inteligencia Artificial. (Un ingeniero de software 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 realizar con cambios progresivos paso a paso + pasos de prueba de regresión automatizada; que puede ir bastante rápido (por ejemplo, 10 o más actualizaciones de revisión / día). Se produce una complicación de este proceso 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 lo que hay en coreutils; debería 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é tipo de 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 para emularlo o VM.
Responder
Solaris (a partir de svn_140-algo) también sería una opción.
Si estás usando una distribución, estás loco. Detente ahora. Busca ayuda psiquiátrica.
Si estás usando LFS , ¡Diviértete!
Si estás haciendo una distribución, aplaudo tu valentía, señor.
Comentarios
- this isn ‘ una pregunta sobre » qué distribución » puedo usar, es
s sobre la sustitución de coreutils en Linux. A menos que ‘ se refiera a opensolaris coreutils. ¿También es esto menos un PITA que la opción FreeBSD?
- El código fuente de OpenSolaris es solo Solaris. El código fuente de Solaris hasta svn_14x fue lanzado por Sun / Oracle bajo CDDL. Básicamente, existen tres herencias principales para el espacio de usuario de Unix.» » Unix genético (Solaris, AIX, True64, etc., que provino de AT & T código y está en gran parte cerrado, pero Solaris estuvo abierto por un tiempo), BSD (que finalmente se mantuvo en él ‘ propio a partir de 4.4-lite) y GNU. Pero creo que alejarse de GNU será igualmente difícil (o fácil) ya sea que elija BSD o Solaris. O puede ser realmente ambicioso y hacer xenocore-utils 😉