用源碼編譯Chromium或者PDFium時,需要下載谷歌depot_tools,然后運行gclient。
國內用gclient在下載CIPD client時很容易連不上服務器,錯誤如下:
Downloading CIPD client for windows-amd64 from https://chrome-infra-packages.appspot.com/client?platform=windows-amd64&version=git_revision:8e9b0c80860d00dfe951f7ea37d74e210d376c13...
Failed to download the file, check your network connection, 使用“2”個參數調用“DownloadFile”時發生異常:“無法連接到遠程服
務器”
錯誤原因眾所周知。需要設置代理。老的帖子一般是介紹用netsh命令設置winhttp proxy,或者設置http_proxy、https_proxy環境變量,還有直接修改depot_tools\.cipd_impl.ps1中的PowerShell腳本,增加調用WebClient庫時先設置代理的代碼。
我在Win11上設置了winhttp proxy,也設置了http_proxy、https_proxy環境變量,依舊不靈光。研究了一下,發現Win11自帶的PowerShell版本是5.1,而根據微軟的文檔,PowerShell 7對http_proxy、https_proxy環境變量的支持是沒問題的,那就把Windows自帶的PowerShell 5.1升級到7好了。
在微軟官網下載PowerShell 7的msi安裝包,裝好后,設置PATH=C:\Program Files\PowerShell\7;%PATH%。
PowerShell 5.1的主程序是powershell.exe,而PowerShell 7的主程序是pwsh.exe。所以需要修改一下腳本depot_tools\cipd.bat的內容,把其中調用powershell的地方(就一處),改為調用pwsh。
然后設置http_proxy、https_proxy環境變量:
set HTTP_PROXY=http://127.0.0.1:8118
set HTTPS_PROXY=http://127.0.0.1:8118
之后再執行gclient,就沒問題了。
參考:
微軟關於PowerShell的各個版本對HTTP_PROXY、HTTPS_PROXY環境變量的支持的說明:
https://docs.microsoft.com/en-us/powershell/azure/az-powershell-proxy?view=azps-7.3.2
