Installazione Perl-TK: pacchetti con dipendenze esagerate

Nota: Questa è più una segnalazione che la richiesta di soluzione

Dunque cercando di installare perl-Tk, a causa delle dipendenze, mi tira giù anche Qemu per un totale di quasi 500MB…

Perl-Tk è un’interfaccia grafica (GUI) per il linguaggio Perl. Le sue dipendenze tipiche sono:

  • Interprete Perl
  • Librerie X11 (su Linux) per la gestione delle finestre.
  • Librerie Tcl/Tk (il motore grafico sottostante).

A me serve esclusivamente per avviare la GUI di un app cli, scritta ovviamente in PerlTK, mi servono quindi esclusivamente le librerie, stop.
Perché quindi devo installarmi anche Qemu che è un emulatore e virtualizzatore di intero sistema e quindi non c’entra niente?

Ho sottoposto la questione a Gemini, più che altro per curiosità ma (e forse non dovrebbe sorprendere) è giunto alla mia medesima conclusione, anzi in modo anche più tranchant: “Non ha alcun senso installare un intero emulatore per far girare uno script Perl”. Direi chiaro oltre ogni ragionevole dubbio.

Giusto per rendersi conto:


Pacchetto                           Arch   Versione    Repository     Dimensione
Installazione:
 perl-Tk                            x86_64 0:804.036-5 rolling-x86_64    4.3 MiB
Installazione dipendenze:
 ebtables                           x86_64 0:2.0.11-2  rolling-x86_64  293.9 KiB
 ipxe                               noarch 1:10.1.1-1  rolling-x86_64  364.5 KiB
 lib64cacard0                       x86_64 0:2.8.1-1   rolling-x86_64  104.2 KiB
 lib64capstone4                     x86_64 0:4.0.2-3   rolling-x86_64    6.3 MiB
 lib64fdt1                          x86_64 0:1.7.2-1   rolling-x86_64   40.7 KiB
 lib64ibverbs                       x86_64 0:41.0-1    rolling-x86_64  120.2 KiB
 lib64iscsi9                        x86_64 0:1.19.0-1  rolling-x86_64  166.2 KiB
 lib64netcf1                        x86_64 0:0.2.8-1   rolling-x86_64   58.4 KiB
 lib64rdmacm                        x86_64 0:41.0-1    rolling-x86_64   94.4 KiB
 lib64slirp                         x86_64 0:4.8.0-1   rolling-x86_64  123.9 KiB
 lib64spice-server1                 x86_64 0:0.16.0-1  rolling-x86_64    1.0 MiB
 lib64vdeplug3                      x86_64 0:2.3.2-14  rolling-x86_64   21.6 KiB
 lib64virglrenderer1                x86_64 0:1.1.0-1   rolling-x86_64  498.8 KiB
 lib64virt                          x86_64 0:11.9.0-1  rolling-x86_64    4.9 MiB
 lib64virt-admin                    x86_64 0:11.9.0-1  rolling-x86_64   63.5 KiB
 lib64virt-lxc                      x86_64 0:11.9.0-1  rolling-x86_64   12.8 KiB
 lib64virt-qemu                     x86_64 0:11.9.0-1  rolling-x86_64   12.2 KiB
 libvirt-utils                      x86_64 0:11.9.0-1  rolling-x86_64   39.3 MiB
 netcf                              x86_64 0:0.2.8-1   rolling-x86_64  120.2 KiB
 perl-ExtUtils-Command              noarch 1:7.76-33   rolling-x86_64    9.6 KiB
 perl-ExtUtils-Install              noarch 0:2.22-33   rolling-x86_64   72.0 KiB
 perl-ExtUtils-MakeMaker            noarch 1:7.76-33   rolling-x86_64  611.4 KiB
 perl-ExtUtils-Manifest             noarch 0:1.73-33   rolling-x86_64   28.1 KiB
 perl-ExtUtils-ParseXS              noarch 1:3.57-33   rolling-x86_64  205.3 KiB
 perl-Test-Harness                  noarch 1:3.50-33   rolling-x86_64  458.5 KiB
 perl-srpm-macros                   noarch 0:1-33      rolling-x86_64  862.0   B
 qemu-audio-alsa                    x86_64 1:10.1.1-1  rolling-x86_64   21.5 KiB
 qemu-audio-dbus                    x86_64 1:10.1.1-1  rolling-x86_64  328.8 KiB
 qemu-audio-oss                     x86_64 1:10.1.1-1  rolling-x86_64   16.1 KiB
 qemu-audio-pa                      x86_64 1:10.1.1-1  rolling-x86_64   22.0 KiB
 qemu-audio-pipewire                x86_64 1:10.1.1-1  rolling-x86_64   29.0 KiB
 qemu-audio-sdl                     x86_64 1:10.1.1-1  rolling-x86_64   14.7 KiB
 qemu-block-curl                    x86_64 1:10.1.1-1  rolling-x86_64   29.4 KiB
 qemu-block-ssh                     x86_64 1:10.1.1-1  rolling-x86_64   37.3 KiB
 qemu-common                        x86_64 1:10.1.1-1  rolling-x86_64  341.1 MiB
 qemu-kvm                           x86_64 1:10.1.1-1  rolling-x86_64    0.0   B
 qemu-system-x86                    x86_64 1:10.1.1-1  rolling-x86_64   14.3 KiB
 qemu-system-x86-core               x86_64 1:10.1.1-1  rolling-x86_64   69.8 MiB
 qemu-ui-curses                     x86_64 1:10.1.1-1  rolling-x86_64   40.6 KiB
 qemu-ui-dbus                       x86_64 1:10.1.1-1  rolling-x86_64  376.0 KiB
 qemu-ui-egl-headless               x86_64 1:10.1.1-1  rolling-x86_64   11.8 KiB
 qemu-ui-opengl                     x86_64 1:10.1.1-1  rolling-x86_64   33.0 KiB
 qemu-ui-spice-core                 x86_64 1:10.1.1-1  rolling-x86_64   64.8 KiB
 seabios                            noarch 1:10.1.1-1  rolling-x86_64  147.4 KiB
 systemtap                          x86_64 0:5.3-1     rolling-x86_64    6.9 MiB
 systemtap-devel                    x86_64 0:5.3-1     rolling-x86_64    1.3 MiB
