Verifica delle dipendenze

Se avete problemi con l'installazione e la configurazione di Slackware64 postate qui. Non usate questo forum per argomenti che trattano la Slackware32 o generali... per quelli usate rispettivamente il forum Slackware e Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware64 usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Verifica delle dipendenze

Messaggio da gian_d »

Ho un dubbio che mi assilla da anni. Nelle mie installazioni escludo sempre i pacchetti che sono sicuro non userò mai (es. calligra, emacs, firefox, thunderbird, ecc.). Altri li installo perché non essendo sicuro preferisco installarmi piuttosto che ritrovarmi di fronte a problemi di cui non riesco a individuare la causa. Ad esempio, installo tutti i pacchetti delle sezioni d e l oltre alla maggior parte delle sezioni n e x.

Detto questo, non ho problemi di spazio disco, però ho un pkgtool veramente lungo perché oltre ai pacchetti ufficiali ne ho parecchi costruiti da slackbuild e non mi dispiacerebbe snellirlo un po' togliendo tutti i pacchetti che sono superflui.
C'è però il problema delle dipendenze. Mentre l'assenza di una dipendenza necessaria si fa sentire subito, è difficile rilevare l'assenza di una dipendenza opzionale (che spesso è solo causa di malfunzionamenti di un software).

C'è quindi un metodo pratico e sicuro per verificare se un pacchetto è richiesto da altri installati? A me ne vengono in mente solo due che, però, non sono attuabili:

1) documentarsi in rete. Poco pratico quando si parla di parecchie centinaia di pacchetti e non è detto peraltro che sia esaustivo: se per il software di alcune distribuzioni c'è un'ampia documentazione, per la Slackware potrebbe essere arduo. Anche perché la posizione di una libreria specifica in un pacchetto può cambiare da distro a distro. Insomma, un lavoro del genere potrebbe anche richiedere mesi di ricerca e non è detto che si arrivi ad una conclusione.

2) procedere per tentativi, rimuovendo un pacchetto per volta e vedendo l'effetto che fa. Oltre ad essere lungo e laborioso, non è scevro da effetti collaterali indesiderati. Ricordo che alcuni anni fa avevo fatto una cavolata (ingenuità e ignoranza) rimuovendo glibc invece di aggiornarlo con il risultato di non riuscire poi ad usare la shell e non riuscendo a riparare alla fine ho dovuto reinstallare un sistema che avevo configurato e personalizzato da anni

Insomma, escludendo per ovvi motivi questi due, ci sono strade alternative?

Altro dubbio che ho è discernere tra dipendenze in compilazione e dipendenze in runtime. Periodicamente, una o due volte l'anno, ricompilo tutti i pacchetti costruiti da slackbuild quando devo aggiornare alcune piattaforme (es. vlc, qgis, blender, inkscape, ecc.). Diversi pacchetti di d e l in questo caso sono necessari e potrebbero essere installati all'occorrenza per poi rimuoverli perché non più necessari. Ma nel dubbio finisco per lasciarli tutti.

Insomma, c'è un qualche modo per venirne a capo senza dannarsi troppo? O chiedo la luna?

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3788
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Verifica delle dipendenze

Messaggio da joe »

Dunque la risposta breve secondo me è no.
Slackware non ha un supporto nativo alla gestione delle dipendenze, puoi installare tutto quello che vuoi, poi però se qualcosa non funziona non è un problema di Pat ma tuo. La qualcosa ha anche vantaggi... che saprai anche tu usando slackware.

Detto questo osserverei "dall'alto" il parco software installato nel tuo sistema. Escludendo eventuali installazioni sporche cioè eseguite senza pacchetto.
- Hai software ufficiale che resta come base.
- Hai software aggiunto da repo terzi sia precompilato che costruito tipo partendo da slackbuild di SBo.
- Hai altri pacchetti fatti da te, magari con slackbuild m anche no.

