Executando a linha de comando Linux no iOS

Executando a linha de comando Linux no iOS

Você sabia que é possível rodar um terminal Linux em um dispositivo iOS? Você pode se perguntar: “Por que eu precisaria usar aplicativos de texto no iPhone?” Essa é uma pergunta válida. Mas se você está lendo o Opensource.com, provavelmente já sabe a resposta: usuários de Linux querem ter a capacidade de trabalhar nele em qualquer dispositivo e desejam usar suas próprias configurações.

Mas, mais do que tudo, eles anseiam por soluções para desafios complexos.

Eu tenho um iPad Mini 2 de sete anos que ainda é bom para ler e-books e realizar outras tarefas. No entanto, eu quero usá-lo também para acessar o terminal de aplicativos com meu conjunto de programas e scripts dos quais não posso abrir mão. Eu preciso de um ambiente que estou acostumado, além do meu padrão de ambiente de desenvolvimento. E aqui está como consegui isso.

Conectando um teclado

Trabalhar no terminal para programação através do teclado virtual do telefone ou tablet é bastante inconveniente. Eu recomendo conectar um teclado externo, seja via Bluetooth ou usando um adaptador de conexão de câmera para conectar um teclado com fio (eu escolhi o segundo). Conectando um teclado dividido Kinesis Advantage ao iPhone 6, você obtém um dispositivo peculiar que se assemelha a um ciberdeck corporativo do clássico jogo de RPG Shadowrun.

Instalando o shell no iOS

Para iniciar um sistema Linux totalmente funcional no iOS, existem duas opções:

  • Secure shell (SSH), conectando-se a um computador com Linux
  • Executar um sistema virtual usando Alpine Linux com iSH, que é open source, mas deve ser instalado através do aplicativo proprietário TestFlight da Apple.

Alternativamente, existem dois aplicativos de emulador de terminal open source que permitem trabalhar com ferramentas open source em um ambiente restrito. Esta é a versão mais limitada — na verdade, você não está executando Linux, mas sim ferramentas do Linux. Ao usar esses aplicativos, existem restrições severas de funcionalidade, no entanto, você obtém uma funcionalidade parcial da linha de comando.

Antes de avançar para soluções mais complicadas, vou abordar a maneira mais simples.

Opção 1: shell na ‘sandbox’

Uma das maneiras mais simples é instalar um aplicativo para iOS LibTerm. Este é um open source um shell de comandos em um "sandbox" com suporte a mais de 80 comandos por zero dólares. Inclui Python 2.7, Python 3.7, Lua, C, Clang e muito mais.

Possui funcionalidades semelhantes a-Shell, descrito pelos desenvolvedores como "interface de usuário de teste para plataformas com entrada na tela". O código-fonte do a-Shell está disponível open source, está em desenvolvimento ativo, fornece acesso ao sistema de arquivos e vem com Lua, Python, Tex, Vim, JavaScript, C e C++, assim como com Clang e Clang++. Ele até permite instalar pacotes Python com pip.

Opção 2: SSH

Um passo adiante em relação ao download de um aplicativo é configurar um cliente SSH. Há muito tempo podemos usar qualquer uma das muitas aplicações de clientes SSH para iOS para nos conectar a um servidor rodando Linux ou BSD. A vantagem do uso do SSH é que qualquer distribuição com qualquer software pode estar rodando no servidor. Você trabalha remotamente e os resultados simplesmente são transmitidos para um emulador de terminal no dispositivo iOS.

Blink shell — é um popular aplicativo SSH pago em open source. Se ignorarmos a pequena tela do dispositivo, o uso desse software é semelhante a se conectar ao servidor através de qualquer outra linha de comando. O terminal Blink é visualmente impressionante, possui muitos temas prontos e uma função para criar os seus próprios, incluindo a possibilidade de ajustar e adicionar novas fontes.

Opção 3: rodando Linux

