- 
                Notifications
    
You must be signed in to change notification settings  - Fork 669
 
Description
Description:
Python binary is compiled with rpath that's /opt/hostedtoolcache/Python. Now, latest github runners  define RUNNER_TOOL_CACHE/AGENT_TOOLSDIRECTORY   differently than  /opt/hostedtoolcache and that installs python at /home/runner/_work/_tool/Python/.  So, with this, there are 2 issues.
sudo python --versiondoesn't work ( See Error section) because most systems's doesn't allow passing LD_LIBRARY_PATH due to security issues.python --versiondoesn't work without setting environment variable LD_LIBRARY_PATH
output of ldd :
runner@arss-runner-xxxx-runner-5jvhz:~/_work/_tool/Python/3.12.3/x64/bin$ ldd python3
	linux-vdso.so.1 (0x00007ffceb776000)
	libpython3.12.so.1.0 => not found
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7ccc75c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f7ccc991000)
Error:
python: error while loading shared libraries: libpython3.9.so.1.0: 
cannot open shared object file: No such file or directory
What could be the reason:
rpath is hardcoded to /opt/hostedtoolcache/Python.   if we use $ORIGIN, binaries will be portable.  Fix is raised here actions/python-versions#275
Action version:
v5.1.0
Platform:
- Ubuntu
 - macOS
 - Windows
 
Runner type:
- Hosted
 - Self-hosted
 
Tools version:
All versions of Python 3.9.x, 3.10.x, etc.
Repro steps:
You can easily reproduce using following steps. And also, you can unset LD_LIBRARY_PATH and just use without sudo
    steps:
      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      - run: |
          sudo python --version
Expected behavior:
There are times we need to use sudo python and Most system ( also not acceptable to pass) doesn't pass LD_LIBRARY_PATH as environment variable due to security issues.
Actual behavior:
sudo python --version to work.