¿Sabía que puede ejecutar una línea de comando de Linux en su dispositivo iOS? Quizás se pregunte, "¿por qué querría usar aplicaciones basadas en texto en mi pequeño iPhone?" OK bastante justo. Esa es una pregunta bastante razonable. Pero si está leyendo Opensource.com, probablemente sepa la respuesta:los usuarios de Linux quieren poder usar cualquier dispositivo y también quieren usar sus propias personalizaciones.
Y, sobre todo, quieren un desafío.
Tengo un iPad 2 Mini de siete años que todavía funciona bien para leer libros electrónicos y otras tareas. Pero también quiero usarlo para acceder a la línea de comandos de las aplicaciones y mi conjunto de programas y scripts de los que parece que no puedo prescindir. Quiero el entorno al que estoy acostumbrado, así como mi entorno de desarrollo estándar. Así es como lo hice.
Conectar a un teclado
Usar la línea de comandos para programar en el teclado en pantalla de un teléfono o tableta no es muy divertido. Recomiendo conectar un teclado externo, ya sea a través de Bluetooth o usando un adaptador de kit de conexión de cámara para conectar un teclado con cable (mi preferencia). Conectar mi teclado dividido Kinesis Advantage a mi iPhone 6 crea una óptica extraña, como la cubierta cibernética de una corporación del clásico juego de rol Shadowrun.
Obtener un shell en iOS
Tiene dos opciones para ejecutar un sistema Linux completo en iOS:
- Secure shell (SSH) en una computadora con Linux
- Ejecute un sistema virtualizado usando Alpine Linux con iSH, que es de código abierto, pero debe instalarse usando la aplicación TestFlight propiedad de Apple
Alternativamente, hay dos aplicaciones de emulador de terminal de código abierto que proporcionan herramientas de código abierto dentro de un entorno restringido. Esta es la opción más limitada:en realidad no le permite ejecutar Linux, pero está ejecutando herramientas de Linux. Existen fuertes restricciones sobre lo que puede hacer en el dispositivo con estas aplicaciones, pero le brindan algunas funciones de línea de comandos.
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Veré el enfoque más simple antes de explorar soluciones más desafiantes.
Opción 1:un shell en espacio aislado
Una de las formas más fáciles de comenzar es con la aplicación LibTerm para iOS. Este es un shell de línea de comandos de código abierto en espacio aislado con más de 80 comandos incluidos en una aplicación de $0. Viene con Python 2.7, Python 3.7, Lua, C, Clang y más.
En una línea similar está a-Shell, descrito como una "interfaz de usuario basada en texto para una plataforma basada en pantalla". a-Shell es de código abierto, en desarrollo activo, otorga acceso al sistema de archivos y se entrega con Lua, Python, Tex, Vim, JavaScript, C y C++, junto con Clang y Clang++. Incluso te permite instalar paquetes de Python con pip.
Opción 2:SSH en cualquier lugar
Un paso más allá de descargar una aplicación es configurar un cliente SSH. Desde hace mucho tiempo, ha sido posible usar una de las muchas aplicaciones de cliente SSH en iOS para conectarse a un servidor que ejecuta una distribución de Linux o BSD. La ventaja de usar SSH es que su servidor puede ejecutar cualquier distribución con cualquier software que desee. Trabaja de forma remota y su salida se canaliza al emulador de terminal de su dispositivo iOS.
Blink shell es una popular aplicación SSH de código abierto de pago. Fuera de la pantalla pequeña, usar este software es similar a conectarse a un servidor a través de cualquier otro símbolo del sistema. El terminal de Blink se ve hermoso, con varios temas incluidos y la capacidad de crear sus propios temas, incluida la personalización y la adición de nuevas fuentes.
Opción 3:Ejecutar Linux
Usar SSH para conectarse a un servidor que ejecuta Linux es una excelente manera de acceder a un indicador, pero requiere acceso a un servidor externo y una conexión. Esta no es la peor barrera de entrada, pero no es completamente insignificante, y es posible que desee utilizar Linux sin este requisito de servidor.
Si ese es tu caso, tendrás que romper algo un poco más en la vanguardia. TestFlight es un servicio patentado para implementar aplicaciones en desarrollo antes de enviarlas a la App Store de Apple. Puede descargar la aplicación TestFlight desde la tienda y luego registrarse para una serie de aplicaciones de prueba. Las aplicaciones en TestFlight permiten una cantidad limitada de probadores beta externos (generalmente hasta 10,000) por un período de tiempo limitado. Para descargar una aplicación de prueba, debe acceder a un enlace directamente desde su dispositivo, que generalmente se encuentra en el sitio web del desarrollador de la aplicación de prueba.
Ejecutar Alpine Linux con iSH
iSH es una aplicación TestFlight de código abierto que ejecuta una máquina virtual con la distribución Alpine Linux lista para usar (pero puede ejecutar otras distribuciones con un poco más de retoques).
Una advertencia importante:esto es experimental . Dado que iSH es actualmente una aplicación de prueba, no espere un servicio sólido o permanente. Las aplicaciones de TestFlight tienen un límite de tiempo. Mi compilación actual dura 60 días. Esto significa que en 60 días se me bloqueará y tendré que volver a unirme a la próxima fase de prueba de iSH. Además, perderé mis archivos a menos que los exporte con Archivos en iOS o los respalde en un host Git o con SSH. Para ser claros:¡No confíe en esto para seguir trabajando! ¡No pongas nada aquí que sea esencial! ¡Haz una copia de seguridad de tu trabajo en otro lugar!
Instalar iSH
Comience instalando TestFlight a través de la App Store. Luego instale iSH obteniendo el enlace de instalación a través de su sitio web. Hay otro método de instalación que usa AltStore, pero no lo he probado. O, si tiene una cuenta de desarrollador paga, puede descargar el repositorio de iSH de GitHub e implementarlo usted mismo.
Usando el enlace, TestFlight instala una aplicación iSH en su dispositivo. Como cualquier otra aplicación, aparece en tu pantalla con un ícono.
Administrar paquetes
iSH ejecuta un emulador x86 con Alpine Linux. Alpine es una pequeña distribución de menos de 5 MB. Esta fue la primera vez que ejecuté Alpine y pensé que me frustraría con una distribución tan mínima, pero realmente lo disfruté.
Alpine usa el administrador de paquetes apk, que es más simple incluso que apt o pacman.
Para instalar un paquete:
apk add package
Para eliminar un paquete:
apk del package
Encuentra otros comandos e información con:
apk --help
Actualice el administrador de paquetes:
apk update
apk upgrade
Obtener un editor de texto
El editor de texto predeterminado de Alpine es Vi, pero prefiero Vim, así que lo instalé:
apk add vim
Si lo prefiere, puede instalar Nano o Emacs.
Cambiar la concha
No sé ustedes, pero yo necesito el caparazón de pescado. Otras personas prefieren Bash o Zsh. ¡Pero Alpine usa ceniza! Ash es una bifurcación de Dash Shell, en sí misma una bifurcación de Ash original o Almquist Shell. Está diseñado para la velocidad. Decidí cambiar la velocidad por el autocompletado integrado, el color, el control Vim-key y el resaltado de sintaxis que conozco y amo en Fish Shell.
Instalar pescado:
apk add fish
Si desea Bash y sus finalizaciones y páginas de manual, debe instalarlas y algunas cosas adicionales:
apk add bash bash-doc bash-completion
La ideología minimalista de Alpine generalmente significa que algunos programas que serían un solo paquete en otras distribuciones se dividen en múltiples paquetes más pequeños. Esto también significa que puede personalizar y simplificar su sistema exactamente como lo desee.
Puede encontrar más detalles sobre la instalación de Bash en este tutorial.
Cambiar el shell predeterminado
Después de instalar fish, puedes cambiarlo temporalmente y probarlo escribiendo fish
y cayendo en el caparazón. Pero quiero que fish sea mi caparazón predeterminado, y el chsh
el comando al que estoy acostumbrado de otras distribuciones no funciona.
Primero, averigüe dónde está instalado Fish:
which fish
Mi salida:
/usr/bin/fish
Luego, edite el shell de inicio de sesión para usar fish. Puede utilizar cualquier editor con el que se sienta cómodo. Si eres principiante, instala Nano (con apk add nano
) para que pueda editar archivos de configuración y guardarlos con CTRL+X, confirmar y salir.
Pero usé Vim:
vim /etc/passwd
Mi primera línea fue:
root:x:0:0:root:/root:/bin/ash
Para hacer que el pescado sea predeterminado, cambie esa línea a:
root:x:0:0:root:/root:/usr/bin/fish
Luego guarde y salga.
Estoy seguro de que hay una buena manera de volver a obtener el shell para que pueda comenzar a usarlo de inmediato. Pero no estoy seguro, así que recomiendo volver al navegador de la aplicación, forzar el cierre del shell y, por si acaso, apagar y reiniciar tu iPad o iPhone. Vuelva a abrir iSH, y ahora, además de "¡Bienvenido a Alpine!" mensaje e información sobre cómo comenzar con apk, verá el mensaje de bienvenida de inicio de sesión predeterminado de Fish:Bienvenido a Fish, el shell interactivo amigable . ¡Hurra!
Configurar Python y pip
Decidí agregar Python (versión 3.x), no solo para poder escribir código, sino porque confío en varios programas de Python. Instalarlo:
apk add python3
Aunque Python 2.x está en desuso, aún puede instalarlo:
apk add python
Instale el administrador de paquetes de Python, pip y las herramientas de configuración:
python3 -m ensurepip --default-pip
Lleva algún tiempo instalar y configurar el administrador de paquetes, así que solo espere.
Luego, puedes descargar curl, la herramienta de transferencia de redes:
apk add curl
Leer el manual
Fish utiliza el autocompletado integrado basado en páginas de manual. Al igual que otros usuarios de la línea de comandos, confío en el man
manual, y Alpine no viene con él instalado. Entonces, lo instalé junto con el menos buscapersonas:
apk add man man-pages less less-doc
Además de man, utilizo el fabuloso proyecto de páginas tldr, que proporciona páginas de manual simplificadas impulsadas por la comunidad.
Lo instalé con pip:
pip install tldr
El tldr
El comando se conecta a la web para buscar páginas cada vez que encuentra una solicitud de una nueva. Si necesita aprender a usar un comando, puede escribir algo como tldr curl
para obtener una explicación en inglés sencillo y buenos ejemplos de cómo usar el comando.
Por supuesto, podría automatizar todo este trabajo de instalación con archivos de puntos o un script de instalación, pero eso realmente no entraría dentro de la forma en que Alpine personaliza una instalación mínima exactamente según sus especificaciones. Además, no tomó tanto tiempo, ¿verdad?
Más información
El wiki de iSH contiene una página de "qué funciona" con informes sobre qué paquetes funcionan actualmente. Cabe destacar que npm no parece funcionar en este momento.
Otra página wiki explica cómo puede acceder a los archivos iSH desde la aplicación iOS Files. Esta es una forma de mover y transferir archivos.
También puedes instalar Git (¡sí! apk add git
) y envíe su trabajo a un repositorio remoto o transfiéralo a un servidor a través de SSH. Y, por supuesto, puede descargar y ejecutar cualquier cantidad de fabulosos proyectos de código abierto desde GitHub en su sistema.
Para obtener más información sobre iSH, consulte estos enlaces:
- sitio web de iSH
- Subreddit
- Problemas de GitHub
- Wiki