Невозможно найти репозиторий в модуле обновления - PullRequest
0 голосов
/ 18 ноября 2018

Я использую Windows 10 и Powershell 5.1

Get-PSRepository имеет результат:

PSGallery Untrusted https://www.powershellgallery.com/api/v2

, тогда как Update-Модуль возвращает ошибку

PackageManagement \ Install-Package: невозможно найти репозиторий 'https://www.powershellgallery.com/api/v2/'. Используйте Get-PSRepository для просмотра всех доступных репозиториев.В C: \ Program Files \ WindowsPowerShell \ Modules \ powershellget \ 2.0.1 \ PSModule.psm1: 13000 char: 20 + ... $ sid = PackageManagement \ Install-Package @PSBoundParameters + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo: ObjectNotFound: (Microsoft.Power .... InstallPackage: InstallPackage) [Install-Package], Exception + FullyQualifiedErrorId: SourceNotFound, Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

Есть идеи, как это исправить?

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Я знаю, что прошло некоторое время с тех пор, как эта тема была активной, но у меня была похожая проблема. После всех возможных попыток принудительная переустановка поставщика пакетов Nuget, похоже, устранила проблему с Update-Module.

Выполните это в сеансе PowerShell с повышенными правами:

Install-PackageProvider Nuget –Force

Для справки, я был здесь, когда у меня был лучший успех: https://docs.microsoft.com/en-us/powershell/gallery/installing-psget

Приветствия

0 голосов
/ 07 февраля 2019

TL; DR

Похоже, что URL-адрес хранилища PSGallery, зарегистрированного в PowerShell, использовался для указания на https://www.powershellgallery.com/api/v2/, но в какой-то момент он был изменен на https://www.powershellgallery.com/api/v2 (обратите внимание на отсутствующую косую черту в конце).

λ  Get-PSRepository

Name                      InstallationPolicy   SourceLocation
----                      ------------------   --------------
PSGallery                 Untrusted            https://www.powershellgallery.com/api/v2

Все модули, установленные со старого URL, теперь не могут обновляться. Переустановка их из галереи PowerShell обновит URL-адрес хранилища, что позволит обновлять модули в обычном режиме. Вы можете использовать следующую команду для переустановки всех модулей, указывающих на старый URL:

Get-InstalledModule `
| ? { $_.Repository -eq 'https://www.powershellgallery.com/api/v2/' } `
| % { Install-Package -Name $_.Name -Source PSGallery -Force -AcceptLicense }

Полный пробег вниз

Я сам столкнулся с этой невероятно раздражающей проблемой. Из сообщения об ошибке мы можем увидеть несколько вещей:

PackageManagement \ Install-Package: невозможно найти репозиторий 'https://www.powershellgallery.com/api/v2/'

  1. PowerShellGet\Update-Module в конечном итоге перекладывает на PackageManagement\Install-Package
  2. ищет хранилище в 'https://www.powershellgallery.com/api/v2/'

Запуск Get-PSRepository на моей машине дает:

Name                      InstallationPolicy   SourceLocation
----                      ------------------   --------------
PSGallery                 Trusted              https://www.powershellgallery.com/api/v2

Так что похоже, что хранилище есть, кроме, может быть, его нет. Обратите внимание на скользящий слеш. Может быть, Install-Package ищет репозиторий с SourceLocation, который точно соответствует этой строке? Давайте попробуем изменить SourceLocation для PSGallery:

Set-PSRepository -Name PSGallery -SourceLocation https://www.powershellgallery.com/api/v2/ -InstallationPolicy Trusted

PackageManagement \ Set-PackageSource: репозиторий PSGallery имеет заранее определенные места. «Местоположение, новое местоположение или исходное местоположение» параметр не разрешен, попробуйте еще раз после удаления «Расположение, Параметр NewLocation или SourceLocation '. На C: \ Program Файлы \ WindowsPowerShell \ Modules \ PowerShellGet \ 2.0.4 \ PSModule.psm1: 11768 символ: 17 + ... $ null = PackageManagement \ Set-PackageSource @PSBoundParameters + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~ + CategoryInfo: InvalidArgument: (https://www.pow. .. ery.com/api/v2/:String) [Set-PackageSource], исключение + FullyQualifiedErrorId: ParameterIsNotAllowedWithPSGallery, Add-PackageSource, Microsoft.PowerShell.PackageManagement.Cmdlets.SetPackageSource

Ну, это не сработало. Похоже, что репозиторий PSGallery защищен для вашей безопасности .

Давайте попробуем добавить другой репозиторий и обновить модуль:

Register-PSRepository -Name PSGallery1 -SourceLocation https://www.powershellgallery.com/api/v2/ -InstallationPolicy Trusted
Update-Module -Name pester -Force