Installazione dipendenze deboli:
 perl-devel                         x86_64 4:5.42.0-33 rolling-x86_64    3.8 MiB
 qemu-device-display-qxl            x86_64 1:10.1.1-1  rolling-x86_64   89.8 KiB
 qemu-device-display-virtio-gpu     x86_64 1:10.1.1-1  rolling-x86_64  105.3 KiB
 qemu-device-display-virtio-gpu-pci x86_64 1:10.1.1-1  rolling-x86_64   16.6 KiB
 qemu-device-display-virtio-vga     x86_64 1:10.1.1-1  rolling-x86_64   22.0 KiB
 qemu-ui-sdl                        x86_64 1:10.1.1-1  rolling-x86_64   38.8 KiB

Riepilogo transazione:
 Installazione:      53 pacchetti
Dimensione totale dei pacchetti in ingresso è 45 MiB. Necessario scaricare 23 MiB.
Dopo questa operazione, verranno utilizzati 484 MiB aggiuntivi (installa 484 MiB, rimuovi 0 B).

La soluzione proposta da Gemini:sudo dnf install perl-Tk --setopt=install_weak_deps=False
In effetti ha funzionato perfettamente

$ sudo dnf install perl-Tk --setopt=install_weak_deps=False
Pacchetto                         Arch     Versione                          Repository           Dimensione
Installazione:
 perl-Tk                          x86_64   0:804.036-5                       rolling-x86_64          4.3 MiB
Installazione dipendenze:
 perl-ExtUtils-Command            noarch   1:7.76-33                         rolling-x86_64          9.6 KiB
 perl-ExtUtils-Install            noarch   0:2.22-33                         rolling-x86_64         72.0 KiB
 perl-ExtUtils-MakeMaker          noarch   1:7.76-33                         rolling-x86_64        611.4 KiB
 perl-ExtUtils-Manifest           noarch   0:1.73-33                         rolling-x86_64         28.1 KiB
 perl-ExtUtils-ParseXS            noarch   1:3.57-33                         rolling-x86_64        205.3 KiB
 perl-Test-Harness                noarch   1:3.50-33                         rolling-x86_64        458.5 KiB

Riepilogo transazione:
 Installazione:       7 pacchetti

Che è esattamente ciò che serve per far girare gli script Perl-TK .

LA mia opinione è che sarebbe meglio dimagrire piuttosto che ingrassare le installazioni, cioè lasciare come dipendenze forti solo ciò che è effettivamente necessario per ciò che è lo scopo di ogni app/libreria ecc. ed il resto, magari anche utile a qualcuno ma oggettivamente a pochi, lasciarlo come opzionale.

1 Like

Probabilmente un Requires: di troppo. Conviene fare una segnalazione di bug così che ne rimanga traccia e qualcuno se ne possa occupare.