Sul software base, c'è poco da fare e da dire, se hai dubbi di aver tolto roba importante fai presto a reinstallare/aggiornare le serie di pacchetti per intero. È la cosa più semplice e speditiva e ti garantisce di avere una base di partenza solida. Se alcuni di questi pacchetti mancano, tipo calligra e roba così ad alto livello non è un problema, ma se ti lasci indietro qualche libreria poi puoi avere sorprese.
Ovvio che se non usi KDE puoi anche lasciare perdere l'intera serie "kde".
Per questo pezzo di software cioè derivante da pacchetti ufficiali, ci potrebbe essere il caso di qualche pacchetto sostituito da un analogo tuo personalizzato, ad esempio ffmpeg.
Non ci sono santi, secondo me la cosa più semplice è marcarseli in file, oppure costruire il paccetto usando un package tag personalizzato del tipo ffmpeg-versione-arch-1_giand.
In questo modo quando dovrai aggiornare l'universo, saprai che quel pacchetto lì deve essere ricompilato seguendo le personalizzazioni, in pratica aggiungere lo slackbuild nel pacchetto stesso da scompattare in /usr/doc/ffmpeg-versione/ insieme al resto della documentazione.

Dopodiché devi reinstallare il resto dei pacchetti.
Allora, per SBo puoi creare un coda che considera tutti i pacchetti che hai e le relative dipendenze, presenti o mancanti, non sono sicuro però sulle dipendenze opzionali... Questo mi manca così al volo.

Per quanto riguarda i pacchetti precompilati installati da repo terzi (tipo AlienBob) lì devi controllare uno ad uno, e vedere se nei readme o simili ci sono indicazioni riguardo a dipendenze opzionali.

Non è un'operazione banale. Ma non è colpa di Slackware in sè... anche in debian credo che non sia troppo diverso, se inizi a mescolare repo e compilarti roba a mano senza farlo in modo opportuno. Resta un'operazione da studiare a tavolino.
Quello che ti ho indicato sopra è solo un tentativo di dare un indirizzo su cosa considerare prima e cosa dopo. Il primo passo è sicuramente quello di identificare i pacchetti ufficiali e non.

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: Verifica delle dipendenze

Messaggio da gian_d »

Ti ringrazio per la risposta, in effetti me l'aspettavo ma volevo togliermi ogni ragionevole dubbio.
Per il resto mi hai dato dei suggerimenti che mi confermano di essere sulla strada giusta. Ci sono arrivato un po' con l'esperienza e un po' facendo testo degli inevitabili errori causati in passato dall'ingenuità e dall'ignoranza.
Infatti ho imparato a lasciare come predefinito tutto quello che ignoro o di cui non sono sicuro e al tempo stesso personalizzare laddove ho acquisito una conoscenza affidabile. Ed è questo il punto di forza della Slackware.
I pacchetti ufficiali in genere sono inalterati, faccio eccezione solo per ffmpeg, che ricompilo usando lo slackbuild di Pat attivando però il supporto alle dipendenze opzionali che ho installato da terze parti.
Come software di terze parti uso per lo più gli slackbuild del repository di Ponce, magari portandomi avanti - laddove è possibile - con versioni più aggiornate dei sorgenti oppure attivando il supporto ad alcune dipendenze opzionali per estenderne la funzionalità.
In aggiunta ho dei pacchetti costruiti da me. Ora che ho capito la filosofia dello slackbuild ne sono diventato dipendente. Lo faccio anche per il software python. Naturalmente per necessità di ordine uso i tag appropriati per individuare i pacchetti (txz per quelli ufficiali, SBo.tgz per quelli di SlackBuild, gian.tgz per i miei)
Per esperienza evito tutte le installazioni sporche, come quelle derivate dalla compilazione dei sorgenti oppure quelle gestite da tool di installazione come pip. Evito anche i pacchetti precompilati per avere consapevolezza della piena compatibilità (anche in termini di estensione) con la mia configurazione.
Di tutto il software non ufficiale installato dagli slackbuild mantengo un database tracciante (su LibreOffice Base) che riporta tutte le info necessarie, comprese le dipendenze necessarie o facoltative e anche l'ordine cronologico di compilazione / installazione.

In tutto questo faccio due sole eccezioni: Firefox e Thunderbird sono installati come software "stand alone" usando i binari scaricati dai rispettivi siti e posizionati in /usr/local in due apposite directory in cui ho impostato come owner la mia utenza ordinaria (non root). In questo modo vengono aggiornati automaticamente ad ogni nuovo rilascio.

