问题描述
我正在尝试按照 repo>settings>Actions>add runner 中描述的步骤在我的 Linux 机器(Ubuntu 20.04.1 LTS)上安装一个 GitHub 运行器。第一步工作正常,但是当我运行配置时:
./config.sh --url <repo URL> --token <token>
我收到以下失败消息:
ldd: ./bin/libSystem.Security.Cryptography.Native.OpenSsl.so: No such file or directory
ldd: ./bin/libSystem.IO.Compression.Native.so: No such file or directory
touch: cannot touch '.env': Permission denied
./env.sh: line 37: .path: Permission denied
./env.sh: line 32: .env: Permission denied
Unhandled exception. System.UnauthorizedAccessException: Access to the path '/actions-runner/_diag' 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 GitHub.Runner.Common.HostTraceListener..ctor(String logFileDirectory,String logFilePrefix,Int32 pageSizeLimit,Int32 retentionDays)
at GitHub.Runner.Common.HostContext..ctor(String hostType,String logFile)
at GitHub.Runner.Listener.Program.Main(String[] args)
./config.sh: line 76: 10405 Aborted (core dumped) ./bin/Runner.Listener configure "$@"
config.sh 不允许用户以 sudo 身份执行它,所以我修改了脚本以允许这样做,但权限问题仍然存在。有什么想法吗?
更新:我还通过在 /actions-runner 目录中运行以下命令安装了依赖项,但没有任何变化,错误消息仍然相同。
sudo ./bin/installdependencies.sh
解决方法
该问题与 .NET 依赖项有关。 GitHub 运行器使用的是 3.x 版本,而最新的 (以及我安装的)是 5。在较新的版本中,这些库被重命名而没有前面的“lib”。有关 here
的更多详细信息.NET 3.x:
libSystem.Security.Cryptography.Native.OpenSsl.so
libSystem.IO.Compression.Native.so
.NET 5.x
System.Security.Cryptography.Native.OpenSsl.so
System.IO.Compression.Native.so
解决方案:
1 - 安装 .NET 3.x Installation guide
2 - 创建一个符号链接以通过旧的访问新的:
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/libSystem.Security.Cryptography.Native.OpenSsl.so /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.10/libSystem.Security.Cryptography.Native.OpenSsl.so
ln -s /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/libSystem.Security.Cryptography.Native.OpenSsl.a /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.10/libSystem.Security.Cryptography.Native.OpenSsl.a
,
扩展@someone 的答案,我创建了一个快速循环,为这些位于 github 操作运行程序的 bin 目录中的重命名库中的每一个创建符号链接。运行 installdependencies.sh 脚本后,它会为每个以“System”开头的文件创建一个符号链接。并将“lib”附加到原始文件名。
sudo ./bin/installdependencies.sh \
&& cd ./bin \
&& for lib in $(find . -name 'System.*'); do \
toFile=$(echo "$lib" | sed -e 's/\.\/System\./.\/libSystem./g'); \
if ! [ -f $toFile ]; then sudo ln -s $lib $toFile; fi; \
done && cd ..
,
上述解决方案对我不起作用,我安装了旧版本 utils.myFunction()
。对于 64 位 linux 操作系统,curl 命令是:
2.276.1