¿Es posible obtener versiones OS X de herramientas Unix en distribuciones modernas de Linux (como Ubuntu o RedHat)?

¿Es posible obtener versiones OS X de herramientas Unix en distribuciones modernas de Linux (como Ubuntu o RedHat)?

He observado que a menudo existen diferencias sutiles y a menudo molestas entre las versiones predeterminadas de ciertas herramientas de línea de comandos como pastey seden distribuciones modernas de Linux y OSX. Esto lleva arespuestasque no funcionan OS Xaunque funcionarán en casi cualquier distribución de Linux.

Entonces me pregunto, ¿existe una forma estándar de obtener el conjunto completo de OS Xversiones de las herramientas estándar de Unix en distribuciones modernas de Linux para que podamos probar la funcionalidad correcta de las soluciones en OSX, sin tener una copia?

Respuesta1

Como se menciona en un comentario, Apple hace elcódigo fuentede sus versiones de estas herramientas disponibles. Muchos comandos comunes están en elPaquete "shell_cmds", mientras que pegar y sed están en "texto_cmds". Puede obtener el código fuente y compilarlo.

Prácticamente todos funcionan bien en sistemas Linux, aunque a menudo hay que saltar al código fuente y eliminar pruebas explícitamente específicas de FreeBSD, particularmente la __FBSDID("...");línea que se encuentra en casi todos los archivos. No conozco ninguna distribución que los empaquete. Muchas distribuciones empaquetan versiones BSD de algunas herramientas comunes, que son muy parecidas (a menudo idénticas) a las versiones de OS X, aunque generalmente no incluyen cosas como pegar y sed. Por ejemplo, Debian incluyeocho paquetes llamadosbsdX(ninguno de los cuales tiene ninguno de esos comandos). Para las versiones de Apple específicamente, o para las muchas herramientas que no están incluidas en ellas, no es difícil crearlas usted mismo cuando las necesita siguiendo las instrucciones anteriores.

Dicho todo esto, el subconjunto común de herramientas GNU y BSD es elespecificación POSIX, donde se definen todos los comandos básicos. Puedes buscar elpegar comandoosedy ver qué argumentos está garantizado que aceptará en todas partes. Esta es la forma "moralmente correcta" de escribir código portátil: tanto las herramientas GNU como las herramientas BSD tienen extensiones, pero si permanece dentro de POSIX su código funcionará en ambas. Entoncescomprueba que siempre estás usando solo argumentos POSIXy luego lo que dices debería funcionar en OS X y otros sistemas por igual.

Respuesta2

Mientras que la mayoríaLas herramientas Unixy de OSX son de código abierto., el código fuente de muchas herramientas se basa en funciones de biblioteca y kernel que no están presentes en Linux (y que no son de código abierto y que no pueden ejecutarse en hardware que no sea de Apple sin un esfuerzo adicional y quizás violaciones de licencia). Dudo que puedas ejecutarlos en Linux sin un esfuerzo significativo.

La capa Unix de OSX está portada desdeFreeBSDy muchos programas son muy similares al de la versión FreeBSD que estaba vigente en el momento del lanzamiento de OSX. Puedes ejecutar FreeBSD en una máquina virtual y probar cosas allí. También puedes correrOpenBSD; OpenBSD se centra en la seguridad y es mucho más conservador que FreeBSD a la hora de adoptar nuevas funciones. Si desea probar la portabilidad de los scripts, también puede instalarAbiertoIndiana, que es una bifurcación de código abierto deSolarisbasado en la edición OpenSolaris ahora descontinuada. Dado que Solaris esSistema V-basado, Solaris más OpenBSD le ofrece una visión razonablemente amplia de la portabilidad de Unix.

También puede consultar la documentación de muchas variantes de Unix en línea:

información relacionada