Reputation: 235
I'm trying to install a GitHub runner on my Linux machine (Ubuntu 20.04.1 LTS) following the steps described at repo>settings>Actions>add runner. The first steps worked fine but when I run the config:
./config.sh --url <repo URL> --token <token>
I get the following failure message:
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 does not allow the user to execute it as sudo, so I've modified the script to be allowed to do so but the problems with the permissions remain. Any ideas?
UPDATE: I also installed dependencies by running the command below in /actions-runner directory and nothing has changed, the error message is still the same.
sudo ./bin/installdependencies.sh
Upvotes: 14
Views: 16579
Reputation: 341
It was not at install time, but I got the same error when tried to start the action-runner
as a service.
In my case the action-runner
had to be run by root
, so it was installed in a root owned folder.
As I have found out after some debugging the svc.sh
script will install the service to be run with the user in the SUDO_USER
even if the install was run as root
.
So if you want the service to be run as root
you need to explicitly tell this to the installer:
./svc.sh install root
Using the optional user
argument described at docs.github.com
Upvotes: 0
Reputation: 71
Following command helped in my case:
sudo chown -R $(id -u):$(id -g) $PWD
Upvotes: 7
Reputation: 1
As seen in the this:
If you created the action-runner with the sudo
command, permissions will be different. I get the same error as above in the action-runner1
but no error in action-runner2
. Don't use sudo
while creating the folder action-runner
.
Upvotes: -1
Reputation: 5992
When you are selecting your runner ensure that you are using the correct image for where it is being executed.
Upvotes: 21
Reputation: 1126
The above solutions did not work for me, I installed an older version instead 2.276.1
. For a linux 64-bit OS the curl command is:
curl -O -L https://github.com/actions/runner/releases/download/v2.276.1/actions-runner-linux-x64-2.276.1.tar.gz
Upvotes: 3
Reputation: 106
Expanding on @someone's answer, I created a quick loop to make symlinks for every one of of these renamed libraries that live in the bin directory of the github action runners. After running the installdependencies.sh script, it creates a symlink for every file that starts with "System." and appends "lib" to the original filename.
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 ..
Upvotes: 2
Reputation: 235
The problem is related to the .NET dependency. The GitHub runner uses the 3.x version while the latest (and what I had installed) is 5. In the newer version, those libraries are renamed without the preceding "lib". More details on that 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 - Install .NET 3.x Installation guide
2 - Crete a symlink to access the newer through the old one:
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
Upvotes: 2