D’altro canto, se riesci a editare il titolo del topic in qualcosa di più specifico altri utenti potrebbero trovare la soluzione qui.

(Non conosco Gemini. Amico/a tuo/a ? :stuck_out_tongue_winking_eye: )

1 Like

Ho cambiato il titolo, effettivamente ora è più specifico.

PerlTKDipendenze_esagerate.pdf (79,1 KB)
In allegato ho messo la conversazione completa con Gemini che contiene anche dei suggerimenti potenzialmente utili ai manutentori di OM; ovviamente vanno verificati perché nessuno è perfetto, nemmeno Gemini.

In sintesi, cito alcuni passi:

Il Colpevole: systemtap e le dipendenze di sviluppo

Se guardi bene l’elenco, il “ponte” che trascina dentro tutto il mondo della virtualizzazione non è perl-Tk direttamente, ma la combinazione di pacchetti di sviluppo.

  1. perl-Tk ha probabilmente una dipendenza (o una raccomandazione) verso strumenti di sviluppo Perl (perl-devel).
  2. In OpenMandriva, alcuni pacchetti di sviluppo o di sistema hanno come dipendenza systemtap (uno strumento di analisi del kernel).
  3. systemtap, per poter analizzare il comportamento del sistema in vari contesti o per fornire supporto alla virtualizzazione, si tira dietro libvirt e qemu.

È una catena di dipendenze “sporche” o eccessivamente zelanti nel repository. In pratica, il sistema pensa: “Vuoi sviluppare in Perl? Allora ti servono i tool di sviluppo. I tool di sviluppo includono SystemTap. SystemTap può analizzare QEMU. Quindi installo QEMU.”


Qui l’ analisi di Gemini si fa ancora più precisa


Perché succede? (Il “Bug” concettuale)

Il problema nasce probabilmente dal pacchetto perl-devel. In molte distro RPM-based, i pacchetti -devel tirano dentro macro e strumenti di analisi (systemtap-devel) per permettere il debugging profondo. systemtap, a sua volta, è compilato per poter analizzare macchine virtuali, e quindi “esige” la presenza di libvirt e qemu.
È un castello di carte:

  1. Perl-Tk richiede Perl-devel (per compilare i moduli C).
  2. Perl-devel richiede SystemTap (per il profiling).
  3. SystemTap richiede QEMU/Libvirt (per il supporto alla virtualizzazione).

Infine i suggerimenti per i manutentori:


Portare la questione sul forum di OpenMandriva è un’ottima idea. Se deciderai di aprire una discussione con i manutentori, ecco un paio di punti tecnici che potresti sollevare per aiutarli a inquadrare il problema:

  • Il problema del “Profiling”: Molto probabilmente il colpevole è il pacchetto perl-devel che ha systemtap come dipendenza Hard invece di Weak. Spiega che questo trascina qemu e libvirt anche su installazioni desktop minimali che non hanno nulla a che fare con la virtualizzazione.
  • Granularità: Suggerisci di separare i tool di introspezione (come SystemTap) dai pacchetti base di sviluppo del linguaggio. Non tutti quelli che scrivono uno script in Perl hanno bisogno di fare il debugging del kernel o emulare hardware.
  • User Experience (UX): Fai presente che per un utente con una partizione / (root) standard, un aggiornamento o un’installazione che richiede improvvisamente 500MB di dipendenze non correlate può causare il blocco del sistema per disco pieno.

In effetti mi rimane appena 1GB libero in root, quindi o tolgo qualcosa da
/opt spostandolo in /var/opt o allargo la partizione, o entrambe le cose, ho abbastanza spazio in /var , evidentemente in fase di installazione avevo pianificato una / troppo piccola, sono stato troppo ottimista :grin:

Però dai… se la cava bene sto Gemini eh… :smiling_face_with_sunglasses:

1 Like

Ah dimenticavo

:open_mouth:

Non era mia intenzione fargli pubblicità, già ne ha abbastanza, però… tanta roba per essere un LLM

@rugyada

Ottimo.

Più che sul forum, direi meglio sul Bug Tracker.
Se ricordo bene non abbiamo un esperto di perl però vediamo, se apri un bug report chissà..

(“dipendenze eccessivamente zelanti” mi ha fatto scompisciare :grin:)

PS>

Probabilmente corretto: in teoria in un sistema semplice utente non dovrebbe essere necessario alcun pacchetto *-devel.

Per risolvere un problema come questo, invia una segnalazione di bug come suggerito da @rugyada oppure contatta gli sviluppatori di OM su OM-Chat.

To get something like this fixed file a bug report as suggested by @rugyada or talk to OM developers at OM-Chat.