Per concludere, non considero la filosofia della gestione delle dipendenze nella Slackware un limite, anzi, quando sai come comportarti diventa un punto di forza. Ed è per questo che la considero la migliore distribuzione con cui ho avuto mai a che fare.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Verifica delle dipendenze

Messaggio da conraid »

Questo funziona abbastanza bene
https://bitbucket.org/a4z/sbbdep/wiki/Home

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Verifica delle dipendenze

Messaggio da ZeroUno »

questo può dare una mano

https://download.salixos.org/x86_64/sla ... CKAGES.TXT

è il PACKAGES.TXT di slackware rivisto con le aggiunte delle dipendenze.
Non è ufficiale, ma è manutenuto dal teams di salixos.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: Verifica delle dipendenze

Messaggio da gian_d »

Grazie, interessanti entrambi. Di sbbdep c'è lo slackbuild anche per la current. Si potrebbero usare entrambi per fare delle verifiche incrociate e alla fine decidere cosa è abbastanza sicuro da rimuovere senza correre il rischio di compromettere l'installazione del sistema operativo, come mi era successo con glibc :-D

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: Verifica delle dipendenze

Messaggio da gian_d »

A margine, ho appena installato sbbdep e indicizzato i pacchetti nel database, ora devo capire come usarlo

Per chi fosse interessato segnalo che lo slackbuild nella Current restituisce parecchi errori, da quello che ho capito ricorrenti nella versione 11 (o successiva) di gcc.
In ogni modo si risolve facilmente applicando questa patch:

Codice: Seleziona tutto

--- sbbdep-0.3.2/libsl3/src/sl3/value.cpp	2017-08-05 20:01:24.000000000 +0200
+++ sbbdep-0.3.2/libsl3/src/sl3/value.cpp	2022-01-19 10:20:43.964064715 +0100
@@ -10,6 +10,8 @@
 #include <sl3/value.hpp>
 
 #include <algorithm>
+#include <stdexcept>
+#include <limits>
 #include <climits>
 #include <cmath>
 #include <iomanip>

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Verifica delle dipendenze

Messaggio da targzeta »

Io ho fatto un paio di tool che mi consentono di tenere pulita la slackware. Mi sa che li devo mettere su github perché ogni volta li allego qui ma non so neanche se poi qualcuno li usa :D.

I tool:
- unused_SlackPkg.sh: ti dice i pacchetti che non sono stati usati nell'ultimo periodo (default: 1 mese);
- find_external_SlackPkg_files.sh: ti dice i file che non sono associati a nessun pacchetto;

Entrambi gli script possono usare dei filtri per evitare di stampare cose note che sporcano l'output.

Normalmente, con questi due tool, dovrei essere sicuro di aver installato solo i pacchetti che mi servono e di non avere file sporchi in giro!
Emanuele
Allegati
tools.zip
Tool per tenere pulito il sistema
(7.1 KiB) Scaricato 57 volte
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Verifica delle dipendenze

Messaggio da ZeroUno »

Metterlo su GitHub poi apre ad un pubblico internazionale :)
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: Verifica delle dipendenze

Messaggio da gian_d »

grazie targzeta
voglio provare anche i tuoi tool per fare delle verifiche incrociate.
Intanto con sbbdep sto iniziando a sfoltire. Per ora ho rimosso tre applicazioni che di fatto non uso e quindi non mi sono utili. Di solito le installo per default senza preoccuparmi di verificare a cosa servano effettivamente. Faccio un esempio: acct. Ho visto che non ha pacchetti figli e allora sono andato a vedere a cosa serve e ho realizzato che serve solo a intasarmi il pkgtool :-D

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: 15.0-x64
Kernel: 6.1
Desktop: Xfce-4.16
Località: Salerno

Re: Verifica delle dipendenze

Messaggio da lennynero »

targzeta ha scritto:
gio 20 gen 2022, 11:42
Io ho fatto un paio di tool che mi consentono di tenere pulita la slackware. Mi sa che li devo mettere su github perché ogni volta li allego qui ma non so neanche se poi qualcuno li usa :D.

