Choco — лучший пакетный менеджер для Windows. Чтобы использовать его в корпоративной среде за прокси, необходимо выполнить его донастройку.
Вариантов прокидывания прокси в choco много:
- через переменные окружения
- через системную настройку прокси
- через конфигурацию менеджера
- через командную строку
Самый простой способ — использовать системный прокси, который прописан в конфигурации Internet Options браузера IE. Такой вариант не всем подходит, потому что чаще всего в корпоративном окружении используется pac файл для автоматической настройки прокси.
Я предпочитаю использовать переменные окружения. К счастью, choco распознает, если в окружении имеются стандартные переменные (в нижнем регистре!):
Если же вам не хочется, чтобы эти переменные влияли на все другие консольные приложения, то можно выполнить конфигурацию самого choco:
choco config set --name="'proxy'" --value="'http://localhost:8888'"
choco config set --name="'proxyUser'" --value="'username'" # опционально
choco config set --name="'proxyPassword'" --value="'123Sup#rSecur3'" # опционально, хранится в зашифрованном виде
choco config set --name="'proxyBypassList'" --value="'http://localhost,http://this.location/'" # опционально
choco config set --name="'proxyBypassOnLocal'" --value="'true'" # опционально
Ну и наконц, можно разово указывать прокси в команднйо строке при запуске choco. Используйте ключи:
--proxy="'value'" --proxy-user="'<user>'" --proxy-password="'<pwd>'" --proxy-bypass-list="'<comma separated, list>'" --proxy-bypass-on-local
Установка choco за прокси
Установка choco, находясь за корпоративным прокси, ничем особо не отличается от установки других приложений через Powershell c использованием proxy.
Необходимо использовать системную .NET библиотеку и вызов для работы с аутентификацией.
- Скачайте файл установки локально https://community.chocolatey.org/install.ps1
- Запустите PS от имени администратора
- Объявите переменные
- Запустите скрипт в той же PS сессии
Во-первых, задайте использование библиотеки для аутентификации на прокси. Если прокси не требует аутентификации или на нем работает доменная аутентификация, то в ps пропишите
[Net.WebRequest]::DefaultWebProxy.Credentials = [Net.CredentialCache]::DefaultCredentials
Если дополнительно требуются аутентификация на прокси (случай, когда вы получаете ошибку Get Response returned: (407) Proxy Authentication Required), то добавьте переменные с логином и паролем $env:chocolateyProxyUser
и $env:chocolateyProxyPassword
. Обратите внимание, что если вы в AD домене, то логин должен включать название домена: AD\UserName
.
И наконец, задайте адрес прокси через переменную $env:chocolateyProxyLocation
.
Все эти 3 переменные в скрипте установки используются в стандартных командах конфигурации прокси:
... ($env:chocolateyProxyUser -and $env:chocolateyProxyPassword) { $securePass = ConvertTo-SecureString $env:chocolateyProxyPassword -AsPlainText -Force $config['ProxyCredential'] = [System.Management.Automation.PSCredential]::new($env:chocolateyProxyUser, $securePass) } ... $ProxyUrl = $env:chocolateyProxyLocation New-Object System.Net.WebProxy -ArgumentList $ProxyUrl, <# bypassOnLocal: #> $true |
Итоговый скрипт установки должен получиться примерно такой:
[Net.WebRequest]::DefaultWebProxy.Credentials = [Net.CredentialCache]::DefaultCredentials
$env:chocolateyProxyLocation = 'https://local.proxy.address:8001'
# Un-comment the following lines if your proxy server requires explicit authentication and
# substitute your username and password.
#$env:chocolateyProxyUser = 'username'
#$env:chocolateyProxyPassword = 'password'
# Run the downloaded install script
& "C:\Path\to\script\install.ps1"