První ze dvou kroků podle #16. Nová jména se zavádějí vedle starých, takže se nic běžícího nerozbije.
Nová jména
Kde
Dnes
Nově
PyInstaller
kostky.spec, dist/kostky
dice-counter.spec, dist/dice-counter
přílohy releasu
kostky-linux-x86_64 …
dice-counter-linux-x86_64 …
služba v LXC
kostky.service
dice-counter.service
cesty v LXC
/opt/kostky, /var/lib/kostky
/opt/dice-counter, /var/lib/dice-counter
uživatel
kostky
dice-counter
hostname LXC
kostky
dice-counter
instalační skript
deploy/pve-kostky.sh
deploy/pve-dice-counter.sh
datový adresář binárky
~/.local/share/kostky/
~/.local/share/dice-counter/
co appka hlásí
Kostky v1.2.1
dice-counter v1.2.2
Co drží staré instalace při životě
Přílohy se věší pod oběma jmény. Instalátory z dřívějška si chodí pro kostky-* a musí je najít.
Instalátor umí stáhnout obojí — nejdřív dice-counter-*, pak kostky-*. Bez toho by nešlo nainstalovat žádné z už vydaných vydání.
deploy/pve-kostky.sh zůstává jako přesměrování na nový soubor. Příkaz update v už založených kontejnerech chodí pro instalátor právě na tuhle adresu; kdyby zmizela, aktualizace by u nich přestala fungovat dřív, než se stihnou přemigrovat.
Kontejnery z dřívějška se přestěhují samy. Při první aktualizaci se stará služba zastaví a smaže, databáze se přesune z /var/lib/kostky, přepíše se vlastník a starý uživatel i domov jdou pryč. Historie her zůstává.
Binárka sáhne po staré databázi, dokud nová neexistuje — kdo hraje na notebooku, o rozehrané hry nepřijde.
Chyba, která se přitom našla
Byla tam už předtím a nesouvisí s přejmenováním: příkaz update si nový instalátor uloží do $HOME_DIR/install.sh a odtud ho pustí. Instalátor pak dělá
install -m 755"$0""$HOME_DIR/install.sh"
tedy kopíruje soubor sám na sebe. install na to řekne are the same file a skončí chybou — se set -e spadl celý update dřív, než stihl cokoli udělat.
Nevšimli jsme si toho, protože aktualizace se zatím pouštěla jen z uzlu Proxmoxu (MODE=update), kde $0 je poslaný soubor v /root, ne ten instalovaný. Ošetřeno testem -ef.
Jak je to ověřené
Testy: 119 prošlo (jeden nový na zálohu staré databáze).
Binárka postavená lokálně z přejmenovaného specu: --version hlásí dice-counter v1.2.2-zkouska, databáze přistane v …/dice-counter/dice.db, export se stahuje jako dice-counter-2026-08-23.db, patička sedí. Se starou databází vedle sebe se použije ta stará a hráči z ní jsou vidět.
Instalátor proběhl v kontejneru s debian:13 (systemd nahrazený atrapou) ve třech scénářích:
Přechod ze staré instalace — a schválně spuštěný z /opt/kostky/install.sh, tedy z adresáře, který si během běhu sám smaže. Ověřeno: stará služba pryč, nová běží, databáze přestěhovaná i s obsahem a se správným vlastníkem, starý uživatel smazaný, /usr/bin/update míří na nové cesty a na nový skript, port odpovídá.
Čistá instalace proti releasu, kde je jen kostky-linux-x86_64 — záložní jméno zabralo, žádné staré cesty ani uživatel nevznikly.
Dvě spuštění za sebou — projde obojí (tady spadla ta chyba výš).
Přesměrování pve-kostky.sh je protažené přesně tím, co dělá update ve stávajících kontejnerech: curl na starou adresu → bash … instalator → bash -n. Výstup je bit po bitu tentýž jako z nového skriptu a na stdout nepřibyl ani řádek navíc — kdyby přibyl, bash -n by neprošel a update by tiše jel na starém instalátoru.
Co se schválně nedělá
Stará jména se neodstraňují. To je druhý krok, až budou instalace přemigrované. V kódu jsou označená komentářem „do vydání 1.2.x".
<title>Kostky</title> zůstává. Je to titulek stránky v české aplikaci, ne identifikátor; anglický slug by tam byl horší. Program se ale hlásí jménem, pod kterým se spouští — dice-counter v1.2.2 v banneru i v patičce.
Kvůli přílohám pod oběma jmény tohle projde naplno až příštím tagem. Do něj se veze i připnutí balíčku z #17.
První ze dvou kroků podle #16. Nová jména se zavádějí **vedle** starých, takže se nic běžícího nerozbije.
## Nová jména
| Kde | Dnes | Nově |
|---|---|---|
| PyInstaller | `kostky.spec`, `dist/kostky` | `dice-counter.spec`, `dist/dice-counter` |
| přílohy releasu | `kostky-linux-x86_64` … | `dice-counter-linux-x86_64` … |
| služba v LXC | `kostky.service` | `dice-counter.service` |
| cesty v LXC | `/opt/kostky`, `/var/lib/kostky` | `/opt/dice-counter`, `/var/lib/dice-counter` |
| uživatel | `kostky` | `dice-counter` |
| hostname LXC | `kostky` | `dice-counter` |
| instalační skript | `deploy/pve-kostky.sh` | `deploy/pve-dice-counter.sh` |
| datový adresář binárky | `~/.local/share/kostky/` | `~/.local/share/dice-counter/` |
| co appka hlásí | `Kostky v1.2.1` | `dice-counter v1.2.2` |
## Co drží staré instalace při životě
- **Přílohy se věší pod oběma jmény.** Instalátory z dřívějška si chodí pro `kostky-*` a musí je najít.
- **Instalátor umí stáhnout obojí** — nejdřív `dice-counter-*`, pak `kostky-*`. Bez toho by nešlo nainstalovat žádné z už vydaných vydání.
- **`deploy/pve-kostky.sh` zůstává** jako přesměrování na nový soubor. Příkaz `update` v už založených kontejnerech chodí pro instalátor právě na tuhle adresu; kdyby zmizela, aktualizace by u nich přestala fungovat dřív, než se stihnou přemigrovat.
- **Kontejnery z dřívějška se přestěhují samy.** Při první aktualizaci se stará služba zastaví a smaže, databáze se přesune z `/var/lib/kostky`, přepíše se vlastník a starý uživatel i domov jdou pryč. Historie her zůstává.
- **Binárka sáhne po staré databázi**, dokud nová neexistuje — kdo hraje na notebooku, o rozehrané hry nepřijde.
## Chyba, která se přitom našla
Byla tam už předtím a nesouvisí s přejmenováním: příkaz `update` si nový instalátor uloží do `$HOME_DIR/install.sh` a **odtud ho pustí**. Instalátor pak dělá
```bash
install -m 755 "$0" "$HOME_DIR/install.sh"
```
tedy kopíruje soubor sám na sebe. `install` na to řekne `are the same file` a skončí chybou — se `set -e` spadl celý `update` dřív, než stihl cokoli udělat.
Nevšimli jsme si toho, protože aktualizace se zatím pouštěla jen z uzlu Proxmoxu (`MODE=update`), kde `$0` je poslaný soubor v `/root`, ne ten instalovaný. Ošetřeno testem `-ef`.
## Jak je to ověřené
Testy: 119 prošlo (jeden nový na zálohu staré databáze).
Binárka postavená lokálně z přejmenovaného specu: `--version` hlásí `dice-counter v1.2.2-zkouska`, databáze přistane v `…/dice-counter/dice.db`, export se stahuje jako `dice-counter-2026-08-23.db`, patička sedí. Se starou databází vedle sebe se použije ta stará a hráči z ní jsou vidět.
Instalátor proběhl v kontejneru s `debian:13` (systemd nahrazený atrapou) ve třech scénářích:
1. **Přechod ze staré instalace** — a schválně spuštěný z `/opt/kostky/install.sh`, tedy z adresáře, který si během běhu sám smaže. Ověřeno: stará služba pryč, nová běží, databáze přestěhovaná i s obsahem a se správným vlastníkem, starý uživatel smazaný, `/usr/bin/update` míří na nové cesty a na nový skript, port odpovídá.
2. **Čistá instalace proti releasu, kde je jen `kostky-linux-x86_64`** — záložní jméno zabralo, žádné staré cesty ani uživatel nevznikly.
3. **Dvě spuštění za sebou** — projde obojí (tady spadla ta chyba výš).
Přesměrování `pve-kostky.sh` je protažené přesně tím, co dělá `update` ve stávajících kontejnerech: `curl` na starou adresu → `bash … instalator` → `bash -n`. Výstup je bit po bitu tentýž jako z nového skriptu a na stdout nepřibyl ani řádek navíc — kdyby přibyl, `bash -n` by neprošel a `update` by tiše jel na starém instalátoru.
## Co se schválně nedělá
- **Stará jména se neodstraňují.** To je druhý krok, až budou instalace přemigrované. V kódu jsou označená komentářem „do vydání 1.2.x".
- **`<title>Kostky</title>` zůstává.** Je to titulek stránky v české aplikaci, ne identifikátor; anglický slug by tam byl horší. Program se ale hlásí jménem, pod kterým se spouští — `dice-counter v1.2.2` v banneru i v patičce.
Kvůli přílohám pod oběma jmény tohle projde naplno až příštím tagem. Do něj se veze i připnutí balíčku z #17.
Refs #16
Projekt se jmenuje dice-counter, ale skoro všude vystupoval jako kostky.
Tohle je první ze dvou kroků podle #16: nová jména se zavádějí vedle
starých, aby běžící instalace nic nerozbilo.
Nově:
binárka a spec dice-counter.spec, dist/dice-counter
přílohy releasu dice-counter-linux-x86_64 a spol.
služba v LXC dice-counter.service
cesty v LXC /opt/dice-counter, /var/lib/dice-counter
uživatel dice-counter
hostname LXC dice-counter
instalátor deploy/pve-dice-counter.sh
datový adresář ~/.local/share/dice-counter a obdoby
co appka hlásí "dice-counter <verze>" v banneru i v patičce
Stará jména zatím fungují dál:
- Přílohy se na release věší pod oběma jmény.
- Instalátor umí stáhnout i kostky-*, takže starší vydání jdou
nainstalovat pořád.
- deploy/pve-kostky.sh zůstává jako přesměrování — příkaz `update`
v už založených kontejnerech chodí pro instalátor právě tam.
- Kontejnery z dřívějška se při aktualizaci přestěhují samy: služba
se přejmenuje a databáze se přesune do /var/lib/dice-counter, takže
o historii her nikdo nepřijde.
- Binárka sáhne po ~/.local/share/kostky/dice.db, dokud nová databáze
neexistuje.
Při zkoušení přechodu vyplavala chyba, která tu byla už předtím: příkaz
`update` si nový instalátor uloží do $HOME_DIR/install.sh a odtud ho
pustí, takže `install -m 755 "$0" "$HOME_DIR/install.sh"` kopírovalo
soubor sám na sebe. install to odmítne, se `set -e` spadl celý update.
Ošetřeno testem `-ef`.
Ověřeno v debianím kontejneru: přechod ze staré instalace (včetně běhu
instalátoru z adresáře, který se během něj maže), čistá instalace, běh
proti releasu, kde je jen stará příloha, a druhé spuštění za sebou.
Refs #16
Krok padl na `test -f /tmp/zkouska/dice-counter/dice.db`. Runner si /tmp
mezi běhy drží, takže tam po dřívějších stavbách zůstalo
/tmp/zkouska/kostky/dice.db — a binárka po něm nově sáhne, dokud nová
databáze neexistuje. Zkouška tedy hledala soubor, který se schválně
nezaložil.
Chová se to správně, jen se to nedá zkoušet na adresáři, do kterého si
sype každý běh. Nově dostane každý svůj vlastní přes mktemp a po sobě ho
uklidí.
Reprodukováno lokálně: se zbytkem po staru krok padne, s vlastním
adresářem projde.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
První ze dvou kroků podle #16. Nová jména se zavádějí vedle starých, takže se nic běžícího nerozbije.
Nová jména
kostky.spec,dist/kostkydice-counter.spec,dist/dice-counterkostky-linux-x86_64…dice-counter-linux-x86_64…kostky.servicedice-counter.service/opt/kostky,/var/lib/kostky/opt/dice-counter,/var/lib/dice-counterkostkydice-counterkostkydice-counterdeploy/pve-kostky.shdeploy/pve-dice-counter.sh~/.local/share/kostky/~/.local/share/dice-counter/Kostky v1.2.1dice-counter v1.2.2Co drží staré instalace při životě
kostky-*a musí je najít.dice-counter-*, pakkostky-*. Bez toho by nešlo nainstalovat žádné z už vydaných vydání.deploy/pve-kostky.shzůstává jako přesměrování na nový soubor. Příkazupdatev už založených kontejnerech chodí pro instalátor právě na tuhle adresu; kdyby zmizela, aktualizace by u nich přestala fungovat dřív, než se stihnou přemigrovat./var/lib/kostky, přepíše se vlastník a starý uživatel i domov jdou pryč. Historie her zůstává.Chyba, která se přitom našla
Byla tam už předtím a nesouvisí s přejmenováním: příkaz
updatesi nový instalátor uloží do$HOME_DIR/install.sha odtud ho pustí. Instalátor pak dělátedy kopíruje soubor sám na sebe.
installna to řekneare the same filea skončí chybou — seset -espadl celýupdatedřív, než stihl cokoli udělat.Nevšimli jsme si toho, protože aktualizace se zatím pouštěla jen z uzlu Proxmoxu (
MODE=update), kde$0je poslaný soubor v/root, ne ten instalovaný. Ošetřeno testem-ef.Jak je to ověřené
Testy: 119 prošlo (jeden nový na zálohu staré databáze).
Binárka postavená lokálně z přejmenovaného specu:
--versionhlásídice-counter v1.2.2-zkouska, databáze přistane v…/dice-counter/dice.db, export se stahuje jakodice-counter-2026-08-23.db, patička sedí. Se starou databází vedle sebe se použije ta stará a hráči z ní jsou vidět.Instalátor proběhl v kontejneru s
debian:13(systemd nahrazený atrapou) ve třech scénářích:/opt/kostky/install.sh, tedy z adresáře, který si během běhu sám smaže. Ověřeno: stará služba pryč, nová běží, databáze přestěhovaná i s obsahem a se správným vlastníkem, starý uživatel smazaný,/usr/bin/updatemíří na nové cesty a na nový skript, port odpovídá.kostky-linux-x86_64— záložní jméno zabralo, žádné staré cesty ani uživatel nevznikly.Přesměrování
pve-kostky.shje protažené přesně tím, co děláupdateve stávajících kontejnerech:curlna starou adresu →bash … instalator→bash -n. Výstup je bit po bitu tentýž jako z nového skriptu a na stdout nepřibyl ani řádek navíc — kdyby přibyl,bash -nby neprošel aupdateby tiše jel na starém instalátoru.Co se schválně nedělá
<title>Kostky</title>zůstává. Je to titulek stránky v české aplikaci, ne identifikátor; anglický slug by tam byl horší. Program se ale hlásí jménem, pod kterým se spouští —dice-counter v1.2.2v banneru i v patičce.Kvůli přílohám pod oběma jmény tohle projde naplno až příštím tagem. Do něj se veze i připnutí balíčku z #17.
Refs #16