Split install for non-admin users

The target laptop account has no sudo. install.sh now runs without root once the
system packages exist; if they're missing and the account can't sudo it prints
the exact command and stops. New install-system.sh holds the one-time
"sudo apt install python3-tk python3-venv git" for an admin account.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-07 22:30:03 +02:00
parent 08232bda9b
commit 5b85596a46
4 changed files with 88 additions and 21 deletions
+30 -6
View File
@@ -3,7 +3,24 @@
Target machine: **Linux Mint laptop**, single non-technical user. Day-to-day use
is a **double-click from the menu**; the terminal is needed once, for install.
## Quick install (Linux Mint)
## Install (Linux Mint)
The target user's account is a **Standard** account (no sudo). Install is
therefore two steps: one system step by an admin, then the rest by the user.
### Step 1 — system packages (admin account, once)
`python3-tk`, `python3-venv` and `git` are system packages. From an account with
admin rights (Patrick's):
```bash
cd /path/to/DRK_Blutspende_Orte
./install-system.sh # sudo apt install python3-tk python3-venv git
```
Skip this if those three are already present.
### Step 2 — the app (user account, no sudo)
```bash
mkdir -p ~/Apps && cd ~/Apps
@@ -12,10 +29,11 @@ cd DRK_Blutspende_Orte
./install.sh
```
`install.sh` does everything:
`install.sh` needs no sudo once step 1 is done. It:
1. `sudo apt install python3-tk python3-venv python3-pip git` (asks for the
password),
1. checks the system packages are there (if not, and the account *does* have
sudo, it installs them; otherwise it prints the exact `install-system.sh`
line an admin must run and stops),
2. creates `.venv` and installs the pinned `requirements.txt`,
3. writes `~/.local/share/applications/drk-blutspende-orte.desktop` with the
correct absolute paths and the bundled `icon.png`.
@@ -24,13 +42,19 @@ After it finishes, **"DRK Blutspende Arbeitsorte"** is in the application me
(log out/in once if it doesn't show immediately). First manual test: `./run.sh`.
> Clone it — don't download a zip. The in-app updater and `run.sh` both rely on
> it being a real git checkout.
> it being a real git checkout. The clone lives in the **user's** home so she can
> update it without sudo.
If you do both steps yourself in one go: run `./install-system.sh` as admin,
then `su - <heraccount> -c '~/Apps/DRK_Blutspende_Orte/install.sh'` (or just log
in as her and run step 2).
## What the pieces are
| File | Purpose |
|------|---------|
| `install.sh` | one-time setup (above). Safe to re-run. |
| `install-system.sh` | admin, once: `apt install python3-tk python3-venv git`. |
| `install.sh` | user, no sudo: venv + deps + menu entry. Safe to re-run. |
| `run.sh` | launches the app from `.venv`; the `.desktop` entry calls this. |
| `icon.png` | bundled launcher/window icon (red cross). Replace with the real DRK logo if wanted. |
| `requirements.txt` | fully pinned, tested on Python 3.12. |