Usar SSH para se conectar a um servidor com Linux é uma ótima forma de acesso à linha de comando, mas requer um servidor externo e conexão de rede. Essa não é a maior barreira, mas não pode ser ignorada, então você pode precisar trabalhar com Linux sem um servidor.

Se esse for o seu caso, você precisará dar mais um passo adiante. TestFlight — é um serviço proprietário para instalar aplicativos em desenvolvimento antes de serem disponibilizados na Apple App Store. O aplicativo TestFlight pode ser instalado pela App Store e, em seguida, utilizado para testar aplicativos. Os aplicativos no TestFlight permitem que um número limitado de beta-testadores (geralmente até 10.000) trabalhem com eles por um tempo limitado. Para baixar o aplicativo de teste, você precisa acessar, de seu dispositivo, um link que geralmente está no site do desenvolvedor do aplicativo de teste.

Iniciando o Alpine Linux com iSH

iSH é um aplicativo open-source TestFlight que executa uma máquina virtual com uma distribuição pronta Alpine Linux (com um pouco de esforço, você pode executar outras distribuições também).

Uma característica importante: o aplicativo é experimental. Como o iSH é atualmente um aplicativo de teste, não espere um funcionamento constante e confiável. Os aplicativos TestFlight têm um tempo limitado. Minha versão atual funcionará por apenas 60 dias. Isso significa que, após 60 dias, serei excluído e precisarei me juntar novamente à próxima fase do teste do iSH. Além disso, eu perderei todos os meus arquivos, a menos que os exporte com o Files no iOS ou os copie para um host Git ou via SSH. Em outras palavras: Não espere que tudo isso continue funcionando! Não coloque nada importante para você no sistema! Faça backup em um local separado!

Instalando iSH

Comece pela instalação TestFlight pela App Store. Em seguida, instale o iSH, obtendo o link de instalação no site do aplicativo. Há outra forma de instalação usando o AltStore, mas eu não experimentei. Ou, se você tiver uma conta de desenvolvedor paga, pode baixar o repositório do iSH no GitHub e instalá-lo você mesmo.

Usando o link do TestFlight, o aplicativo iSH será instalado no seu dispositivo. Como acontece com qualquer outro aplicativo, um ícone aparecerá na tela.

Gerenciamento de pacotes

o iSH executa um emulador x86 com Alpine Linux. Alpine é uma distribuição pequena, com menos de 5 MB. Eu trabalhei com Alpine pela primeira vez, então pensei que esse minimalismo seria irritante, mas na verdade eu gostei muito.

Executando a linha de comando Linux no iOS
O Alpine usa o gerenciador de pacotes apk, que é mais simples do que até mesmo o apt ou pacman.

Como instalar um pacote:

apk add package

Como remover um pacote:

apk del package

Como descobrir outros comandos e informações:

apk --help

Atualização do gerenciador de pacotes:

apk update
apk upgrade

Instalação do editor de texto

O editor de texto padrão do Alpine é o Vi, mas eu prefiro o Vim, então o instalei:

apk add vim

Se desejar, você pode instalar o Nano ou o Emacs.

Mudança de shell

Não sei quanto a você, mas eu precisava de fish shell. Outras pessoas preferem Bash ou Zsh. No entanto, o Alpine usa ash! Ash é um fork do shell Dash, que por sua vez é um fork do original ash, ou Almquist shell. Seu foco é na velocidade. Decidi trocar velocidade por autocompletar embutido, cores, controle de teclas do Vim e realce de sintaxe que eu gosto e conheço do fish shell.

Instalação do fish:

apk add fish

Se você precisa do Bash com seus autocompletamentos e páginas man, instale-os:

apk add bash bash-doc bash-completion

A ideologia minimalista do Alpine geralmente significa que alguns programas que em outras distribuições são um único pacote, serão divididos em vários pacotes menores. Isso também significa que você pode personalizar e reduzir o tamanho do sistema exatamente como desejar.

Mais informações sobre a instalação do Bash podem ser encontradas neste tutorial.

Mudança de shell padrão

