Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

DOTNET_CLI_HOME not respected, unset HOME can break CI

オープン
#637 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
csharp
領域
cli

調査の方向性

Start with the path construction in src/LibraryManager/Cache/CacheService.cs:46 and src/LibraryManager/Configuration/Settings.cs:97, then reproduce the Jenkins or unset-HOME scenario described in the issue. Done means DOTNET_CLI_HOME is honored on non-Windows platforms and missing HOME no longer leads to an attempted /.librarymanager path or an unhandled permission error.

索引モデルが issue の本文から書いたものです。

説明

Describe the bug

Similar to NuGet#6989
On non-Windows platforms, DOTNET_CLI_HOME does not override HOME. And if HOME is unset, it effectively defaults to / potentially causing permissions issues in CI/CD systems etc.

To Reproduce

Steps to reproduce the behavior:

  1. Run the following Jenkinsfile in Jenkins:

pipeline {
	agent {
		docker {
			image 'mcr.microsoft.com/dotnet/sdk:5.0'
		}
	}
	environment {
		DOTNET_CLI_HOME = "/tmp/DOTNET_CLI_HOME"
		//HOME = "/tmp/DOTNET_CLI_HOME" // This line will "fix" it, but above should be enough.
	}
	stages {
		stage('Setup') {
			steps {
				sh 'dotnet tool install -g Microsoft.Web.LibraryManager.Cli'
			}
		}
		stage('Build') {
			steps {
				sh 'libman --version'
				sh 'libman restore'
			}
		}
	}
}
Expected behavior

If DOTNET_CLI_HOME is set, libman restore runs without error even if HOME is unset.
If neither is set, warn, rather than assuming '/.librarymanager'

Actual behavior
+ libman restore
Unhandled exception. System.TypeInitializationException: The type initializer for 'Microsoft.Web.LibraryManager.Configuration.Settings' threw an exception.
 ---> System.UnauthorizedAccessException: Access to the path '/.librarymanager' is denied.
 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
   at System.IO.FileSystem.CreateDirectory(String fullPath)
   at System.IO.Directory.CreateDirectory(String path)
   at Microsoft.Web.LibraryManager.Configuration.Settings.SaveSettingsFile(String filePath, JToken token) in C:\A\1\3\s\src\LibraryManager\Configuration\Settings.cs:line 170
   at Microsoft.Web.LibraryManager.Configuration.Settings.InitSettingsFile(String configFilePath) in C:\A\1\3\s\src\LibraryManager\Configuration\Settings.cs:line 82
   at Microsoft.Web.LibraryManager.Configuration.Settings..ctor() in C:\A\1\3\s\src\LibraryManager\Configuration\Settings.cs:line 73
   at Microsoft.Web.LibraryManager.Configuration.Settings..cctor() in C:\A\1\3\s\src\LibraryManager\Configuration\Settings.cs:line 35
   --- End of inner exception stack trace ---
   at Microsoft.Web.LibraryManager.Configuration.Settings.get_DefaultSettings() in C:\A\1\3\s\src\LibraryManager\Configuration\Settings.cs:line 35
   at Microsoft.Web.LibraryManager.Tools.Contracts.HostInteraction.get_Settings() in C:\A\1\3\s\src\libman\Contracts\HostInteraction.cs:line 41
   at Microsoft.Web.LibraryManager.Tools.Commands.ConfigCommand..ctor(IHostEnvironment hostEnvironment, Boolean throwOnUnexpectedArg) in C:\A\1\3\s\src\libman\Commands\ConfigCommand.cs:line 25
   at Microsoft.Web.LibraryManager.Tools.Commands.LibmanApp.Configure(CommandLineApplication parent) in C:\A\1\3\s\src\libman\Commands\LibmanApp.cs:line 34
   at Microsoft.Web.LibraryManager.Tools.Program.Main(String[] args) in C:\A\1\3\s\src\libman\Program.cs:line 32
Aborted (core dumped)
Additional context

libman --version 2.1.113+g422d40002e.RR

These spots could be changed to validate before calling Path.Combine:
src/LibraryManager/Cache/CacheService.cs:46: CacheFolderValue = Path.Combine(localAppData, ".librarymanager", "cache");
src/LibraryManager/Configuration/Settings.cs:97: return Path.Combine(Environment.ExpandEnvironmentVariables(envVar), ".librarymanager");

https://github.com/NuGet/Home/issues/6989
https://newbedev.com/dotnet-build-permission-denied-in-docker-container-running-jenkins
https://blog.jongallant.com/2018/09/solution-users-home-directory-could-not-be-determined/
https://stackoverflow.com/questions/53556623/dotnet-build-permission-denied-in-docker-container-running-jenkins

主要言語
C#
スター
486
フォーク
92
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

aspnet/LibraryManager のほかの issue

aspnet/LibraryManager の issue をすべて見る

似ている issue

C# の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。