вторник, 24 марта 2020 г.

Установка Node.JS 12.16.1 LTS падает с ошибкой установки зависимостей

What ever weird is happening  - 
Keep calm and keep updating


При инсталляции Node.JS 12.16.1 LTS можно поставить галочку в мастере установки, которая должна установить необходимые зависимости, скачав их из Интернет. 
Однако, открывшееся окно PowerShell после начало установки вываливается с ошибкой:

Exception calling "DownloadString" with "1" argument(s): "The request was aborted: Could not create SSL/TLS secure
channel."
At line:1 char:51
+ ... ess -Force; iex ((New-Object System.Net.WebClient).DownloadString('ht ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WebException



Данная ситуация была обнаружена мной на нескольких агентах CI/CD, использующих PowerShell:

Current $PSVersionTable:
Name Value
---- -----
PSVersion 5.1.17134.407
PSEdition Desktop
PSCompatibleVersions
{1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.407
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1


Причина возникновения данной ошибки в том, что, по умолчанию, до определённой версии Windows Server/PowerShell поддерживалась толко TLS 1.0 - 1.1 или сервер имеет какие-либо ограничения, позволяющие использовать только TLS 1.1+.

Сначала я применил решение, описанное на сайте Choco.
В файле C:\Program Files\nodejs\install_tools.bat я добавил часть, выделенную жирным:

"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command Start-Process '%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe' -ArgumentList '-NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString(''https://chocolatey.org/install.ps1''))"; choco upgrade -y python2 visualstudio2017-workload-vctools; Read-Host ''Type ENTER to exit'' ' -Verb RunAs

Но поразмыслив, я решил обновить один из агентов до более свежей версии Windows 10/PowerShell и о чудо: проблема решилась сама собой.

Для PowerShell версии, указанной ниже, проблемы не существует:

Name Value
---- -----
PSVersion 5.1.17763.1007
PSEdition Desktop
PSCompatibleVersions
{1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.1007
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1


Комментариев нет:

Отправить комментарий

Уважаемый коллега, Ваш комментарий пройдёт модерацию, чтобы избежать спам-атак в ленте. Спасибо за понимание.