iOSデバイスでLinuxコマンドラインを実行できることをご存知ですか? 「なぜ私の小さなiPhoneでテキストベースのアプリケーションを使いたいのか」と疑問に思われるかもしれません。 OK、十分に公平です。それはかなり合理的な質問です。しかし、Opensource.comを読んでいるなら、おそらく答えを知っているでしょう。Linuxユーザーは、どのデバイスでも使用できることを望んでおり、独自のカスタマイズも使用したいと考えています。
そして何よりも、彼らは挑戦を望んでいます。
私は7歳のiPad2Miniを持っていますが、それでも電子書籍やその他のタスクを読むのに問題なく動作します。しかし、それを使用して、アプリケーションのコマンドラインにアクセスしたり、プログラムやスクリプトのスイートにアクセスしたりすることもできます。標準の開発環境だけでなく、慣れ親しんだ環境も必要です。これが私がそれをした方法です。
携帯電話やタブレットのオンスクリーンキーボードでプログラミングするためにコマンドラインを使用することは、それほど楽しいことではありません。 Bluetoothを介して、またはカメラ接続キットアダプターを使用して有線キーボードを接続することにより、外部キーボードを接続することをお勧めします(私の好み)。 KinesisAdvantageのスプリットキーボードをiPhone6に接続すると、古典的なロールプレイングゲームShadowrunの企業のサイバーデッキのような奇妙な光学系が生まれます。
iOSでシェルを取得する
iOSで完全なLinuxシステムを実行するには、次の2つのオプションがあります。
- Linuxコンピューターへのセキュアシェル(SSH)
- オープンソースであるiSHを備えたAlpineLinuxを使用して仮想化システムを実行しますが、Apple独自のTestFlightアプリを使用してインストールする必要があります
または、制限された環境内でオープンソースツールを提供する2つのオープンソースターミナルエミュレーターアプリがあります。これは最も制限されたオプションです。実際にはLinuxを実行できませんが、Linuxツールを実行しています。これらのアプリを使用してデバイスで実行できることには厳しい制限がありますが、コマンドライン機能を利用できます。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
より挑戦的な解決策を探る前に、最も単純なアプローチを見ていきます。
オプション1:サンドボックス化されたシェル
始める最も簡単な方法の1つは、iOSアプリLibTermを使用することです。これはサンドボックス化されたオープンソースのコマンドラインシェルで、80以上のコマンドが$0のアプリにバンドルされています。 Python 2.7、Python 3.7、Lua、C、Clangなどに同梱されています。
同様の方針に沿って、「画面ベースのプラットフォーム用のテキストベースのユーザーインターフェース」と呼ばれるシェルがあります。 a-シェルはオープンソースであり、活発に開発されており、ファイルシステムへのアクセスを許可し、Lua、Python、Tex、Vim、JavaScript、C、C ++、およびClangとClang++に同梱されています。 pipを使用してPythonパッケージをインストールすることもできます。
オプション2:どこでもSSHを使用
アプリのダウンロードからの1つのステップは、SSHクライアントの構成です。長い間、iOS上の多くのSSHクライアントアプリの1つを使用して、LinuxディストリビューションまたはBSDを実行しているサーバーに接続することが可能でした。 SSHを使用する利点は、サーバーが任意のソフトウェアで任意のディストリビューションを実行できることです。リモートで作業し、出力はiOSデバイスのターミナルエミュレータにパイプされます。
Blink Shellは、人気のある有料のオープンソースSSHアプリです。小さな画面の外では、このソフトウェアを使用することは、他のコマンドプロンプトを介してサーバーに接続することに似ています。 Blinkの端末は美しく見え、多数のテーマが含まれており、新しいフォントのカスタマイズや追加など、独自のテーマを作成することができます。
オプション3:Linuxを実行する
SSHを使用してLinuxを実行しているサーバーに接続することは、プロンプトにアクセスするための優れた方法ですが、外部サーバーへのアクセスと接続が必要です。これは参入障壁としては最悪ではありませんが、完全に無視できるわけではないため、このサーバーを必要とせずにLinuxを使用することをお勧めします。
それがあなたの場合なら、あなたは最先端でもう少し何かを打ち破らなければならないでしょう。 TestFlightは、開発中のアプリをAppleのAppStoreに送信する前にデプロイするための独自のサービスです。ストアからTestFlightアプリをダウンロードしてから、いくつかのテストアプリケーションにサインアップできます。 TestFlightのアプリでは、限られた数の外部ベータテスター(通常は最大10,000人)を限られた時間で許可します。テストアプリをダウンロードするには、デバイスから直接リンクにアクセスする必要があります。このリンクは通常、テストアプリ開発者のウェブサイトにあります。
iSHでAlpineLinuxを実行する
iSHは、Alpine Linuxディストリビューションをそのまま使用して仮想マシンを実行するオープンソースのTestFlightアプリです(ただし、もう少し調整することで他のディストリビューションを実行できます)。
重要な注意事項:これは実験的なものです 。 iSHは現在テストアプリであるため、永続的または堅牢なサービスを期待しないでください。 TestFlightアプリには時間制限があります。私の現在のビルドは60日間続きます。これは、60日以内にロックアウトされ、iSHの次のテストフェーズに再度参加する必要があることを意味します。さらに、iOSのFilesでファイルをエクスポートするか、GitホストまたはSSHでファイルをバックアップしない限り、ファイルは失われます。明確にするために:作業を継続するためにこれに依存しないでください!ここに不可欠なものは何も置かないでください!他の場所で作業をバックアップしてください!
AppStoreからTestFlightをインストールすることから始めます。次に、Webサイトからインストールリンクを取得してiSHをインストールします。 AltStoreを使用する別のインストール方法がありますが、試していません。または、有料の開発者アカウントをお持ちの場合は、GitHubからiSHのリポジトリをダウンロードして自分でデプロイできます。
リンクを使用して、TestFlightはデバイスにiSHアプリをインストールします。他のアプリと同様に、アイコンとともに画面に表示されます。
iSHは、AlpineLinuxでx86エミュレーターを実行します。アルパインは、5MB未満の小さなディストロです。アルパインを走るのはこれが初めてで、このような最小限のディストロに不満を感じると思いましたが、実際には本当に楽しかったです。
Alpineはapkパッケージマネージャーを使用しています。これはaptやpacmanよりもシンプルです。
パッケージをインストールするには:
apk add package
パッケージを削除するには:
apk del package
次のコマンドで他のコマンドと情報を検索します:
apk --help
パッケージマネージャーを更新します:
apk update
apk upgrade
AlpineのデフォルトのテキストエディタはViですが、私はVimが好きなので、インストールしました:
apk add vim
必要に応じて、NanoまたはEmacsをインストールできます。
あなたのことはわかりませんが、魚の殻が必要です。他の人々はBashまたはZshを好みます。しかし、アルパインは灰を使用しています! AshはDashシェルのフォークであり、それ自体が元のAshまたはAlmquistシェルのフォークです。それはスピードのために設計されています。組み込みのオートコンプリート、カラー、Vimキーの制御、および魚の殻で私が知っていて大好きな構文の強調表示を優先して、速度を交換することにしました。
魚をインストールする:
apk add fish
代わりにBashとその補完およびマニュアルページが必要な場合は、それらといくつかの追加のものをインストールする必要があります:
apk add bash bash-doc bash-completion
アルパインのミニマリストのイデオロギーは、一般に、他のディストリビューションでは単一のパッケージになる一部のプログラムが、複数の小さなパッケージに分割されることを意味します。これは、システムを希望どおりにカスタマイズしてスリム化できることも意味します。
Bashのインストールの詳細については、このチュートリアルを参照してください。
fishをインストールした後、一時的に切り替えて、fish
と入力して試すことができます。 シェルにドロップします。しかし、魚をデフォルトのシェルにしたいのですが、chsh
他のディストリビューションで使用しているコマンドが機能しません。
まず、魚が設置されている場所を見つけます:
which fish
私の出力:
/usr/bin/fish
次に、ログインシェルを編集してfishを使用します。使い慣れたエディターならどれでも使用できます。初心者の場合は、Nanoをインストールします(apk add nano
を使用) )設定ファイルを編集してCTRL + Xで保存し、確認して終了できるようにします。
しかし、私はVimを使用しました:
vim /etc/passwd
私の最初の行は:
root:x:0:0:root:/root:/bin/ash
魚をデフォルトにするには、その行を次のように変更します。
root:x:0:0:root:/root:/usr/bin/fish
次に、保存して終了します。
シェルをすぐに使い始めることができるように、シェルを再調達する良い方法があると確信しています。ただし、よくわかりません。アプリのブラウザに戻ってシェルを強制終了し、iPadまたはiPhoneをシャットダウンして再起動することをお勧めします。 「WelcometoAlpine!」に加えて、iSHを再開します。メッセージとapkの使用を開始するための情報、デフォルトの魚ログインウェルカムメッセージが表示されます:ようこそ魚、フレンドリーなインタラクティブシェル 。やったー!
Pythonとpipを設定する
Python(バージョン3.x)を追加することにしました。これは、コードを記述できるようにするためだけでなく、いくつかのPythonプログラムに依存しているためです。インストールする:
apk add python3
Python 2.xは非推奨ですが、インストールすることはできます:
apk add python
Pythonパッケージマネージャー、pip、setuptoolsをインストールします:
python3 -m ensurepip --default-pip
パッケージマネージャーのインストールとセットアップには時間がかかるため、お待ちください。
次に、ネットワーク転送ツールであるcurlをダウンロードできます。
apk add curl
Fishは、マニュアルページに基づいた組み込みのオートコンプリートを使用します。他のコマンドラインユーザーと同様に、私はman
に依存しています マニュアルであり、Alpineにはインストールされていません。そこで、少ないページャーと一緒にインストールしました:
apk add man man-pages less less-doc
manに加えて、私はすばらしいtldr pagesプロジェクトを使用しています。このプロジェクトは、簡素化されたコミュニティ主導のmanページを提供します。
pipでインストールしました:
pip install tldr
tldr
コマンドは、新しいページの要求に遭遇するたびにWebに接続してページをフェッチします。コマンドの使用方法を学ぶ必要がある場合は、tldr curl
のように入力するだけです。 わかりやすい英語の説明とコマンドの使用方法の良い例を取得します。
もちろん、ドットファイルまたはインストールスクリプトを使用して、このインストール作業のすべてを自動化することはできますが、それは、最小限のインストールを仕様に正確にカスタマイズするアルパインの方法には実際には当てはまりません。それに、それほど時間はかかりませんでしたね?
iSH wikiには、現在機能しているパッケージに関するレポートが記載された「機能するもの」ページが含まれています。注目すべきことに、現時点ではnpmは機能していないようです。
別のWikiページでは、iOSファイルアプリからiSHファイルにアクセスする方法について説明しています。これは、ファイルを移動および転送する1つの方法です。
Gitをインストールすることもできます(そうです!apk add git
)作業内容をリモートリポジトリにプッシュするか、SSH経由でサーバーに転送します。そしてもちろん、システム上のGitHubから任意の数のすばらしいオープンソースプロジェクトをダウンロードして実行できます。
iSHの詳細については、次のリンクを参照してください。
- iSHウェブサイト
- Subreddit
- GitHubの問題
- Wiki