このページの本文へ

前へ 1 2 次へ

Windows Info 第226回

Windows 10のパッケージマネージャーであるwingetのプレビュー版を試す

2020年05月31日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

Wingetのサブコマンド

 Wingetには、以下の表のようなサブコマンドがある。

 簡単に言えば、実際に可能なのは「パッケージの検索」「情報表示」「インストール」「リポジトリ指定」などである。このうちユーザーが直接利用するのは、「search」「show」「install」の3つ。「source」はリポジトリを指定するものだが、今のところリポジトリは1つしかない。「hash」と「validate」は、パッケージの検証などに使うものだが、通常はこれを使う必要はなさそうだ。

 まずは、パッケージの情報表示だ。たとえば、「winget show vim」とすれば、vimパッケージの情報を表示できる。

winget showサブコマンドを使うとリポジトリのパッケージ情報を表示できる

 パッケージが存在しているなら「winget install vim」などとすれば、パッケージのインストールができる。パッケージマネージャーを使うには、パッケージ名を把握している必要がある。逆に言えば、パッケージ名さえわかっていれば、パッケージマネージャーで簡単に作業ができる。

 ではどうやってパッケージ名を知るのかというと「winget search 検索文字列」を使ってパッケージを検索するわけだ。searchサブコマンドの後ろに何も指定しなければ、リポジトリに登録されているすべてのパッケージが表示される。このリストから探してもいいが、原稿執筆時点では428個のパッケージが登録されていた。

 winget searchでは、たいした検索機能はなく、名前や「あだ名(Moniker)」(吉川晃司とはなんの関係もない)、リポジトリ内のパッケージIDや分類用Tag(ただしすべてのパッケージに付けられているわけではない)などが指定できる程度。基本はアプリケーション名で検索することになる。なお、アプリケーション名は、どこかで調べてくる必要がある。

 まあ、インターネットサーフィン(古いね)とかしていると、「エディターは●●がいい」みたいな記事があるので、そのアプリ名で検索することになると思うが、いまの段階では、かなり著名なパッケージのみリポジトリに登録されているという感じだ。

 wingetはコマンドラインだが、wingetでインストールされるアプリケーションはコンソールアプリケーションに限定されるわけではなく、Win32アプリケーションならなんでもかまわない(もっとも、インストールする前にリポジトリに登録されている必要はあるが……)。たとえば、Visual Studio CodeやGIMP、Acrobat ReaderといったGUIアプリケーションもリポジトリには登録されている。

 具体的には、キーワードをつけて「winget search vim」などのようにしてvimというパッケージを探すことになる。searchでは、結果として複数のパッケージが引っかかることがある。たとえば、「winget search code」とすると、複数のパッケージが表示される。

winget searchコマンドは、パッケージの検索コマンド。検索条件を満たす複数のパッケージが表示され、Matched欄にはNameやId以外で一致した項目が表示される

 このとき、matchedの列がキーワード(この場合はcode)と一致した理由を示す。リポジトリには、同名アプリケーションのバージョン違いなど、一部が異なる同じアプリケーションが登録されていることがある。前述のshowサブコマンドは、1つのパッケージしか対象にできないため、searchサブコマンドで複数の結果が表示されたとき、その中から単一のパッケージを指定するオプションを指定しなければならない。ざっと使ったかんじ、ここがwinget最大の難所だ。

 同じ名前を持つ複数のパッケージから単一のパッケージを指定してshowで情報を表示させることができるなら、installサブコマンドでインストールすることもできるからだ。同名の複数パッケージが存在している場合、単一のパッケージを指定できないと、showやinstallサブコマンドが利用できない。

 たとえば、GIMPは、バージョンが違う2つのパッケージがリポジトリに登録されている。

wingetのリポジトリには、GIMPという名前のパッケージが2つ登録されている。よく見るとバージョン以外にもIdのところが大文字小文字という差がある

 リポジトリでは、このような状態になることは普通である。必ずしも最新版が良いとは限らないし、使い方によっては過去バージョンをあえて利用することもあるからだ。この点で言えば、アプリを勝手に最新版に更新しちゃうMicrosoftストアはあまりよい方策ではない。

 さて、同名のアプリケーションでも、IDやバージョン番号には違いがある。これを利用して2つのGIMPのパッケージを区別する。wingetのshowサブコマンドのヘルプを見ると、バージョン(-v)でも区別ができそうだが、実際にはできない。しかし、--idによる区別は可能だ。

 searchサブコマンドの結果を見ると、GIMPのIdには「gimp.gimp」と「GIMP.GIMP」の大文字小文字の違いがある。こうした場合、「winget show --exact --id GIMP.GIMP」として--exactオプションを付けて指定を行うことで、単一のパッケージを指定できる。

「winget show --exact --id GIMP.GIMP」とすることで、同名のパッケージを区別することができ、showコマンドで結果を表示させられる

 なんとなく「winget show --exact --name GIMP --version 2.10.18」でもうまくいくように思えるのだが、--versionの指定はうまくいかない。たぶんバグではないかと思えるが、まだプレビュー版でもあるし、細かいことは言わないようにしておく。なお、showで見るとわかるが、GIMPの2つのパッケージは、Moniker(桜田淳子とはなんの関係もない)にも大文字小文字の違いがあり、「winget show --exact --moniker GIMP」も有効だ。

Installサブコマンド

 このように単一パッケージを指定できれば、installサブコマンドが実行可能だ。GIMPの最新版をインストールするには、「winget install --exact --id GIMP.GIMP」とする(管理者権限が必要)。

winget installサブコマンドでは、指定したパッケージのインストールが可能。ただし、現在のwingetは上書き警告などはしないので注意が必要

 なお、wingetでは、アプリインストールの上書きや下位バージョンのインストールについては何も警告がなくそのままインストールされる。また、インストール前に確認を行うようなオプションもない。

 installサブコマンドには、「-i,--interactive」というオプションがあり「インタラクティブインストールを要求」することはできるのだが、実際にどうなるかはアプリ次第で、このGIMPの場合には、何も変わらず、問答無用で指定したアプリケーションのインストールが進む。このため、インストールには注意が必要だ。

 前述のようにwinget自体にはインストールされているアプリケーションを確認する機能はないため、間違ったバージョンを上書きインストールしてしまわないように注意されたい。現在開発中のアプリであるため、こうした問題があるのは当たり前だし、過去のバージョンを使うという点からは、下位バージョンでも上書きインストールが可能なこと自体は取りたてて問題にすることでもないことには留意されたい。

 wingetは先行するLinuxのパッケージマネージャーなどと比べるとかなり荒削りだし、まだプレビュー版であるが、完成すれば、コマンドラインでwin32アプリのインストールが可能になり、新規マシンのインストールもかなり楽になる。スクリプトを作ってOneDriveなどに保存しておけば、新しいマシンを立ち上げて、スクリプト一発で自分好みの環境にすることが可能だ。Linuxでは当たり前だったやり方が、Windowsでも可能になる。

 あとはリポジトリの充実という問題があるが、こちらも時間が解決してくれるだろう。また、荒削りな部分も、おそらくはなんとかなると思われる。というのは、Linuxというパッケージマネージャーの先駆的存在があり、そこに成熟したパッケージマネージャーの見本があるからだ。あとは、マイクロソフトが道を間違えないようにするだけ。そのことを祈りつつ、wingetの報告はここまでとしたい。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン