Description
The install.sh script states that it operates in two passes:
- As
root to provision the system.
- As a non-root bench user to install Pilot, which should "need no privileges at all".
However, during the second pass (as a non-root user), the script hits ensure_tzdata_legacy() which calls pkg_install tzdata-legacy. On Ubuntu systems, pkg_install invokes run_sudo apt-get install. If the user running this pass does not have passwordless sudo access, the script blocks or fails completely, breaking the intended separation of privileges.
Steps to Reproduce
- Run the script as
root to configure the host. curl -fsSL https://raw.githubusercontent.com/frappe/pilot/develop/install.sh | bash
- Switch to the non-root bench user (who may have restricted or no sudo access).
- Re-run
curl -fsSL https://raw.githubusercontent.com/frappe/pilot/develop/install.sh | bash
- Notice the script prompts for a sudo password or throws an error when trying to install
tzdata-legacy.
frappe@pilot:~$ curl -fsSL https://raw.githubusercontent.com/frappe/pilot/develop/install.sh | bash
Setting up your environment...
Fetching the latest pilot release...
Installing uv...
downloading uv 0.12.18 x86_64-unknown-linux-gnu
installing to /home/frappe/.local/bin
uv
uvx
everything's installed!
To add $HOME/.local/bin to your PATH, either restart your shell or run:
source $HOME/.local/bin/env (sh, bash, zsh)
source $HOME/.local/bin/env.fish (fish)
Installing deprecated timezone names...
[sudo] password for frappe:
Description
The
install.shscript states that it operates in two passes:rootto provision the system.However, during the second pass (as a non-root user), the script hits
ensure_tzdata_legacy()which callspkg_install tzdata-legacy. On Ubuntu systems,pkg_installinvokesrun_sudo apt-get install. If the user running this pass does not have passwordlesssudoaccess, the script blocks or fails completely, breaking the intended separation of privileges.Steps to Reproduce
rootto configure the host.curl -fsSL https://raw.githubusercontent.com/frappe/pilot/develop/install.sh | bashcurl -fsSL https://raw.githubusercontent.com/frappe/pilot/develop/install.sh | bashtzdata-legacy.