Após a instalação do fish, você pode alternar temporariamente para ele digitando fish e passando para o shell. Mas eu quero fazer do fish o shell padrão, e o comando chsh, que usei em outras distribuições, não funcionou.

Primeiro, vamos descobrir onde o fish foi instalado:

which fish

Aqui está o que eu obtive:

/usr/bin/fish

Em seguida, vamos mudar o login shell para fish. Você pode usar qualquer editor que lhe seja conveniente. Se você é iniciante, instale o Nano (com o comando apk add nano), para que você possa editar arquivos de configuração e salvá-los usando CTRL+X, confirmando e saindo.

Mas eu usei o Vim:

vim /etc/passwd

Minha primeira linha era assim:

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

Para tornar o fish o shell padrão, vamos mudar essa linha para:

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

Em seguida, salvamos o arquivo e saímos.

Tenho certeza de que há uma boa maneira de mudar o caminho do shell para que ele possa ser utilizado imediatamente. Mas não sei, por isso recomendo voltar ao navegador de aplicativos, forçar a saída do shell e, para garantir, desligar e reiniciar o iPad ou iPhone. Abra novamente o iSH e agora, além da mensagem "Welcome to Alpine!" e informações sobre a inicialização com o apk, você verá a mensagem padrão de boas-vindas do login do fish: Bem-vindo ao fish, o shell interativo amigável. Uhul!

Executando a linha de comando Linux no iOS

Configuração do Python e pip

Decidi adicionar Python (a versão 3.x), não só para programar, mas também porque utilizo vários programas em Python. Vamos instalá-lo:

apk add python3

Embora o Python 2.x esteja obsoleto, também é possível instalá-lo:

apk add python

Vamos instalar o gerenciador de pacotes do Python chamado pip e setuptools:

python3 -m ensurepip --default-pip

A instalação e configuração do gerenciador de pacotes pode levar algum tempo, então apenas aguarde.

Em seguida, você poderá baixar a ferramenta para transferência de arquivos pela rede curl:

apk add curl

Lendo manuais

O fish usa um autocompletar integrado baseado em páginas man. Assim como outros usuários da linha de comando, utilizo o manual man, mas no Alpine ele não vem instalado. Portanto, eu o instalei com o paginador de terminal less:

apk add man man-pages less less-doc

Além do man, utilizo o excelente projeto tldr pages, que fornece páginas man simplificadas e mantidas pela comunidade.

Instalei-o com pip:

pip install tldr

Time tldr conecta-se à web para obter páginas quando encontra um pedido por uma nova página. Se você precisa entender como usar um comando, pode digitar algo como tldr curl e obter uma descrição em inglês simples e bons exemplos de uso do comando.

Claro, todo esse trabalho de instalação pode ser automatizado com dotfiles ou um script de instalação, mas na verdade isso não está muito alinhado com a filosofia do Alpine — configurar uma instalação mínima claramente de acordo com suas necessidades. Além disso, levou tanto tempo assim, não é?

Informações adicionais

Na Wiki do iSH há uma página "what works" com relatórios sobre quais pacotes estão funcionando atualmente. A propósito, parece que npm não está funcionando agora.

Em outra página da wiki, explica-se como acessar os arquivos do iSH do aplicativo iOS Files. Este é um dos métodos pelos quais você pode mover e copiar arquivos.

Você também pode instalar o Git (sim! apk add git ) e enviar seu trabalho para um repositório remoto ou transferi-lo para um servidor via SSH. E, claro, é possível baixar e executar uma infinidade de projetos open-source incríveis do GitHub.

Saiba mais sobre o iSH nesses links:

Em nome da publicidade

VDS oferece servidores virtuais em Linux ou Windows. Usamos exclusivamente equipamentos de marca, o melhor painel de controle de servidores desenvolvido internamente e alguns dos melhores data centers na Rússia e na UE. Não perca a oportunidade de fazer seu pedido!

Executando a linha de comando Linux no iOS

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster