Script per il controllo delle multilib

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

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware 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 Slackware, se l'argomento è generale usate il forum 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
hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27

Script per il controllo delle multilib

Messaggio da hashbang »

Lo metto qui, nel caso in cui possa tornare utile a qualcuno.
Dato che faccio uso di multilib, come tanti altri, i pacchetti da tenere aggiornati spesso raddoppiano.
Eric aggiorna il suo trunk delle multilib, ma solitamente aggiorno a mano in quanto preferisco mantenere aggiornato il sistema con i miei tempi. E sinceramente avere multilib non sincronizzate col pacchetto a 64-bit è un inutile rischio che non sono disposto a correre.
A questo si aggiunge che faccio uso di pacchetti presi dal repository di ponce (che non è una persona buona come Eric e quindi non prepara le multilib :p ) e dal suo SBo-git, e che alcuni pacchetti ufficiali non sono disponibili come multilib.

Niente di trascendentale, alla fine. Una botta di convertpkg-compat32 e si risolve immediatamente.

Tuttavia, in tutto questo c'è un problema: io mi dimentico che pacchetti ho in multilib, e tenere traccia a mano degli aggiornamenti mi costa troppa fatica. Anche dare un find o un ls è troppo. La pigrizia vince su tutto; non a caso uso Slackware. :D

Perciò ho deciso di realizzare uno script veloce veloce che faccia il lavoro al posto mio. Non è niente di ottimizzato e probabilmente ci saranno modi più eleganti per implementare il tutto, ma sinceramente non mi importa. Fa parte di una mia collezione di script sporchi che ho fatto con il solo scopo di automatizzare compiti noiosi e che metto in ~/.local/libexec (sì, lo so che libexec serve ad altro).

Lo script si chiama check_multilib.sh ed è scritto in dialetto ZSH in quanto Bash ha il fastidioso problema che non supporta le Parameter Expansion annidate.
Nelle varie prove che ho fatto non ho riscontrato bug, però se doveste trovarne qualcuno scrivete pure.

Codice: Seleziona tutto

#!/bin/zsh

multilibs=($(find /var/log/packages -name \*compat32))

echo "The following multilib packages need your attention:\n"

for lib32 in ${multilibs[@]}; do
    pkg64=${${lib32//compat32}/--/-}
    pkgnam=${lib32/-compat32*}

    # Check if the 64-bit package is installed and if the
    # multilib needs to be upgraded
    [[ ! -e $pkg64 ]] && {
        matches=($(ls ${pkgnam}* | egrep -v "${pkgnam}([a-zA-Z0-9]|-[a-z])"))

        if [[ ${#matches} -eq 1 ]]; then
            # A good practice would be having both multilib and 64-bit packages
            # provided from the same repository.
            if [[ "${${matches##*-}/[0-9]}" != "${${${lib32##*-}/compat32}/[0-9]}" ]]; then
                type="[mismatch]"
            else
                type="[upgrade]"
            fi
        else
            type="[orphan]"
        fi

        echo "$type\t${lib32##*/}"
    }
done


Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Script per il controllo delle multilib

Messaggio da Ansa89 »

Senza voler togliere nulla allo script di hashbang (che trovo molto comodo e ben fatto), volevo segnalare due tool che potrebbero tornare utili alla gestione delle multilib:
- multilibpkg
- compat32pkg

Rispondi