Ubuntu Weekly Recipe

第435回 PowerShellをUbuntuにインストール

この記事を読むのに必要な時間:およそ 9.5 分

PowerShellはタスクの自動化や構成管理のためのプラットフォームとしてMicrosoftが開発しているスクリプト言語およびそのコマンドラインインターフェースプログラムです。今回紹介するのは,先日FLOSSとして公開されたこのPowerShellをUbuntuで使うです。

PowerShell 「Core」

Windowsの伝統的なCLIシェルと言えばコマンドプロンプト(cmd.exe)が存在します。PowerShellは,単にシェルとしてこのコマンドプロンプトを置き換えるだけでなく,より広範囲のシステム設定へのアクセスや.NET Frameworkを用いた柔軟な拡張性,パイプを用いたオブジェクトの操作,スクリプトの開発環境などなど,その機能の豊富さによってWindowsの管理には欠かせないツールとなっています。実際,PowerShellなしには生きられない体になったシステム管理者の方も多いことでしょう※1)⁠

※1
PowerShellの素晴らしさに感化されて,オープンソースとして再実装したPashというプロジェクトもあるぐらいです。

先日のUbuntu Weekly Topicsでも紹介しているように,MicrosoftがそのPowerShellをFLOSSとしてGitHub上に公開しました。2016年8月時点ではまだアルファ版という扱いです。しかしながら単に「ソースコードを公開した」だけではなく,ライセンスがMIT Licenseであり,ソースコードの改修も積極的に受け入れるなど,FLOSSとしての条件が整った上での公開です。もちろんLinux上でも動作します。おそらく将来的には,Debianパッケージとして公式リポジトリからインストールできるようになるはずです※2)⁠

※2
すでにITPがあがっています。ただしまずは.NET Coreをパッケージングする必要があります

PowerShellは.NET Frameworkベースのソフトウェアです。それに対して今回GitHub上に公開された「PowerShell Core」は,.NET Frameworkをモジュール化したサブセットである.NET Coreを利用したソフトウェアになっています。つまりPowerShellのフルセットではない,ということは注意しておいてください。たとえばグラフィック関連のオブジェクト操作の機能などがありません。このPowerShell Coreは,コンテナでも使うことを想定したコンパクト版のWindows ServerであるNano Serverにも搭載される予定です。またWindows以外では,当然のことながらWMI(Windows Management Instrumentation)関連の操作も行えません。

Debファイルをインストールするだけ

実際にPowerShellをインストールしてみましょう。といってもGitHub上に公開されているDebファイルをインストールするだけです。DebファイルはUbuntu 14.04 LTS用とUbuntu 16.04 LTS用の両方が存在します。本Recipeでは,16.04で使用することを前提に説明します。

まずリリースページを参考に,最新のDebファイルをダウンロードします。

$ wget "https://github.com/PowerShell/PowerShell/releases/download/\
v6.0.0-alpha.9/powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb"

Debファイルをインストールしたら,すぐにインストールせずにまずは中身を確認することにしましょう※3)⁠dpkg-debコマンドはDebファイルの内容を確認できるツールです。たとえば「--info」オプションを渡すと,⁠apt show」で表示されるようなメタデータが表示されます。特に注意すべきは「Depends」「Recommends」です。これらのフィールドに表示されているパッケージは,このDebファイルにとって必要なパッケージとなります。下記の例だと「libunwind8」「libicu55」に依存しているということです。libunwind8はプログラムのコールチェインを操作するためのライブラリです。デスクトップ版のUbuntuなら最初からインストールされています。libicuはUnicode対応のために使われるライブラリで,こちらはすべてのエディションのUbuntuに最初からインストールされています。

※3
公式リポジトリの外からバイナリをダウンロードしてインストールする行為はいろいろなリスクをはらんでいます。少しでもそのリスクを軽減するためにも,手順を「コピペ」するだけでなく,その妥当性を確認する癖をつけておきましょう。決してDebファイルインストールするだけだと記事の分量的に足りないから確認作業で水増ししているわけではありません。本当ですってば。
$ dpkg-deb --info powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb
 新形式 debian パッケージ,バージョン 2.0。
 サイズ 40928824 バイト: コントロールアーカイブ = 14690 バイト。
     468 バイト,  13 行      control
   51279 バイト, 463 行      md5sums
 Package: powershell
 Version: 6.0.0-alpha.9-1
 License: MIT License
 Vendor: Microsoft Corporation
 Architecture: amd64
 Maintainer: PowerShell Team <PowerShellTeam@hotmail.com>
 Installed-Size: 123969
 Depends: libunwind8, libicu55
 Section: shells
 Priority: extra
 Homepage: https://microsoft.com/powershell
 Description: PowerShell is an automation and configuration management platform.
  It consists of a cross-platform command-line shell and associated scripting language.

「--contents」オプションを使うと,そのパッケージのインストールパスを確認できます。PowerShellの場合は,基本的に「/opt/microsoft/」以下にインストールし,マニュアルやパッケージの変更履歴,実行ファイルへのシンボリックリンクなどを標準的な場所にインストールするようです。ちなみにインストール済みのパッケージであれば「dpkg -L パッケージ名」で同等の情報を取得できます。

$ dpkg-deb --contents powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb
drwx------ 0/0               0 2016-08-16 07:04 ./
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./opt/
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./opt/microsoft/
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./opt/microsoft/powershell/
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./opt/microsoft/powershell/6.0.0-alpha.9/
-rw-r--r-- 0/0           36744 2016-08-12 09:47 ./opt/microsoft/powershell/6.0.0-alpha.9/System.Xml.XPath.XDocument.dll
(中略)
-rw-r--r-- 0/0           74120 2016-06-12 08:14 ./opt/microsoft/powershell/6.0.0-alpha.9/System.Runtime.Extensions.dll
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./usr/
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./usr/bin/
lrwxrwxrwx 0/0               0 2016-08-16 07:04 ./usr/bin/powershell -> /opt/microsoft/powershell/6.0.0-alpha.9/powershell
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./usr/local/
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./usr/local/share/
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./usr/local/share/man/
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./usr/local/share/man/man1/
-rw-r--r-- 0/0            1924 2016-08-16 07:04 ./usr/local/share/man/man1/powershell.1.gz
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./usr/share/
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./usr/share/doc/
drwxr-xr-x 0/0               0 2016-08-16 07:04 ./usr/share/doc/powershell/
-rw-r--r-- 0/0             160 2016-08-16 07:04 ./usr/share/doc/powershell/changelog.gz

Debianパッケージは,パッケージが提供するコンテンツとは別に「コントロールファイル」と呼ばれる,パッケージの操作に必要なスクリプト群を「/var/lib/dpkg/info/」以下にインストールします。そのファイルのリストは「--control」で確認できます。PowerShellの場合は,パッケージのメタデータであるcontrolファイルと,コンテンツのハッシュ値が格納されたmd5sumsファイルのみインストールします。パッケージによっては「postinst」「prerm」といった,インストールや削除前後に実行するスクリプトがインストールされることもあります。

$ dpkg-deb --control powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb control
ls control/
control  md5sums

Debファイルの中身に不審な点がなければ,パッケージをインストールしましょう。Ubuntu 16.04 LTSのaptコマンドは,相対パスでDebファイルを渡せば依存パッケージまでインストールしてくれるので便利です。なお「./」を指定しないとパッケージファイル名ではなくパッケージ名として判断してしまうので注意してください。

$ sudo apt install ./powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb

Ubuntu 14.04 LTSなら,dpkgコマンドでインストールしたのちにapt-getコマンドで依存関係を解決すると良いでしょう。

$ sudo dpkg -i powershell_6.0.0-alpha.9-1ubuntu1.14.04.1_amd64.deb
$ sudo apt-get install -f

うまくインストールできたらPowerShellを起動してみましょう。

$ powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /home/ubuntu> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      6.0.0-alpha
PSEdition                      Core
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   3.0.0.0
GitCommitId                    v6.0.0-alpha.9
CLRVersion
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1


PS /home/ubuntu> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial
PS /home/ubuntu> uname -a
Linux powershell 4.4.0-34-generic #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
PS /home/ubuntu>

とっても簡単でしたね。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入