このブログでは、Chocolatey クライアントに複数のリポジトリを追加し、優先順位付けする方法を示します。
どの Chocolatey クライアントでも、パッケージは基本的にリモートリポジトリからインストールされます。ローカルマシンにあるパッケージをインストールすることも可能ですが、一元的に集中管理した方が設計上もはるかに合理的です。 リモートリポジトリは、ファイル共有、Chocolatey コミュニティのリポジトリ、または内部 Web サーバー (企業にとってはこれが理想的) で実現できます。
Chocolatey クライアントには複数のリポジトリを設定できます。必要があれば、インストール中に各リポジトリからパッケージを検索できます。
リポジトリの追加
Chocolatey クライアントは、コミュニティのリポジトリを使うようにデフォルト設定された状態でインストールされます。企業使用の場合は、ソフトウェア配布とセキュリティの問題があるので、この設定を無効にするか削除するのが最善です。その選択をしたら、クライアントに追加するための内部リポジトリが必要になります。
リポジトリを追加するには、choco source コマンドを、add パラメータをつけて使用します。ソース(リポジトリのURL)、名前、優先順位、ユーザー、パスワード(IISで設定)を指定します。
C:\> choco source add -n=choco-1 -s'https://choco-1.domain.com/chocolatey' --priority=11 --user='domain\chocoadmin' --password='MyPassword'
これで、Chocolatey はデフォルトでこのリポジトリからパッケージを検索します。リスト、インストール、アップグレードの操作中にリポジトリを指定する必要はありません(必要ならば可能ですが)。
リポジトリの優先順位付け
Chocolatey では、リポジトリの優先順位が高いものから先にインストール中に検索され、優先順位の低いリポジトリは後で検索されます。リポジトリとその優先順位を表示するにも、choco source コマンドを使用します。
C:\> choco source Chocolatey v0.10.11 Business
Test-1 - https://Test-1/chocolatey (Authenticated)| Priority 10|Bypass Proxy - False|Self-Service - False|Admin Only - False.
chocolatey.licensed - https://licensedpackages.chocolatey.org/api/v2/ (Authenticated)| Priority 10|Bypass Proxy - False|Self-Service - False|Admin Only - False.
choco-2 - https://choco-2/chocolatey | Priority 0|Bypass Proxy - False|Self-Service - False|Admin Only - False.
choco-1 - https://choco-1 /chocolatey (Authenticated)| Priority 11|Bypass Proxy - False|Self-Service - False|Admin Only - False.
上記でわかるように、リポジトリ “choco-1” の優先度は11、”test-1” の優先度は10です。これは、Chocolatey がパッケージを検索する操作において、”choco-1” リポジトリが最初に検索されることを意味します。
保護されたリポジトリの一時追加
パッケージのアップグレード時など、特定の期間だけリポジトリを追加したい場合があります。たとえば、マシン上の全パッケージをアップグレードする PowerShell スクリプトがあっても、あるパッケージが保護されたリポジトリからインストールされていたら、そのままではそのパッケージはアップグレードできません。そのような場合、choco upgrade all の実行中にそのリポジトリを追加してスクリプトの最後で削除するようにできます。
choco source add --name=choco-1 --ssource'https://choco-1/chocolatey' --priority=11 --user='domain\chocouser' --password='MyPassword'
choco upgrade all -y
choco source remove --name=choco-1
これの意味するところは、このリポジトリ (choco-1) は、choco upgrade all –y が実行されている間だけアクセス可能ということです。これ以降は、どのユーザーも ”choco-1” からソフトウェアをインストールすることはできません。
リポジトリを削除する代わりに choco source disable でリポジトリを無効にすることもできますが、この方法だと、管理者権限を持つエンドユーザーならそのリポジトリを有効にしてソフトウェアのインストールに使用できてしまうので、注意が必要です。
Dan Franciscus
Dan Franciscus is a systems engineer and VMware Certified Professional (VCP) specializing in VMware, PowerShell, and other Microsoft-based technologies. You can reach Dan at his blog (http://www.winsysblog.com/) or Twitter at @dan_franciscus.