PowerShell on Linuxの話です。
先日リリースされた PowerShell 6.0.0.Alpha17 からAppImageの実行バイナリが提供されました。
AppImageについて
公式サイトは以下。
かつてklik
やPortableLinuxApps
と呼ばれていたプロジェクトで、ディストリビューションを問わずに実行可能な単一のバイナリファイル(*.AppImage
)でアプリケーションを提供するための仕組みだそうです。
このツールで作られた*.AppImage
なバイナリファイルはダウンロードしてファイルに実行権限を付けるだけでアプリケーションが利用可能になります。
正直まだよくわかっていないのですが、仕組みを調べてみた結果、AppImageではアプリケーションの実行バイナリと依存モジュール一式を一つの*.AppImage
なファイルにまとめ、この*.AppImage
なファイルの実行時にFUSEを使って仮想ファイルシステムに依存パッケージごと展開して(サンドボックス的な環境を作ってるっぽい?)実行バイナリを起動している様です。
このためディストリビューションを選ばないと言うものの、実行環境にFUSEがインストールされている必要があります。
インストール方法
公式な手順はこちら。
今回は例としてCentOS 7.3での方法を紹介します。
他のディストリビューションでも基本的な流れは変わらないはずです。
1. FUSEのインストール
先ほど述べた通りAppImageのバイナリを実行するためにはFUSEがインストールされている必要があります。
今回の検証環境にFUSEはインストールされていなかったのでYum(EPELリポジトリ)からインストールします。
FUSEが利用可能な環境ではこの手順は不要です。
# bash # FUSEのインストール sudo yum install -y epel-release sudo yum install -y --enablerepo=epel fuse-sshfs
2. AppImageのインストールと実行
FUSEをインストールした後はAppImageのバイナリ(PowerShell-x86_64.AppImage)をダウンロードして実行権限をつけるだけでOKです。
# bash # バイナリのダウンロードと実行権限の付与 curl -OL https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.17/PowerShell-x86_64.AppImage chmod a+x ./PowerShell-x86_64.AppImage # 実行 ./PowerShell-x86_64.AppImage
実行した結果は以下の様になり、PowerShellの起動前に/tmp/
に対して仮想ファイルシステムの展開がなされているのがわかります。
あとは普通にPowerShellを利用することができます。
注意点
あまり影響はないと思いますが1点だけ気を付けておいた方がよさそうな点があります。
AppImageの仕組み上、実際の実行ファイル(powershell
)は/tmp/.mount_[ランダム文字列]/usr/bin
に展開されます。
このためPowerShellを実行するたびに$PSHOME
のディレクトリが変わります。
試してはいませんが都度$PSHOME
が変わってしまう以上PSRemotingのサーバー側になることはできないでしょう。
PowerShellのクライアント側の機能しか使えないと思われます。
また、/tmp/.mount_[ランダム文字列]
配下はReadOnlyになります。
このため$PSHOME
にファイルを置くことができずAllUsers*
なプロファイルを作ることができません。
最後に
若干制限はありますが、環境によっては一番気軽にPowerShellを実行できる方法かもしれません。
個人的にはテスト用の一時的な環境を作るのに向ていると感じています。