Не удается установить средство запуска действий GitHub на Linux
Я пытаюсь установить средство запуска GitHub на свой компьютер с Linux (Ubuntu 20.04.1 LTS), выполнив действия, описанные в разделе репо> настройки> Действия> добавить средство запуска. Первые шаги сработали нормально, но когда я запускаю конфигурацию:
./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
7 ответов
Обращаясь к @ чей-то ответ, я создал быстрый цикл для создания символических ссылок для каждой из этих переименованных библиотек, которые находятся в каталоге bin бегунов действий github. После запуска сценария 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 ..
Когда вы выбираете своего бегуна, убедитесь, что вы используете правильное изображение для того места, где он выполняется.
В моем случае помогла следующая команда:
sudo chown -R $(id -u):$(id -g) $PWD
Приведенные выше решения у меня не сработали, вместо этого я установил старую версию
2.276.1
. Для 64-разрядной ОС Linux команда curl выглядит так:
curl -O -L https://github.com/actions/runner/releases/download/v2.276.1/actions-runner-linux-x64-2.276.1.tar.gz
Проблема связана с зависимостью .NET. Средство запуска GitHub использует версию 3.x, а последняя (и то, что я установил) - 5. В более новой версии эти библиотеки переименованы без предшествующей «lib». Подробнее об этом здесь
.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 Руководство по установке
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
Этого не было во время установки, но я получил ту же ошибку при попытке запустить службу как службу.
В моем случаеaction-runner
должен был быть запущен , поэтому он был установлен в корневую папку. Как я узнал после некоторой отладкиsvc.sh
скрипт установит службу, которая будет запускаться с пользователем вSUDO_USER
даже если установка была запущена как .
Итак, если вы хотите, чтобы служба запускалась какroot
вам нужно явно сообщить об этом установщику:
./svc.sh install root
Использование дополнительногоuser
аргумент описан на docs.github.com
Как видно из этого:
Если вы создали action-runner с помощью команды, разрешения будут другими. Я получаю ту же ошибку, что и выше, вaction-runner1
но нет ошибки вaction-runner2
. Не используйтеsudo
при создании папкиaction-runner
.