I tool:
- unused_SlackPkg.sh: ti dice i pacchetti che non sono stati usati nell'ultimo periodo (default: 1 mese);
- find_external_SlackPkg_files.sh: ti dice i file che non sono associati a nessun pacchetto;

Entrambi gli script possono usare dei filtri per evitare di stampare cose note che sporcano l'output.

Normalmente, con questi due tool, dovrei essere sicuro di aver installato solo i pacchetti che mi servono e di non avere file sporchi in giro!
Emanuele
Ho dato un occhio agli script, ma in merito a unused_SlackPkg.sh mi chiedevo: la data di ultimo accesso ad un file (o di tutti i files) di un pacchetto molto lontana nel tempo non significa necessariamente che non uso quel pacchetto... perché in realtà quello che veramente conta è se un determinato file (magari un eseguibile) lo eseguo... e da quanto so questo è impossibile da stabilire :(. Infatti eseguendo il tuo script aaa_base mi risulterebbe unused, ma sappiamo benissimo che non è così, forse mi sfugge qualcosa?

In ogni caso grazie per aver condiviso con noi il tuo lavoro. Concordo sull'idea di metterlo su git. Io ad esempio l'ho leggermente modificato per farmi stampare per ogni singolo pacchetto unused (opzionalmente) anche la data di ultimo accesso.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Verifica delle dipendenze

Messaggio da ZeroUno »

Okkio alla data di ultimo accesso perché spesso i filesystem sono montati con opzione noatime
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Verifica delle dipendenze

Messaggio da targzeta »

Grazie mille ad entrambi. Questa sarebbe una discussione interessante su github :). Prova a verificare le opzioni di mount della root perché penso tu ce l'abbia montato proprio come noatime. aaa_base contiene tutta l'alberatura ed è impossibile che, ad esempio, la /bin non sia acceduta sempre. Se avete idee per migliorare l'algoritmo...

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: 15.0-x64
Kernel: 6.1
Desktop: Xfce-4.16
Località: Salerno

Re: Verifica delle dipendenze

Messaggio da lennynero »

Avevo fatto qualche casino con la modifica per la stampa della last used date e mi restituiva roba strana.
Ho corretto;)

p.s. Ho anche aggiunto un flag i per invertire la logica e verificare i pacchetti usati almeno dal, riusando la logica già presente, per capire la roba usata più di recente.

Per quanto riguarda invece lo script find_external_SlackPkg_files sarebbe possibile aggiungere un argomento per ulteriori paths da ignorare (tipo /tmp)? (non mi è chiaro come si fa, se già possibile). Vengono considerati orfani anche i files che provengono da packages non standard (li si potrebbe annotare come esterni e la loro fonte?!).

Grazie ancora per la disponibilità.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Verifica delle dipendenze

Messaggio da targzeta »

Quella di stampare i pacchetti usati è effettivamente una buona idea!

Per lo script find_external_SlackPkg_files, invece, ha già la possiblità di filtrare dei file. Il filter file è ~/.find_external_SlackPkg_files. La sintassi è:
'file[ binario]' dove il [ binario] è opzionale. L'idea è di ignorare un file se, e solo se, esite il binario associato. Ti faccio due esempi:

Codice: Seleziona tutto

/tmp
/opt/VBoxGuestAdditions*                        VBoxControl
Quindi la directory /tmp (e il suo contenuto) viene filtrata a prescindere. Mentre il path /opt/VBoxGuestAdditions* viene filtrato se, e solo se, il comando VBoxControl è nel PATH. Così se un giorno cancelli virtualbox quella directory comparirà in elenco.

Ti allego il mio file di filtro (da rinominare opportunamente).
find_external_SlackPkg_files.txt
da copiare in ~/.find_external_SlackPkg_files
(5.09 KiB) Scaricato 54 volte
Emanuele

P.S. anche l'altro script ha un file per il filtraggio dei pacchetti, si chiama ~/.unused_SlackPkg. Ci metti il nome del pacchetto (senza la versione) che non vuoi veder visualizzato. Io ci metto quei programmi che effettivamente non uso spesso, ma che mi va bene siano installati (xkill, xwininfo, tree, etc...).
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Rispondi