Choco — лучший пакетный менеджер для Windows. Чтобы использовать его в корпоративной среде за прокси, необходимо выполнить его донастройку.

Вариантов прокидывания прокси в choco много:

  • через переменные окружения
  • через системную настройку прокси
  • через конфигурацию менеджера
  • через командную строку

Самый простой способ — использовать системный прокси, который прописан в конфигурации Internet Options браузера IE. Такой вариант не всем подходит, потому что чаще всего в корпоративном окружении используется pac файл для автоматической настройки прокси.

Я предпочитаю использовать переменные окружения. К счастью, choco распознает, если в окружении имеются стандартные переменные (в нижнем регистре!):

  • http_proxy
  • https_proxy
  • no_proxy

Если же вам не хочется, чтобы эти переменные влияли на все другие консольные приложения, то можно выполнить конфигурацию самого 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 библиотеку и вызов для работы с аутентификацией.

  1. Скачайте файл установки локально https://community.chocolatey.org/install.ps1
  2. Запустите PS от имени администратора
  3. Объявите переменные
  4. Запустите скрипт в той же 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"
[Посещений: 51, из них сегодня: 1]

Добавить комментарий