-
cellar-cli 1.0.0 — client CLI di Cellar in C (statico, retrocompatibile: x86-64, i686, aarch64) Stable
released this
2026-09-20 15:30:02 +00:00 | 2 commits to master since this releaseClient CLI di Cellar (
enne2/cellar) reimplementato in C, pensato per essere
il più retrocompatibile possibile: binari statici, zero dipendenze, utilizzabili
dove Python e le librerie moderne non ci sono o non si possono installare.A cosa serve
cellar-cligestisce gli archivi di bottiglie Bottles (prefissi Wine) ospitati su un
server Cellar: elenca, carica, scarica e installa una bottiglia direttamente nella
cartella locale di Bottles, così da ritrovarla subito nell'app.È utile in particolare:
- su dispositivi retro/handheld o sistemi minimali, dove il client Python originale
(che richiede Python 3 e le sue librerie) non è praticabile; - su distro vecchie (glibc anziana, Python assente o troppo vecchio);
- per script e automazione: exit code stabili (
0ok,1errore HTTP/rete/file,
2argomenti non validi), output tabellare identico all'originale e modalità JSON; - per trasferire bottiglie via HTTP in VPN/LAN senza installare nulla (basta il file).
Binari allegati
file architettura ABI minima (nota ELF) dimensione sha256 indicato per cellar-cli-1.0.0-linux-x86_64-staticx86-64 (amd64) Linux, ABI 3.2.0 1.1 MiB 0c454b2c65ac872e…PC 64 bit, server, container, qualsiasi distro x86-64 (Debian/Ubuntu/Fedora/Arch, anche molto vecchie) cellar-cli-1.0.0-linux-i686-statici686 (x86 32 bit) Linux, ABI 3.2.0 1.2 MiB 16c7db8c6667ff46…sistemi 32 bit legacy: vecchie distro i386, netbook, console/handheld x86, chroot 32 bit cellar-cli-1.0.0-linux-aarch64-staticaarch64 (arm64) Linux, ABI 3.7.0 968 KiB 11ad5ae2b5916c21…handheld ARM (muOS/RG40XXH con glibc 2.38, kernel 4.9), SBC (Allwinner, Rockchip), server ARM I tre binari sono statici: non richiedono nessuna libreria a runtime
(niente glibc esterna, niente Python, niente zlib, niente curl, niente OpenSSL).Retrocompatibilità — come è ottenuta
- Link statico completo:
lddrisponde "non è un eseguibile dinamico"; nessun
simboloGLIBC_*richiesto, quindi nessun vincolo sulla glibc del sistema. - Nessuna syscall moderna: il codice usa solo
open/read/write/stat/lstat/rename/ mkdir/symlink/link/utimensat/chmod/poll. Verificato automaticamente: assenti
statx,openat2,O_TMPFILE,memfd_create,getrandom,close_range. - Large File Support a 64 bit: gli archivi Cellar arrivano a 1,3 GB e vengono
trasmessi in streaming (l'originale li caricava in RAM). - Resolver DNS di riserva: se
getaddrinfonon funziona (tipico della glibc
statica su firmware senza NSS), si legge/etc/hostse, se serve, si interroga il DNS
direttamente via UDP leggendo/etc/resolv.conf. - Nessuna dipendenza da display/GTK/Qt: funziona su console, SSH, script e cron.
- Comunicazione in HTTP semplice: il server Cellar parla HTTP; non essendoci TLS nel
binario (scelta di portabilità: niente OpenSSL), si usahttp://— tipicamente via
LAN o VPN (es.http://10.8.0.3:8080ohttp://brain.vpn:8080). Se serve HTTPS,
basta mettere il server dietro un reverse proxy TLS. - Tar/gzip compatibili: gli archivi creati sono PAX come quelli di
tarfiledi
Python, leggibili da Python e da GNU tar; l'estrazione preserva permessi, mtime e
symlink con lo stesso comportamento del client originale.
Uso rapido
# 1) metti il binario nel PATH chmod +x cellar-cli-1.0.0-linux-x86_64-static mv cellar-cli-1.0.0-linux-x86_64-static ~/.local/bin/cellar-cli # 2) configura il server (il file viene creato con i default se manca) cat > ~/.cellar.conf <<'EOF' [cellar] server = http://brain.vpn:8080 bottles_dir = ~/.var/app/com.usebottles.bottles/data/bottles/bottles EOF # 3) usa cellar-cli list # archivi disponibili sul server cellar-cli install 'Fallen-Haven-Liberation-Day' # scarica, estrae e installa cellar-cli scan-local # bottiglie presenti su questa macchina cellar-cli scan-local --json # output JSON per script cellar-cli upload Backup.tar.gz --name 'Gioco' --tags 'gog,rpg' --arch win32 cellar-cli download 3 ~/Downloads/ cellar-cli wizard-upload # wizard interattivo cellar-cli --server http://10.8.0.3:8080 list # override del serverVerifica dell'integrità
sha256sum -c SHA256SUMS.txtParità con il client Python
Il comportamento è verificato da 30/30 test automatici (
tests/parity_test.sh) che
confrontano il binario C concellar-cli.pyoriginale su due server mock indipendenti:
stdout, stderr ed exit code identici per tutti i comandi e per i casi di errore, più
verifiche sugli artefatti (download byte-identico, albero installato identico, archivio
C equivalente a quello Python, estrazione incrociata, compatibilità GNU tar).Le poche differenze volute (help più sintetico, mtime dei symlink non ripristinato come
fatarfile, gestione dell'EOF nei prompt interattivi, assenza di TLS) sono documentate
nelREADME.md.Compilare da sorgente
make # x86-64 statico make 32 # i686 statico make arm64 # aarch64 statico (cross toolchain ARM GNU 13.2) make test # test di parità (build ASan) make verify # analisi di portabilità del binarioDownloads
- su dispositivi retro/handheld o sistemi minimali, dove il client Python originale