如何在 Windows 2012 R2 Core 上的代理后面安装 Chocolatey 软件包?
How do I install Chocolatey packages behind a proxy on Windows 2012 R2 Core?
我目前正在将 Chocolatey 与 Ansible 结合使用,以将多个应用程序部署到混合 Windows/Linux 环境中。
所有 Windows 机器,除了一台机器 运行 作为服务器核心安装,对于除安装了 GUI 的机器之外的所有机器,Chocolatey 不会安装任何应用程序,因为它无法安装使用代理。
我已经使用 netsh 设置了代理环境变量:
PS C:\Windows\system32> netsh winhttp show proxy
Current WinHTTP proxy settings:
Proxy Server(s) : http://aaa.bbb.ccc.ddd:3128
Bypass List : <local>;localhost;127.0.0.1;172.16.*;192.168.*;*.domain.local;
也在%APPDATA%\NuGet\NuGet.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="HTTP_PROXY" value="http://aaa.bbb.ccc.ddd:3128" />
</config>
</configuration>
然而,当 Powershell scripts 脚本调用 $webclient = new-object System.Net.WebClient 这个对象的代理元素时 returns nothing:
PS C:\Windows\system32> $webclient = new-object System.Net.WebClient
PS C:\Windows\system32> $webclient.Proxy
Credentials
-----------
我发现,如果我手动强制 functions/Get-Headers.ps1 和 functions/Get-webFiles.ps1 中的代码使用代理,那么安装会成功,但是这不是解决该问题的好方法,因为我的 Ansible 任务现在已固定为我知道该解决方法有效的特定版本的巧克力。
有没有人有其他 ideas/solutions 可以试试?
Choco 系列 0.9.9+ 完全重写,尚未实现所有内容,包括您在 IE 中设置的代理支持。
观看问题 https://github.com/chocolatey/choco/issues/243 以了解它何时再次可用。
更新:Chocolatey 现在支持代理 - 请参阅 https://github.com/chocolatey/choco/wiki/Proxy-Settings-for-Chocolatey
运行这第一个
choco config set proxy http://proxy_host:proxy_port
我在 2018 年 11 月试过这个:
所以,安装和 运行 chocolatey 需要三个步骤:
您需要去手动下载安装文件:
https://chocolatey.org/install.ps1
您需要:
一种。编辑 ps1 文件或
b.你的环境变量。
您需要有以下变量:
$env:chocolateyProxyLocation = "http://USER:PASSWORD@http://USER:PASSWORD@IP_ADDRESS:PORT
$env:chocolateyProxyUser = "USER"
$env:chocolateyProxyPassword = "PASSWORD"
THEY MUST BE AS THEY ARE ABOVE with USER:PASSWORD@PROXY_LOCATION:PORT format.
- 您必须调用 install.ps1 文件。
您可以从 Windows-PowerShell ISE 或从 CommandLine
调用它
你必须调用你的本地脚本!!!不是在线的,例如:
file:///E:/softwares/chocolate_install_script/install.ps1
调用以下内容:
C:\WINDOWS\system32>@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('file:///E:/softwares/chocolate_install_script/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
- 如果你 运行 使用管理员权限
,一切都会正常
之后,您需要做:
choco config set proxy http://USER:PASSWORD@IP_ADDRESS:PORT
choco config set proxyUser bob
choco config set proxyPassword 123Sup#rSecur3
下面这个完全解决了这个问题...
请按照下面的 link 来解决此问题。
https://duanenewman.net/blog/post/installing-chocolatey-behind-a-corporate-proxy/
但是,为了将来,这是下面的代码。
@powershell -NoProfile -ExecutionPolicy Unrestricted -Command "[Net.WebRequest]::DefaultWebProxy.Credentials = [Net.CredentialCache]::DefaultCredentials; iex ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
只需将以上代码复制并粘贴到您 运行 作为管理员的 CMD 中。
就这样。
感谢 Duane Newman 代码的原创性
我目前正在将 Chocolatey 与 Ansible 结合使用,以将多个应用程序部署到混合 Windows/Linux 环境中。
所有 Windows 机器,除了一台机器 运行 作为服务器核心安装,对于除安装了 GUI 的机器之外的所有机器,Chocolatey 不会安装任何应用程序,因为它无法安装使用代理。
我已经使用 netsh 设置了代理环境变量:
PS C:\Windows\system32> netsh winhttp show proxy
Current WinHTTP proxy settings:
Proxy Server(s) : http://aaa.bbb.ccc.ddd:3128
Bypass List : <local>;localhost;127.0.0.1;172.16.*;192.168.*;*.domain.local;
也在%APPDATA%\NuGet\NuGet.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="HTTP_PROXY" value="http://aaa.bbb.ccc.ddd:3128" />
</config>
</configuration>
然而,当 Powershell scripts 脚本调用 $webclient = new-object System.Net.WebClient 这个对象的代理元素时 returns nothing:
PS C:\Windows\system32> $webclient = new-object System.Net.WebClient
PS C:\Windows\system32> $webclient.Proxy
Credentials
-----------
我发现,如果我手动强制 functions/Get-Headers.ps1 和 functions/Get-webFiles.ps1 中的代码使用代理,那么安装会成功,但是这不是解决该问题的好方法,因为我的 Ansible 任务现在已固定为我知道该解决方法有效的特定版本的巧克力。
有没有人有其他 ideas/solutions 可以试试?
Choco 系列 0.9.9+ 完全重写,尚未实现所有内容,包括您在 IE 中设置的代理支持。
观看问题 https://github.com/chocolatey/choco/issues/243 以了解它何时再次可用。
更新:Chocolatey 现在支持代理 - 请参阅 https://github.com/chocolatey/choco/wiki/Proxy-Settings-for-Chocolatey
运行这第一个
choco config set proxy http://proxy_host:proxy_port
我在 2018 年 11 月试过这个:
所以,安装和 运行 chocolatey 需要三个步骤:
您需要去手动下载安装文件:
https://chocolatey.org/install.ps1
您需要: 一种。编辑 ps1 文件或
b.你的环境变量。
您需要有以下变量:
$env:chocolateyProxyLocation = "http://USER:PASSWORD@http://USER:PASSWORD@IP_ADDRESS:PORT
$env:chocolateyProxyUser = "USER"
$env:chocolateyProxyPassword = "PASSWORD"
THEY MUST BE AS THEY ARE ABOVE with USER:PASSWORD@PROXY_LOCATION:PORT format.
- 您必须调用 install.ps1 文件。 您可以从 Windows-PowerShell ISE 或从 CommandLine 调用它
你必须调用你的本地脚本!!!不是在线的,例如:
file:///E:/softwares/chocolate_install_script/install.ps1
调用以下内容:
C:\WINDOWS\system32>@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('file:///E:/softwares/chocolate_install_script/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
- 如果你 运行 使用管理员权限 ,一切都会正常
之后,您需要做:
choco config set proxy http://USER:PASSWORD@IP_ADDRESS:PORT
choco config set proxyUser bob
choco config set proxyPassword 123Sup#rSecur3
下面这个完全解决了这个问题...
请按照下面的 link 来解决此问题。 https://duanenewman.net/blog/post/installing-chocolatey-behind-a-corporate-proxy/
但是,为了将来,这是下面的代码。
@powershell -NoProfile -ExecutionPolicy Unrestricted -Command "[Net.WebRequest]::DefaultWebProxy.Credentials = [Net.CredentialCache]::DefaultCredentials; iex ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
只需将以上代码复制并粘贴到您 运行 作为管理员的 CMD 中。 就这样。 感谢 Duane Newman 代码的原创性