Смотри, без ошибок. Это работает!

Вот интересная вещь: если я открою список установленных модулей, я найду набор репозиториев:

Get-InstalledModule | Select Name, Repository | FT -AutoSize

Name                         Repository
----                         ----------
7Zip4Powershell              PSGallery 
AWSPowerShell                PSGallery 
cChoco                       PSGallery1
dbatools                     PSGallery 
DLMAutomation                PSGallery1
InvokeBuild                  PSGallery1
Microsoft.PowerShell.Archive PSGallery1
PackageManagement            PSGallery 
Pester                       PSGallery1
posh-git                     PSGallery1
powershell-yaml              PSGallery1
PowerShellGet                PSGallery 
PowerUpSQL                   PSGallery1
psake                        PSGallery1
PsHosts                      PSGallery1
psTrustedHosts               PSGallery1
ReverseDSC                   PSGallery1
SeeShell                     PSGallery1
SqlServer                    PSGallery1
TunableSSLValidator          PSGallery1
xSmbShare                    PSGallery1
xWebAdministration           PSGallery1

Посмотрите на все эти модули, установленные из PSGallery1, которая связана с https://www.powershellgallery.com/api/v2/! До этого момента на моей машине никогда не было репозитория PSGallery1; каждый модуль, который я когда-либо устанавливал, был из PSGallery. Я предполагаю, что репозиторий PSGallery раньше указывал на https://www.powershellgallery.com/api/v2/ и в какой-то момент, намеренно или нет, он был изменен на https://www.powershellgallery.com/avp/v2;, ломая Update-Module для любых модулей, установленных с предыдущего URL. Я подозреваю, что если я переустановлю модули, используя Install-Package из обновленного репозитория PSGallery, все разрешится само собой, и я смогу удалить репозиторий PSGallery1.

Давайте обновим все модули, которые были развернуты со старого URL (PSGallery1):

Get-InstalledModule `
| ? { $_.Repository -eq 'PSGallery1' } `
| % { Install-Package -Name $_.Name -Source PSGallery -Force -AcceptLicense }

Запуск Get-InstalledModule снова дает:

Name                         Repository
----                         ----------
7Zip4Powershell              PSGallery
AWSPowerShell                PSGallery
cChoco                       PSGallery
dbatools                     PSGallery
DLMAutomation                PSGallery
InvokeBuild                  PSGallery
Microsoft.PowerShell.Archive PSGallery
PackageManagement            PSGallery
Pester                       PSGallery
posh-git                     PSGallery
powershell-yaml              PSGallery
PowerShellGet                PSGallery
PowerUpSQL                   PSGallery
psake                        PSGallery
PsHosts                      PSGallery
psTrustedHosts               PSGallery
ReverseDSC                   PSGallery
SeeShell                     PSGallery
SqlServer                    PSGallery
TunableSSLValidator          PSGallery
xSmbShare                    PSGallery
xWebAdministration           PSGallery

Отлично! Теперь давайте попробуем удалить репозиторий PSGallery1 и обновить модуль:

Unregister-PSRepository PSGallery1
Update-Module -Name pester -Force

Успех! Модуль обновлен без ошибок.

Я не уверен, что здесь сломано, URL-адрес для репозитория PSGallery или Install-Package, но переустановка всех модулей, которые были установлены по старому URL-адресу, похоже, исправит все.

0 голосов
/ 19 ноября 2018

У меня та же проблема с Windows Powershell 5.1.17134.407, а также на той же машине, что и PowerShell 6.1. Модуль обновления работает, как и ожидалось, с PowerShell 6.1 с одной и той же версией модуля PowerShellGet в Windows PowerShell и PowerShell. Таким образом, похоже, что эта проблема уникальна для Windows PowerShell, и ее догадка без дальнейшего тестирования является проблемой в коде модуля обновления в самом модуле PowerShellGet при работе в Windows PowerShell.

У меня нет решения для вас, используя Update-Module, но в качестве обходного пути вы можете вместо этого использовать Install-Module с параметром -AllowClobber. Он не завершается с этой ошибкой, как Update-Module. И, по крайней мере, прямо сейчас, конечный результат будет таким же, так как Update-Module фактически просто устанавливает новую версию бок о бок со всеми более старыми версиями, которые установлены для моего тестирования и для https://github.com/PowerShell/PowerShellGet/issues/213.

...

После некоторого дальнейшего тестирования я случайно перезагрузил систему, на которой тестировал. После перезагрузки проблема с модулем обновления в Windows PowerShell 5.1 была решена - модуль обновления теперь работает должным образом. Я не могу с уверенностью сказать, что перезагрузка - это то, что разрешило ее, но теперь это решено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...