Chocolatey
Chocolatey は Windows パッケージマネージャーで、ソフトウェアのインストール、更新、設定を自動化します。PowerShell またはコマンドプロンプトから直接パッケージを管理できます。
インストール
Chocolatey をブートストラップする
# Run PowerShell as Administrator, then:
Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = `
[System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# Verify installation
choco --version
Windows Package Manager を使用する(代替)
winget install Chocolatey.Chocolatey
基本コマンド
| コマンド | 説明 |
|---|---|
choco --version | Chocolatey のバージョンを表示 |
choco --help | 一般的なヘルプを表示 |
choco help <command> | 特定のコマンドのヘルプを取得 |
choco list | インストール済みパッケージをリスト表示 |
choco search <package> | パッケージを検索 |
choco install <package> | パッケージをインストール |
choco upgrade <package> | パッケージをアップグレード |
choco uninstall <package> | パッケージをアンインストール |
インストールコマンド
# Install single package
choco install notepadplusplus
# Install multiple packages
choco install git nodejs python
# Install with version
choco install git --version=2.35.1
# Install without confirmation
choco install git -y
# Install to specific directory
choco install git --install-arguments="'INSTALLDIR=C:\Git'"
# Install with parameters
choco install nodejs --params="'/InstallDirectory:C:\nodejs'"
# Install from local package
choco install ./localpackage.nupkg
# Install from custom source
choco install package -s https://custom-feed.com
検索と発見
# Search for packages
choco search docker
# Search with detailed info
choco search nodejs --verbose
# List all packages in remote repository
choco list --page=0 --page-size=50
# Search local packages only
choco list --local-only
# Search with approved-only flag
choco search vim --approve-only
パッケージ管理
# List installed packages
choco list
# List installed with version
choco list --local-only
# List outdated packages
choco outdated
# Get info about specific package
choco info python
# Show package dependencies
choco depends git
# Pin package (prevent upgrades)
choco pin add -n git
# Unpin package
choco pin remove -n git
アップグレード操作
# Upgrade single package
choco upgrade git
# Upgrade multiple packages
choco upgrade nodejs python ruby
# Upgrade all packages
choco upgrade all
# Upgrade without confirmation
choco upgrade all -y
# Upgrade to specific version
choco upgrade git --version=2.35.1
# Upgrade with parameters
choco upgrade nodejs --params="'/SILENT'"
# Upgrade excluding specific packages
choco upgrade all --except="git,nodejs"
アンインストールとクリーンアップ
# Uninstall single package
choco uninstall notepadplusplus
# Uninstall multiple packages
choco uninstall git nodejs -y
# Uninstall with dependencies
choco uninstall packagename --remove-dependencies
# Uninstall forcing even if errors
choco uninstall git -f -y
# Remove package cache
choco cache list
# Clear all cache
rm $env:ChocolateyInstall\cache\*.nupkg
設定
# Show configuration
choco config list
# Set configuration value
choco config set cacheLocation D:\ChocolateyCache
# Set proxy
choco config set proxyLocation http://proxy.company.com:8080
# Set proxy user
choco config set proxyUser username
# Set default confirmation
choco config set confirmAll true
# Allow global confirmation
choco feature enable -n useRememberedArgumentsForUpgrades
ソース管理
# List sources
choco source list
# Add source
choco source add -n=custom -s=https://my-nuget-feed.com
# Remove source
choco source remove -n=custom
# Disable source
choco source disable -n=custom
# Enable source
choco source enable -n=custom
# Set priority (order matters for resolution)
choco source list --verbose
高度な機能
フィーチャー管理
# List features
choco feature list
# Enable feature
choco feature enable -n=caskNuget
# Disable feature
choco feature disable -n=caskNuget
# Common features
choco feature list # Shows: exitOnRebootDetected, autoUninstaller, etc.
パッケージのエクスポートとインポート
# Export installed packages
choco export packages.config
# Get package list as command
choco list | Select-Object -Property Name > packages.txt
# Convert list to install command
Get-Content packages.txt | ForEach-Object { "choco install $_ -y" }
# Create packages.config and import
# Manually create packages.config, then:
choco install packages.config -y
バッチ処理
# Install all packages from file
$packages = @("git", "nodejs", "python", "vscode", "7zip")
foreach ($package in $packages) {
choco install $package -y
}
# Upgrade all with filter
choco upgrade all -y --except="dotnet-core,java"
# Uninstall with filter
Get-Item "$env:ProgramFiles\*" |
Where-Object { $_.Name -match "OldApp" } |
ForEach-Object { choco uninstall $_.Name -y }
一般的なパッケージ例
# Developer Tools
choco install git nodejs python vscode visualstudio2022community
# Utilities
choco install 7zip winrar notepadplusplus vlc
# Browsers
choco install googlechrome firefox edge
# Communication
choco install discord slack
# Media
choco install ffmpeg imagemagick
# Virtual Machines
choco install virtualbox docker-desktop
# System Tools
choco install sysinternals ccleaner everything
# Languages
choco install golang rust ruby php
スクリプト例
開発環境をインストールする PowerShell スクリプト
# dev-setup.ps1
param(
[switch]$SkipConfirm
)
$packages = @(
"git",
"nodejs",
"python",
"vscode",
"docker-desktop",
"postman",
"dbeaver",
"mingw"
)
Write-Host "Installing development packages..."
if ($SkipConfirm) {
foreach ($package in $packages) {
choco install $package -y
}
} else {
foreach ($package in $packages) {
choco install $package
}
}
Write-Host "Development environment setup complete!"
スケジュール更新スクリプト
# update-packages.ps1 (Run via Task Scheduler)
$logFile = "C:\Logs\choco-update.log"
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Add-Content -Path $logFile -Value "$timestamp - Starting package update"
try {
choco upgrade all -y --limit-output
Add-Content -Path $logFile -Value "$timestamp - Update successful"
} catch {
Add-Content -Path $logFile -Value "$timestamp - Update failed: $_"
}
トラブルシューティング
破損したキャッシュをクリアする
# Stop all choco processes
Stop-Process -Name "chocolatey*" -Force
# Clear cache directory
Remove-Item "$env:ChocolateyInstall\cache\*" -Force
# Reinstall problematic package
choco install packagename -f -y
インストールの問題を修正する
# Reset Chocolatey environment
$env:ChocolateyInstall = 'C:\ProgramData\chocolatey'
$env:Path = "$env:ChocolateyInstall\bin;$env:Path"
# Fix permissions
icacls "C:\ProgramData\chocolatey" /grant:r "$env:username`:F" /t
# Verify installation
choco --version
プロキシの問題
# Set proxy
choco config set proxyLocation http://proxy:8080
choco config set proxyUser username
choco config set proxyPassword password
# Test connection
choco search chocolatey -s http://chocolatey.org
ベストプラクティス
メンテナンススケジュール
# Weekly: Check for outdated packages
choco outdated
# Monthly: Full system update
choco upgrade all -y
# Quarterly: Clean package cache
rm $env:ChocolateyInstall\cache\*.nupkg
セキュリティ推奨事項
- Chocolatey を最新に保つ:
choco upgrade chocolatey -y - 信頼できるリポジトリからパッケージソースを確認する
-f(force) フラグを慎重に使用する- すべてのパッケージを定期的に更新する:
choco upgrade all - マルウェアスキャンに Windows Defender を使用する
パフォーマンス最適化
# Disable Windows Update during package operations
# Reduce explorer lock issues
# Use PowerShell's parallel execution for multiple packages:
@("git", "nodejs", "python") |
ForEach-Object -Parallel {
choco install $_ -y
} -ThrottleLimit 3
CI/CD との統合
GitHub Actions の例
name: Setup Windows Environment
jobs:
setup:
runs-on: windows-latest
steps:
- name: Install Chocolatey packages
run: |
choco install git nodejs python -y
choco upgrade all -y
Azure DevOps パイプライン
jobs:
- job: SetupEnvironment
pool:
vmImage: 'windows-latest'
steps:
- script: choco install git python nodejs -y
displayName: Install packages
リソース
Last updated: 2025-03-30