Ejecutamos la línea de comandos de Linux en iOS

Ejecutamos la línea de comandos de Linux en iOS

¿Sabías que puedes ejecutar una terminal de Linux en un dispositivo iOS? Tal vez te preguntes: «¿Para qué necesitaría usar aplicaciones de texto en mi iPhone?» Es una pregunta válida. Pero si estás leyendo Opensource.com, probablemente ya conozcas la respuesta: los usuarios de Linux quieren poder trabajar con él en cualquier dispositivo y disfrutar de sus configuraciones personalizadas.

Pero lo que más desean es resolver problemas complejos.

Tengo un iPad 2 Mini de siete años, que todavía es bastante útil para leer libros electrónicos y otras tareas. Sin embargo, quiero usarlo también para acceder a la línea de comandos de aplicaciones con mi conjunto de programas y scripts sin los cuales no puedo trabajar. Necesito un entorno al que estoy acostumbrado, así como mi estándar de desarrollo. Y así es como logré conseguirlo.

Conexión a un teclado

Trabajar con la línea de comandos para programación a través del teclado en pantalla del teléfono o tablet puede ser bastante incómodo. Recomiendo conectar un teclado externo, ya sea por Bluetooth o utilizando un adaptador de cámara para conectar un teclado por cable (yo elegí la segunda opción). Al conectar un teclado dividido Kinesis Advantage al iPhone 6, se obtiene un dispositivo extraño que se asemeja a un ciberdesk corporativo de la clásica juego de rol Shadowrun.

Instalando la shell en iOS

Para ejecutar un sistema Linux totalmente funcional en iOS, hay dos opciones:

  • Shell segura (SSH), conectada a un ordenador con Linux
  • Ejecutar un sistema virtual con Alpine Linux usando iSH, que es de código abierto, pero debe instalarse a través de la aplicación propietaria TestFlight de Apple.

Como alternativa, existen dos aplicaciones emuladoras de terminal de código abierto que permiten trabajar con herramientas de código abierto en un entorno limitado. Esta es la opción más reducida; de hecho, no estás ejecutando Linux, sino herramientas de Linux. Al trabajar con estas aplicaciones, hay estrictas limitaciones en las capacidades, sin embargo, obtienes una funcionalidad parcial de línea de comandos.

Antes de pasar a soluciones más complejas, consideraré una forma más sencilla.

Opción 1: shell en un «sandbox»

Una de las maneras más sencillas es instalar una aplicación para iOS LibTerm. Esto es código abierto una consola en "sandbox" que admite más de 80 comandos al precio de cero dólares. Incluye Python 2.7, Python 3.7, Lua, C, Clang y mucho más.

Funcionalidad similar ofrece a-Shell, descrito por sus desarrolladores como "una interfaz de usuario de prueba para plataformas con entrada en pantalla". Los códigos fuente de a-Shell están disponibles open source, se encuentra en desarrollo activo, proporciona acceso al sistema de archivos y viene con Lua, Python, Tex, Vim, JavaScript, C y C++, así como con Clang y Clang++. Incluso permite instalar paquetes de Python usando pip.

Opción 2: SSH

Un paso más allá de descargar una aplicación es configurar un cliente SSH. Desde hace tiempo podemos usar cualquiera de las muchas aplicaciones de clientes SSH para iOS para conectar a un servidor que ejecute Linux o BSD. La ventaja de usar SSH es que en el servidor puede ejecutarse cualquier distribución con cualquier software. Trabajas de forma remota y los resultados se envían directamente al emulador de terminal en el dispositivo iOS.

Blink shell es una popular aplicación SSH de pago en open source. Si ignoramos la pequeña pantalla del dispositivo, usar este software se asemeja a conectarse a un servidor a través de cualquier otra línea de comandos. El terminal Blink se ve magnífico, tiene muchas plantillas listas y una función para crear las propias, incluyendo la capacidad de ajustar y añadir nuevas fuentes.

Opción 3: ejecutar Linux

Usar SSH para conectarse a un servidor bajo Linux es una excelente manera de acceder a la línea de comandos, pero requiere un servidor externo y conexión de red. No es un gran obstáculo, pero no se puede ignorar completamente, por lo que puede que necesites trabajar con Linux sin servidor.

Si este es tu caso, necesitarás dar un paso más allá. TestFlight — es un servicio propietario para instalar aplicaciones en desarrollo antes de que se publiquen en la App Store de Apple. La aplicación TestFlight se puede instalar desde la App Store y luego usar aplicaciones de prueba. Las aplicaciones en TestFlight permiten trabajar con ellas durante un tiempo limitado para un número reducido de beta testers (generalmente hasta 10,000). Para descargar la aplicación de prueba, es necesario acceder desde su dispositivo a un enlace que generalmente se encuentra en el sitio web del desarrollador de la aplicación de prueba.

Ejecutando Alpine Linux con iSH

iSH — es una aplicación de código abierto TestFlight que ejecuta una máquina virtual con una distribución lista Alpine Linux (con un poco de esfuerzo, se pueden ejecutar otras distribuciones también).

Características importantes: la aplicación es experimental. Dado que iSH es actualmente una aplicación de prueba, no espere un funcionamiento constante y confiable. Las aplicaciones de TestFlight están limitadas en el tiempo. Mi versión actual funcionará solo 60 días. Esto significa que, después de 60 días, seré excluido y tendré que unirme nuevamente a la siguiente etapa de pruebas de iSH. Además, perderé todos mis archivos si no los exporto utilizando Archivos en iOS o si no los copio a un host de Git o a través de SSH. En otras palabras: ¡No esperes que todo esto siga funcionando! ¡No coloques nada importante en el sistema! ¡Realiza copias de seguridad en un lugar separado!

Instalación de iSH

Comienza instalando TestFlight desde la App Store. Luego instala iSH, obteniendo un enlace de instalación desde el sitio web de la aplicación. Hay otra forma de instalación utilizando AltStore, pero no la he probado. O, si tienes una cuenta de desarrollador de pago, puedes descargar el repositorio de iSH desde GitHub e instalarlo tú mismo.

A través del enlace, TestFlight instalará la aplicación iSH en tu dispositivo. Al igual que con cualquier otra aplicación, aparecerá un ícono en la pantalla.

Gestión de paquetes

iSH ejecuta un emulador x86 con Alpine Linux. Alpine es una distribución muy pequeña de menos de 5 MB. Era la primera vez que trabajaba con Alpine, así que pensaba que tal minimalismo sería molesto, pero en realidad me gustó mucho.

Ejecutamos la línea de comandos de Linux en iOS
En Alpine se utiliza un gestor de paquetes apk, que es más simple incluso que apt o pacman.

Cómo instalar un paquete:

apk add package

Cómo eliminar un paquete:

apk del package

Cómo conocer otros comandos e información:

apk --help

Actualización del gestor de paquetes:

apk update
apk upgrade

Instalación del editor de texto

El editor de texto estándar en Alpine es Vi, pero prefiero Vim, así que lo instalé:

apk add vim

Si lo deseas, puedes instalar Nano o Emacs.

Cambio de shell

No sé sobre ustedes, pero yo necesitaba fish shell. Otras personas prefieren Bash o Zsh. Sin embargo, en Alpine se utiliza ash. Ash es una bifurcación del shell Dash, que a su vez es una bifurcación del original ash, o Almquist shell. Su prioridad es la velocidad. Decidí intercambiar velocidad por autocompletado integrado, colores, gestión de teclas en Vim y resaltado de sintaxis, que me gustan y conozco de fish shell.

Instalación de fish:

apk add fish

Si necesitas Bash con su autocompletado y páginas man, instálalas:

apk add bash bash-doc bash-completion

La ideología minimalista de Alpine generalmente significa que algunos programas que en otras distribuciones son un solo paquete, se dividen en varios paquetes más pequeños. Esto también significa que puedes personalizar y reducir el tamaño del sistema exactamente como desees.

Más sobre la instalación de Bash se puede encontrar en este tutorial.

Cambio de shell por defecto

