PowerShellGetv2
PowerShellGetv2 copied to clipboard
Register-PSRepository and Register-PackageSource are unable to work correctly on Debian 11
Prerequisites
- [X] Write a descriptive title.
- [X] Make sure you are able to repro it on the latest released version
- [X] Search the existing issues.
- [X] Refer to the FAQ.
- [X] Refer to Differences between Windows PowerShell 5.1 and PowerShell.
Steps to reproduce
- Install .NET 6, .NET 7 and Powershell correctly by following official documents on a clean Debian 11.
- Follow the document to connect to feed as a Powershell repository.
Expected behavior
Register Powershell repository correctly.
The commands related to the repository work fine, such as Find-Module.
The result on Debian 11 is same as the one on Windows.
Actual behavior
Registered Powershell repository correctly on Windows only BUT something went wrong on Debian 11.
Throw the following error again and again on the Debian console.
Could not execute because the specified command or file was not found.
Possible reasons for this include:
* You misspelled a built-in dotnet command.
* You intended to execute a .NET program, but dotnet--V does not exist.
* You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
Error details
Exception : lt-in dotnet command.
Type : System.Management.Automation.CommandNotFoundExceptiont.
ErrorRecord : o run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
Exception : ecified command or file was not found.
Type : System.Management.Automation.ParentContainsErrorRecordException
Message : The term 'NuGet.exe' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
HResult : -2146233087tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
TargetObject : NuGet.exe
CategoryInfo : ObjectNotFound: (NuGet.exe:String) [], ParentContainsErrorRecordException
FullyQualifiedErrorId : CommandNotFoundException
CommandName : NuGet.exe
Message : The term 'NuGet.exe' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
HResult : -2146233087
TargetObject : NuGet.exe
CategoryInfo : ObjectNotFound: (NuGet.exe:String) [Get-Command], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand
InvocationInfo :
MyCommand : Get-Command
ScriptLineNumber : 11590
OffsetInLine : 21
HistoryId : 18
ScriptName : /opt/microsoft/powershell/7/Modules/PowerShellGet/PSModule.psm1
Line : $nugetCmd = Microsoft.PowerShell.Core\Get-Command -Name $script:NuGetExeName `
PositionMessage : At /opt/microsoft/powershell/7/Modules/PowerShellGet/PSModule.psm1:11590 char:21
+ … $nugetCmd = Microsoft.PowerShell.Core\Get-Command -Name $script:NuGet …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PSScriptRoot : /opt/microsoft/powershell/7/Modules/PowerShellGet
PSCommandPath : /opt/microsoft/powershell/7/Modules/PowerShellGet/PSModule.psm1
InvocationName : Microsoft.PowerShell.Core\Get-Command
CommandOrigin : Internal
ScriptStackTrace : at Register-PSRepository<Process>, /opt/microsoft/powershell/7/Modules/PowerShellGet/PSModule.psm1: line 11590
at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo :
Environment data
Name Value
---- -----
PSVersion 7.3.2
PSEdition Core
GitCommitId 7.3.2
OS Linux 5.10.0-21-amd64 PowerShell/PowerShell#1 SMP Debian 5.10.162-1 (2023-01-21)
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Visuals
On Windows and expected:
On Debian 11 and actual:
Thanks for opening this issue @MFunction96! This seems more like an issue with PowerShellGet, tagging @alerickson and @anamnavi
Hi @MFunction96, could you run dotnet --version
? If dotnet is not installed you can find instructions on how to install it here. Please make sure the dotnet executable is under the $env:PATH
environment variable as well.
Hi @alerickson. Thanks for your reply! I had installed .NET 6 and .NET 7 properly on Linux refer to the reproduce step.
It is clear reason that some procedures inside Register-PSRepository
and Register-PackageSource
invoked Nuget.exe
directly on Linux by Error Detail. Unfortunately, Nuget.exe
is not an executable binary on Linux so that it should not be invoked directly on Linux. We should use dotnet nuget <command>
on Linux instead of Nuget.exe <command>
as far as I know.
I noticed that #677 might be the same issue on Linux environment. The error message seems to be similar with mine.
@MFunction96 thanks for sharing this info, we'll investigate into this.