Windows のパッケージマネージャーの設定 - 産技高専における Windows 環境の構築(3)

WindowsSetting Windows PackageManagement 2019年 4月 24日

Windows におけるパッケージマネージャーの設定

macOS であればシステムの設定はほとんど Homebrew があれば事が足りる。 Ubuntu Linux であれば apt で様々なパッケージが管理できる。 これらに共通するのは、パッケージがかなり密に連携しており、パッケージの依存関係を人間が管理できないためである。

Windows の場合には、あまりライブラリという形で密な連携を取るのではなく、必要であればアプリに内包するケースが多いように感じる。 基本的にアプリは単体でインストール・アンインストールをするという事になり、あまり依存関係を考える必要は少ない。

Windows でもこれまでいくつかのパッケージ管理システムが用意されていた。例えば chocolatey はかなり利用者も多いパッケージ管理システムである。 今回、Windows 10 にデフォルトパッケージ管理システムが用意された。 このパッケージ管理システムは、従来の様々なパッケージ管理システムを無視するのではなく、それらを統合して使えるような delegate としてのツールになっていた。 素晴らしい動きなので早速自分で試してみようと思う。

途中までうまくいったのだが、いくつかのパッケージで、Chocolatey の方でインストールに失敗しても、PackageManager の方が理解できずに成功したと表示されることがあった。やはり Chocolatey を直接使った方がよさそうだ。 学生は以下の記事は実行しないこと。

ただし、失敗したことも記録なので、この記事はそのまま残しておく。

パッケージ管理システムの設定

せっかくなので、今回は chocolatey をサブシステムとしてパッケージインストールをやってみる(というかこれしか知らない)。ただし、Chocolatey はインストールに失敗する事が多いようで、CholateyGet という別のプロバイダが用意されているようだ。以下に設定手順を示す。

  1. まず、PowerShell を管理者モードで起動する。例のごとくウインドウボタンで右クリックをすると簡単である。 PowerShell(管理者)
  2. 「Find-PackageProvider」とタイプする。すると、nuget がインストールされていないと言われるので、「Y」を押すと、利用可能なパッケージプロバイダが表示される。
    PS C:\Windows\system32> Find-PackageProvider
    プロバイダー 'nuget v2.8.5.208' がインストールされていません。
    nuget は、https://onegetcdn.azureedge.net/providers/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll
    から手動でダウンロードしてインストールすることができます。
    PackageManagement で nuget を自動的にダウンロードしてインストールしますか?
    [Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
    
    Name                           Version          Source           Summary
    ----                           -------          ------           -------
    nuget                          2.8.5.208        https://onege... NuGet provider for the OneGet meta-package manager
    psl                            1.0.0.210        https://onege... psl provider for the OneGet meta-package manager
    chocolatey                     2.8.5.130        https://onege... ChocolateyPrototype provider for the OneGet meta-pa...
    PowerShellGet                  2.1.2            PSGallery        PowerShell module with commands for discovering, in...
    ChocolateyGet                  1.0.0.1          PSGallery        An PowerShell OneGet provider that discovers packag...
    DockerProvider                 0.0.0.3          PSGallery        PowerShell module with commands for discovering, in...
    ContainerImage                 0.6.4.0          PSGallery        This is a PackageManagement provider module which h...
    DockerMsftProvider             1.0.0.7          PSGallery        PowerShell module with commands for discovering, in...
    NanoServerPackage              1.0.1.0          PSGallery        A PackageManagement provider to  Discover, Save and...
    GitLabProvider                 1.3.8            PSGallery        GitLab PackageManagement provider
    DockerMsftProviderInsider      1.0.0.2          PSGallery        PowerShell module with commands for discovering, in...
    GistProvider                   0.6              PSGallery        Gist-as-a-Package - PackageManagement  PowerShell P...
    GitHubProvider                 0.5              PSGallery        GitHub-as-a-Package - PackageManagement PowerShell ...
    OfficeProvider                 1.0.0.1          PSGallery        OfficeProvider allows users to install Microsoft Of...
    0install                       2.16.4           PSGallery        OneGet Package Provider for Zero Install
    TSDProvider                    0.2              PSGallery        PowerShell PackageManager provider to search & inst...
    AppxGet                        0.1.0.1          PSGallery        Powershell Package Management (OneGet) Provider for...
    MyAlbum                        0.1.2            PSGallery        MyAlbum provider discovers the photos in your remot...
    WSAProvider                    1.0.0.4          PSGallery        Provider to Discover, Install and inventory windows...
    ChocoOneGet                    0.4.0            PSGallery        OneGet provider for Chocolatey
    Pacman-Provider                0.0.1            PSGallery        Pacman provider enables installation of pacman pack...
  3. ChocolateyGet をインストールしたいので、「Install-PackageProvider ChocolateyGet」とタイプする。
    PS C:\Windows\system32> Install-PackageProvider ChocolateyGet
    
    パッケージは、信頼済みとマークされていないパッケージ ソースから取得されています。
    'PSGallery' からソフトウェアをアンインストールしますか?
    [Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y
    
    Name                           Version          Source           Summary
    ----                           -------          ------           -------
    ChocolateyGet                  1.0.0.1          PSGallery        An PowerShell OneGet provider that discovers packages from https://www.chocolatey.org.
  4. 次に実行ポリシーを変更しておく。
    PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned
    
    実行ポリシーの変更
    実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
    のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
    で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
    [Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y
  5. これで設定は終わりです。

色々なソフトのインストール

早速今日の授業で使った gnuplot を探してみる。

  1. まずパッケージを検索してみる。「Find-Package gnuplot」を実行する。 すると Choco.exe のインストールが必要だと言われるので、「Y」を押して続ける。
    PS C:\Windows\system32> Find-Package gnuplot
    
    Choco.exe is required to continue
    ChocolateyGet is built on Choco.exe. Do you want ChocolateyGet to install Choco.exe from 'https://chocolatey.org/install.ps1' now?
    [Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
    警告: パス 'C:\Chocolatey\lib' が存在しないため検出できません。
    
    Name                           Version          Source           Summary
    ----                           -------          ------           -------
    gnuplot                        5.0.5            https://www.c...
  2. gnuplot はあるが、Version が 5.0.5 という古いものしかないようだ。とりあえずこれをインストールしてみる。
    PS C:\Windows\system32> Install-Package -Name gnuplot
    
    パッケージは、信頼済みとマークされていないパッケージ ソースから取得されています。
    'https://www.chocolatey.org' からソフトウェアをアンインストールしますか?
    [Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y
    
    Are you sure you want to perform this action?
    Installing package 'gnuplot'. By Installing you accept licenses for the package(s). The package possibly needs to run 'chocolateyInstall.ps1'.
    [Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
    
    Name                           Version          Source           Summary
    ----                           -------          ------           -------
    gnuplot                        v5.0.5           https://www.c...
  3. あとは同様なのでコマンドだけ記載しておく(他にも気がついたら後で追記しておく。なお、複数プロバイダがある場合には ChocolateyGet を選んでおく)。
    ソフト名 コマンド
    Adobe Reader (PDF の閲覧) Install-Package -Name adobereader
    Google Chrome (ブラウザ) Install-Package -Name GoogleChrome
    Ghostscript (EPS, PDF の加工) Install-Package -Name Ghostscript
  4. とここまでやって色々とインストールしてみたが、上の警告で書いたようにうまくインストールできないものが散見した。諦めて明日の記事で Chocolatey を使った記事を書き直す。