Después de instalar fish, puedes cambiar temporalmente a ella ingresando fish y accediendo al shell. Pero quiero hacer de fish el shell por defecto, y el comando chsh, que usé en otras distribuciones, no funcionó.

Primero averigüemos dónde se instaló fish:

which fish

Esto es lo que obtuve:

/usr/bin/fish

Luego cambiamos el shell de inicio de sesión a fish. Puedes usar cualquier editor que te resulte cómodo. Si eres principiante, instala Nano (con el comando apk add nano), para poder editar los archivos de configuración y guardarlos a través de CTRL+X, confirmar y salir.

Pero yo usé Vim:

vim /etc/passwd

Mi primera línea era así:

root:x:0:0:root:/root:/bin/ash

Para hacer de fish el shell por defecto, cambiamos esta línea a la siguiente:

root:x:0:0:root:/root:/usr/bin/fish

Luego guardamos el archivo y salimos.

Estoy seguro de que hay una buena manera de cambiar el camino hacia el shell para que se pueda utilizar de inmediato. Pero no la conozco, así que recomiendo volver al navegador de aplicaciones, forzar el cierre del shell y, para mayor seguridad, apagar y reiniciar el iPad o iPhone. Vuelve a abrir iSH y ahora, además del mensaje "¡Bienvenido a Alpine!" y la información de inicio de apk, verás el mensaje de bienvenida estándar de inicio de sesión de fish: Bienvenido a fish, el shell interactivo amigable. ¡Hurra!

Ejecutamos la línea de comandos de Linux en iOS

Configurando Python y pip

He decidido añadir Python (versión 3.x), no solo para escribir código, sino también porque estoy usando varios programas en Python. Vamos a instalarlo:

apk add python3

Aunque Python 2.x está obsoleto, también se puede instalar:

apk add python

Instalemos el gestor de paquetes de Python llamado pip y setuptools:

python3 -m ensurepip --default-pip

La instalación y configuración del gestor de paquetes llevará un tiempo, así que solo espera.

Después podrás descargar la herramienta para transferir archivos por red curl:

apk add curl

Leyendo los manuales

Fish utiliza autocompletado incorporado basado en las páginas man. Al igual que otros usuarios de línea de comandos, utilizo el manual man, pero en Alpine no está instalado. Así que lo instalé con el paginador de terminales less:

apk add man man-pages less less-doc

Además del man, utilizo el magnífico proyecto tldr pages, que proporciona páginas man simplificadas y gestionadas por la comunidad.

Lo instalé usando pip:

pip install tldr

Comando tldr se conecta a la web para obtener páginas cuando se encuentra con una solicitud para una nueva página. Si necesitas saber cómo usar un comando, puedes escribir algo como tldr curl y obtener una descripción en inglés sencillo y buenos ejemplos de uso del comando.

Por supuesto, todo este trabajo de instalación se puede automatizar usando dotfiles o un script de instalación, pero en realidad no se ajusta mucho a la ideología de Alpine: configurar una instalación mínima claramente adaptada a tus necesidades. Además, ¿no ha llevado tanto tiempo, verdad?

Información adicional

En la wiki de iSH hay una página "what works" con reportes sobre qué paquetes funcionan actualmente. Por cierto, parece que npm no está funcionando actualmente.

En otra página de la wiki se explica cómo acceder a los archivos de iSH desde la aplicación Archivos de iOS. Esta es una forma de mover y copiar archivos.

También se puede instalar Git (¡sí! apk add git ) y subir tu trabajo a un repositorio remoto o transferirlo a un servidor a través de SSH. Y, por supuesto, puedes descargar y ejecutar cualquier cantidad de maravillosos proyectos de código abierto desde GitHub.

Más información sobre iSH se puede encontrar en estos enlaces:

Publicidad

Vdsina ofrece servidores virtuales en Linux o Windows. Usamos exclusivamente equipo de marca, el mejor panel de control de servidores de su clase desarrollado internamente y algunos de los mejores centros de datos en Rusia y la UE. ¡Apresúrate a hacer tu pedido!

Ejecutamos la línea de comandos de Linux en iOS

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster