しばたテックブログ

気分で書いている技術ブログです。

PowerShell Core 6.0の初期セットアップスクリプトを作りました

blog.shibata.tech

前にPSCoreUpdateというPowerShell Coreのアップデートを自動化するモジュールを作ったとお知らせしました。
このエントリ中で、

なお、このモジュールはあくまで更新のためのツールなので最初にPowerShell Core 6.0をインストールするのは手動で行う必要があります。

と記載し、この点に関しては今も変わってはいないのですが、初回インストールが手動なのはやっぱり面倒だったのでセットアップスクリプトを別に作ってみました。

初回インストールスクリプト

スクリプトはPSCoreUpdate内のこのページで公開しています。

github.com

PowerShell Coreのインストール手順はGitHubDocsで公開されており、基本的はこの手順を各OS・ディストリビューション毎にまとめただけのスクリプトになります。

基本方針として、Windows PowerShellやBashのコンソールにコピペして実行すれば良しなに最新のPowerShell Coreをインストールしてくれるものにしています。
方式としてはChocolateyRVMのインストール手順を参考にしています。*1

スクリプトの中身についてはGitHubで確認してください。
以下に現在のインストール手順を載せておきます。

Windows

前提条件として、Windows PowerShell 4.0以上がインストールされている必要があります。
(これはPowerShell Core 6.0をMSIからインストールするための前提条件です)

コマンドプロンプトから実行する場合

REM Command prompt
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12;iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/stknohg/PSCoreUpdate/master/FirstTimeInstaller/Install-LatestPowerShell.ps1'))"

PowerShellコンソールから実行する場合

# Windows PowerShell
Set-ExecutionPolicy Bypass -Scope Process -Force; [Net.ServicePointManager]::SecurityProtocol=[Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/stknohg/PSCoreUpdate/master/FirstTimeInstaller/Install-LatestPowerShell.ps1'))

macOS

macOS Sierra (10.12)以上が対象です。

# Bash
\curl -s https://raw.githubusercontent.com/stknohg/PSCoreUpdate/master/FirstTimeInstaller/install_latestpowershell_mac.sh | bash -s

Ubuntu

Ubuntu 17.04、16.04、14.04で実行可能です。

# Bash
\curl -s https://raw.githubusercontent.com/stknohg/PSCoreUpdate/master/FirstTimeInstaller/install_latestpowershell_ubuntu.sh | bash -s

RHEL、CentOS、Fedora

以下のディストリビューションで実行可能です。

  • RHEL 7
  • CentOS 7
  • Fedora 26、25
# Bash
\curl -s https://raw.githubusercontent.com/stknohg/PSCoreUpdate/master/FirstTimeInstaller/install_latestpowershell_rhel.sh | bash -s

Debian

Debian 9、8.7+で実行可能です。

# Bash
\wget -q --no-check-certificate https://raw.githubusercontent.com/stknohg/PSCoreUpdate/master/FirstTimeInstaller/install_latestpowershell_debian.sh -O - | bash -s

[Experimental] openSUSE、SLES

以下のディストリビューションで実行可能です。

  • openSUSE 42.1
  • SLES 12
# Bash
\curl -s https://raw.githubusercontent.com/stknohg/PSCoreUpdate/master/FirstTimeInstaller/install_latestpowershell_suse.sh | bash -s

こちらは現在の最新バージョン(6.1.0-preview.1)ではzypperの設定まではうまくいくものの、PowerShellのインストール時に依存関係のエラーが出てしまいインストールが必ず失敗します。
詳細はこのへんを見てください。

このスクリプトを実行した後に手動で

sudo zypper install powershell

を実行し、依存関係のエラーを無視してインストールを続行すればインストールすることができます。
この依存関係のエラーについてはそのうち新しいバージョンで解消されると思います。

*1:手順は参考にしてますが、個人的な信条としてChocolateyが嫌いなのでローカルマシンにChocolateyをインストールしたくないのです...