actions / setup-python

Set up your GitHub Actions workflow with a specific version of Python
MIT License
1.74k stars 550 forks source link

macOS package installation fails for non-privileged user #925

Open AttilaT opened 3 months ago

AttilaT commented 3 months ago

Description: Can not install python with a non-privileged user, even if the user is part of admin group and has sudo permission to use /usr/sbin/installer

The error is:

Installed versions
  Version 3.11 was not found in the local cache
  Version 3.11 is available for downloading
  Download from "https://github.com/actions/python-versions/releases/download/3.11.9-9947079978/python-3.11.9-darwin-arm64.tar.gz"
  Extract downloaded archive
  /usr/bin/tar xz -v -C /Users/runner/action-runner-MZNpiIYqzp/actions-runner/_work/_temp/85d1ca15-2e48-4d05-a16e-22d4e9f241dc -f /Users/runner/action-runner-MZNpiIYqzp/actions-runner/_work/_temp/02f8[39](https://private-github.com/test-repo/actions/runs/35567/job/3456709#step:3:40)a4-27b4-4adc-8b70-ba50514egba9
  x ./
  x ./setup.sh
  x ./python-3.11.9-macos11.pkg
  x ./build_output.txt
  Execute installation script
  Check if Python hostedtoolcache folder exist...
  Creating Python hostedtoolcache folder...
  Install Python binaries from prebuilt package
  installer: Package name is Python
  installer: Installing at base path /
  installer: The install was successful.
  Create hostedtoolcach symlinks (Required for the backward compatibility)
  Create Python 3.11.9 folder
  Create additional symlinks (Required for the UsePythonVersion Azure Pipelines task and the setup-python GitHub Action)
  Error: ln: python311: Permission denied
  Error: The process '/bin/bash' failed with exit code 1

The error occurs due to the fact that /Library/Frameworks/Python.framework/ is owned by root:admin and the setup.sh is creating simbolic links to bin folder in /Library/Frameworks/Python.framework/<versions>/bin which it doesn't have permissions.

Action version: Same error on v5, v4, v3

Platform:

Runner type:

Tools version: Tested on python v3.11

Repro steps:
Simply run the installation as a non-privileged user

Expected behavior: Ideally, the installation is performed directly into the cash folder instead of system wide.

Actual behavior: Installation fails

priyagupta108 commented 3 months ago

Hi @AttilaT 👋, Thank you for your report. We'll investigate the issue and get back to you.

mahalakshmi-rekadi commented 3 weeks ago

Hello @AttilaT we tried to replicate the issue but couldn't do with given inputs. Could you please attach link to the build or public repository to reproduce the issue ?

AttilaT commented 3 weeks ago

Me neither, it must have been fixed upstream.

They only issue I see currently is this:

Run actions/setup-python@v4
Installed versions
  Version 3.11 was not found in the local cache
  Version 3.11 is available for downloading
  Download from "https://github.com/actions/python-versions/releases/download/3.11.9-9947079978/python-3.11.9-darwin-arm64.tar.gz"
  Extract downloaded archive
  /usr/bin/tar xz -C /Users/runner/action-runner-SWFqZtGKOq/actions-runner/_work/_temp/ba40ce33-ca[21](https://......../actions/runs/405707/job/1152809#step:3:22)-4ffd-9ba3-55685329b839 -f /Users/runner/action-runner-SWFqZtGKOq/actions-runner/_work/_temp/df05e121-b43f-42c3-a7[22](https://......../actions/runs/405707/job/1152809#step:3:23)-b5ccac0d6862
  Execute installation script
  Check if Python hostedtoolcache folder exist...
  Install Python binaries from prebuilt package
  Error: sudo: installer: command not found
  Error: The process '/bin/bash' failed with exit code 1

And that's because PATH is set like this by the runner: PATH=/bin:/usr/bin

Once I've set the path to it's current shell default of echo "/usr/sbin/" >> $GITHUB_PATH everything else worked as expected!

AttilaT commented 3 weeks ago

I've opened this fix for that https://github.com/actions/python-versions/pull/318