SLACKPKGPLUS.CONF(5)

NOME
slackpkgplus.conf - Configurazione per slackpkg+

DESCRIZIONE
Il file slackpkgplus.conf contiene la configurazione di slackpkg+, un plugin per slackpkg che consente l'aggiunta di repository di terze parti a slackpkg(5). Il file slackpkgplus.conf è una sequenza di variabili (chiamate anche "impostazioni") di shell script, e ogni variabile controlla un aspetto di slackpkg+. I commenti iniziano con il carattere # e finiscono alla fine della linea e possono essere presenti in ogni punto del file slackpkgplus.conf. Se qualche variabile è presente più di una volta nel file, slackpkg userà il valore che è stato definito per ultimo. Molte variabili possono essere sovrascritte da linea di comando scrivendoli PRIMA del comando stesso. Se hai necessità di utilizzare temporaneamente un valore diverso da quello configurato per una VARIABILE, scrivi VARIABILE=valore nella linea di comando, appena prima di slackpkg. Variabili multiple possono essere sovrascritte.
DOWNLOADONLY=on slackpkg upgrade-all
Ogni impostazione ha un valore predefinito (default) che è quello utilizzato in caso la variabile non sia presente nel file o sia commentata. Non necessariamente corrisponde con il valore impostato nel file di configurazione di esempio. Seguono le differenti impostazioni disponibili:
VARIABILE valori default sovrascrivibile
Impostazioni principali
SLACKPKGPLUS on/off on si
MIRRORPLUS stringa - no
REPOPLUS elenco - no
PKGS_PRIORITY elenco - no
TAG_PRIORITY on/off off si
Impostazioni di download
VERBOSE 0,1,2,3 1 si
WGETOPTS stringa - si
DOWNLOADCMD stringa wget si
DOWNLOADONLY on/off off si
CACHEUPDATE on/off off si
SEARCH_CLOG_INPARENT on/off off no
STRICTGPG on/off on si
Impostazioni di ricerca
ALLOW32BIT on/off off si
USEBL on/off on si
GREYLIST on/off on si
SENSITIVE_SEARCH on/off on si
WW_FILE_SEARCH on/off on si
Impostazioni di visualizzazione
SHOWORDER stringa package no
DETAILED_INFO stringa none si
ENABLENOTIFY on/off off no
Ad ogni modifica della configurazione è necessario o comunque opportuno rilanciare slackpkg update Di seguito i dettagli delle singole impostazioni.

SLACKPKGPLUS
    Abilita/Disabilita slackpkg+. Se vuoi disattivare slackpkg+ senza disinstallarlo setta questa variabile a off.

MIRRORPLUS
    Questa è la principale (e l'unica veramente necessaria) variabile di slackpkg+ da impostare. Serve per specificare i repository di terze parti da cui installare i pacchetti. E' possibile specificare più di un repository aggiungendo multiple righe. Ogni repository ha un nome che va specificato tra parentesi quadre.
    MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/
    E' possibile specificare repository remoti in http/https/ftp o repository locali (con o senza metadati). Per dettagli sui tipi di repository fare riferimento alla documentazione. Ogni volta che si aggiunge un nuovo repository o che viene rinominato è necessario lanciare il comando slackpkg update gpg per scaricare/confermare la chiave GPG.

REPOPLUS
    L'aggiunta di più repository di terze parti porta come conseguenza che uno stesso software può trovarsi in più di una fonte, con lo stesso nome di pacchetto, ma compilato in modo diverso, con opzioni diverse e in versione differente. Nella selezione di pacchetti in fase di installazione è possibile mostrarne uno solo. Con la variabile REPOPLUS si specifica l'ordine di ricerca nei repository. Esempio:
    REPOPLUS=( slackpkgplus alienbob slacky )
    In questo caso lanciando slackpkg install openjdk il pacchetto verrà preso dal repository di alienbob, se presente, altrimenti cerca in slacky. E' possibile forzare la scelta di un altro altro repository specificandolo nella linea di comando. Per esempio se successivamente si vuole aggiornare il pacchetto dal repository slacky lanciare esplicitamente:
    slackpkg upgrade slacky:openjdk

PKGS_PRIORITY
    L'impostazione precedente ha alcuni limiti.
    Nell'ultimo esempio il pacchetto openjdk di slacky sostituiva il pacchetto openjdk di alienbob. Tuttavia lanciando successivamente il comando slackpkg upgrade-all verrebbe reinstallato il pacchetto dal repository di alienbob. Inoltre se un pacchetto è presente anche nei repository ufficiali di slackware, tale pacchetto non verrebbe installato. La variabile PKGS_PRIORITY è simile a REPOPLUS ma consente una scelta più capillare dell'ordine di ricerca sia a livello di repository sia a livello di singolo pacchetto. Inoltre i pacchetti nei repository configurati in questa variabile possono essere installati anche se presenti nei repository ufficiali.
    PKGS_PRIORITY=( slacky:openjdk ktown multilib )
    In questo caso slackpkg upgrade-all aggiornerebbe il pacchetto openjdk dal repository slacky mentre tutti gli altri pacchetti dagli altri reporitory. Un'altro caso in cui è necessario utilizzare questa opzione sono i repository ktown (kde5 di alienbob) e multilib in quanto devono sovrascrivere alcuni pacchetti ufficiali di slackware (per ktown e multilib leggere attentamente la documentazione). Alcuni preferiscono sostituire del tutto la variabile REPOPLUS con PKGS_PRIORITY, ma se volete farlo siate coscienti che potreste upgradare pacchetti ufficiali slackware con quelli di terze parti, quindi assicuratevi della autorevolezza della fonte.

TAG_PRIORITY
    Quando si installano molti pacchetti da molti repository forzandoli da linea di comando come spiegato sopra, non è sempre facile manutenere un buon PKGS_PRIORITY. In questo caso viene in aiuto la variabile TAG_PRIORITY. Settando questa impostazione ad on la logica del calcolo delle priorità per gli upgrade dei pacchetti cambia, e il repository viene calcolato cercando di mantenere - ove possibile - il tag del pacchetto già installato.
    L'idea è che il pacchetto openjdk di slacky è openjdk-7u40_b60-x86_64-1sl.txz, e ad ogni upgrade il tag rimarrà sempre sl, mentre quello di alienbob sarà sempre alien e difficilmente (nononstante non impossibile) si troverà il pacchetto openjdk con tag sl in qualunque altro repository (a meno che questo non venga copiato dal repository di origine e non ripacchettizzato dal proprietario del repository di destinazione).
    In questo caso con buona probabilità il pacchetto verrà aggiornato con un pacchetto scritto dallo stesso autore del pacchetto correntemente installato. Nota che se l'autore del pacchetto correntemente installato lo rimuove dal proprio repository e tale pacchetto è presente anche in un altro repository, il pacchetto verrà aggiornato con quest'ultimo, anche se il tag è differente. Si consiglia quindi di prestare sempre attenzione alle fonti da cui viene proposto l'aggiornamento dei pacchetti. L'impostazione è disabilitata di default.

VERBOSE
    Questa variabile specifica il livello di dettaglio dell'output di wget(1) (che è il downloader che viene utilizzato di default se non diversamente specificato). L'originale slackpkg di default lancia un wget classico con opzioni di default che mostra quindi la barra di scorrimento.
    Quando si scaricano i metadati dei repository con slackpkg update, la versione originale deve scaricare pochi file, mentre con slackpkg+ vengono scaricati molti file, il che può rendere poco leggibile l'output. Con questa impostazione si può specificare quanto output wget deve mostrare. I valori possibili sono 0,1,2,3: 0) Sia nel download dei metadati che nel download dei pacchetti non viene mostrata la barra di scorrimento ma solo l'url scaricato (wget -nv)
    1) Nel download dei metadati non viene mostrata la barra di scorrimento mentre nel download dei pacchetti viene mostrata (default in slackpkg+)
    2) Sia nel download dei metadati che dei pacchetti viene mostrata la barra di scorrimento (default in slackpkg originale)
    3) Output esteso di wget più altre opzioni di report errori; inoltre non vengono eliminati i file temporanei al termine. Utilizzare in caso di troubleshooting e quando si deve segnalare un bug agli sviluppatori. Questa impostazione viene ignorata (o parzialmente ignorata se viene impostata a 3 in caso si utilizzi un altro downloader con l'impostazione DOWNLOADCMD (v.sotto).

WGETOPTS
    Quì è possibile specificare opzioni aggiuntive a wget. Una tipica è
    WGETOPTS="--timeout=20 --tries=2"
    In questo modo se un repository non risponde subito per problemi temporanei viene effettuato un altro tentativo, ma se fallisce ancora non vengono effettuati altri tentativi all'infinito (il default di wget è 20 tentativi).
    Fare riferimento alla documentazione di wget(1) per tutte le opzioni disponibili. Questa impostazione viene ignorata in caso si utilizzi un altro downloader con l'impostazione DOWNLOADCMD (v.sotto).

DOWNLOADCMD
    In caso si voglia utilizzare un downloader diverso da wget (per esempio curl(1) o aria2 che è un tool per scaricare file in parallelo per accellerare il download) è possibile specificarlo in questa variabile. Nel valorizzarla considerare che viene richiamata con:
    $DOWNLOADCMD filedestinazione url
    Per esempio:
    DOWNLOADCMD="curl -v -o"
    Per i dettagli vedere la documentazione.

DOWNLOADONLY
    Nel download dei pacchetti, con questa variabile è possibile specificare di non installarli ma solo di scaricarli. Verranno lasciati nella cache dei pacchetti. Può essere utile per esempio, in caso di grandi upgrade, scaricare tutto la notte e poi installarli di giorno.
    In slackpkg originale per fare questo viene utilizzato slackpkg download ma questa funzionalità non è completamente implementata in slackpkg+. L'uso tipico di questa impostazione non è valorizzandola nel file di configurazione ma effettuando la sovrascrittura da linea di comando:
    DOWNLOADONLY=on slackpkg upgrade-all
    Vedere la documentazione per i dettagli.

CACHEUPDATE
    Ad ogni slackpkg update (anche con slackpkg+) ogni volta scarica tutti i metadati (ChangeLog.txt, CHECKSUMS.md5...). Questo, soprattutto in grandi repository, può impiegare molto tempo. Molto spesso (soprattutto quando sono configurati molti repository) ci si trova a ri-scaricare molte volte metadati che non hanno avuto modifiche, con inutile consumo di banda e tempo. Impostando CACHEUPDATE a on si attiva un sistema di caching. I file temporanei non vengono cancellati dopo il download, come avviene di solito, ma vengono salvati in una cache locale. Al successivo update viene verificato se il file è stato modificato (scaricando solamente l'header http) e solo in caso positivo viene riscaricato.
    Questo accelera notevolmente il processo di update. Inoltre impostando questa variabile a on, verrà tirato fuori un output veramente minimale e sintetico che risalta subito all'occhio cosa sta succedendo e se ci sono errori di download. L'output di wget (o del downloader impostato da DOWNLOADCMD) viene nascosto, a meno che non si imposti VERBOSE=3. L'impostazione è disabilitata per default.

SEARCH_CLOG_INPARENT
    A partire da slackpkg+ 1.7, la finestra di dialogo di selezione dei pacchetti è in grado di mostrare il changelog dei pacchetti stessi (ove disponibile).
    Il ChangeLog.txt viene cercato nella radice principale del repository, ma qualche repository non lo ha in quella posizione ma nella directory precedente.
    slackpkg+ è in grado di cercare in questi url, ma la ricerca fuori dell'url principale talvolta potrebbe causare problemi. Impostando SEARCH_CLOG_INPARENT=off il file ChangeLog.txt verrà cercato solo nell'url principale dove sono anche i metadati.

STRICTGPG
    Ormai quasi tutti i repository di terze parti hanno una propria chiave GPG, quindi è quasi sempre possibile installare i pacchetti senza disabilitare il checkgpg dal file slackpkg.conf o da linea di comando (-checkgpg=off).
    Lo standard per i repository ufficiali (quelli di slackware) è che tutti i pacchetti presenti siano tutti firmati con la GPG-KEY presente nella radice del repository.
    Lo slackpkg originale verifica che la chiave sia quella giusta con l'opzione SLACKKEY in slackpkg.conf Su slackpkg+ questo controllo non c'è e tecnicamente il proprietario del repository di terze parti può copiare pacchetti e firme dal repository ufficiale o da altri repository e metterli nel proprio repository.
    A partire da slackpkg+ 1.7 viene effettuato un controllo GPG "ristretto", in modo che i pacchetti pubblicati devono essere firmati con la propria chiave GPG. Questo aumenta la sicurezza del repository.
    A causa di questo è importante che ogni volta che si aggiunge un repository o lo si rinomini, venga rilanciato il comando slackpkg update gpg per rileggere le chiavi proprie del repository. Tuttavia alcuni repository - per come sono strutturati - non possono soddisfare questo requisito. Impostando STRICTGPG=off viene ripristinato il comportamento classico di slackpkg+ 1.6 e precedenti riguardo il controllo GPG.
    Usa questa impostazione consapevolmente e seguendo le istruzioni che di solito il proprietario del repository mette a disposizione in questi casi.

ALLOW32BIT
    Normalmente su una slackware a 64bit si dovrebbero installare esclusivamente pacchetti a 64bit e noarch. Se un repository contiene anche pacchetti a 32bit, questi non verranno indicizzati (e quindi trovati nelle ricerche e installazioni). Tuttavia qualcuno potrebbe voler installare ugualmente i pacchetti a 32bit. Impostando ALLOW32BIT=on i pacchetti a 32bit verranno trattati allo stesso modo di quelli a 64bit. Nota che se un repository contiene, per lo stesso pacchetto, sia la versione a 32bit che quella a 64bit non è predicibile quale pacchetto sarà mostrato. Ovviamente questa variabile è disponibile solamente per sistemi a 64bit. Sui sistemi a 32bit sono automaticamente esclusi dall'indicizzazione i pacchetti a 64bit se presenti. L'impostazione è off per default. Se la imposti ad on ricorda anche di installare le multilib di alienbob o equivalenti per assicurare le opportune dipendenze a 32bit per i pacchetti che si vorranno installare.

USEBL
    Slackpkg+ onora il file blacklist di slackpkg. Se tuttavia lo si vuole disabilitare impostare questa variabile a off. L'uso tipico di questa impostazione è da linea di comando per disattivarlo temporaneamente. Per esempio in slackpkg si possono blacklistare i pacchetti di internazionalizzazione mettendo l10n nel file blacklist per evitare di installare i pacchetti di 100 lingue diverse. Quando si vuole installare il pacchetto di kde in italiano si può lanciare:
    USEBL=off slackpkg install kde-l10n-it

GREYLIST
    Per ovviare al dover disabilitare temporaneamente la blacklist per installare/aggiornare il pacchetto kde-l10n-it come sopra, slackpkg+ mette a disposizione un sistema di greylisting. Popolando il file greylist (v. sotto nella sezione FILES) i pacchetti che corrispondono verranno mostrati nei dialog box ma disabilitate per default così che l'utente non deve disabilitare tutti i pacchetti non interessanti ogni volta. Impostando GREYLIST=off nella configurazione, questa funzionalità viene disabilitata.

SENSITIVE_SEARCH
    In slackpkg search la ricerca avviene in modalità "case sensitive" cioè rispettando le differenze tra maiuscole e minuscole, quindi slackpkg search mplayer non è la stessa cosa di slackpkg search MPlayer. La stessa cosa vale per il comando file-search. Impostando SENSITIVE_SEARCH=off sarà possibile effettuare le ricerche in modalità "case insensitive" cioè senza fare differenze tra maiuscole e minuscole. Nota che questa opzione non influenza il comportamento di slackpkg install o upgrade e gli altri, per i quali il pacchetto va inserito esattamente così com'è, con le maiuscole e minuscole corrette.

WW_FILE_SEARCH
    WW sta per Whole Word, ovvero Parola Intera. Il comando slackpkg file-search per impostazione predefinita cerca i file in modalità Whole Word (usando il comando grep -w), quindi slackpkg file-search libext2 non troverà alcuna occorenza. Impostando WW_FILE_SEARCH=off il comando file-search cercherà anche per sottostringhe, così il comando precedente troverà il pacchetto e2fsprogs per la presenza del file libext2fs.a. Nota che la ricerca per stringhe troppo corte può tirare fuori centinaia e centinaia di risultati ed impiegare molto tempo.

SHOWORDER
    Di solito i pacchetti nel dialog box vengono listati in ordine alfabetico per pacchetto (package).
    Soprattutto quando ci sono aggiornamenti corposi questo potrebbe rendere difficoltoso la rivisitazione dei pacchetti mostrati. A volte sarebbe preferibile ordinarli per repository, in modo da vedere a colpo d'occhio il blocco di pacchetti che sono in un repository o l'altro. Per qualcuno potrebbe essere preferibile mostrarli in ordine per come sono distribuiti nelle directory del repository (path), in modo che - per il repository ufficiale di slackware - verrebbero mostrati per primi quelli del gruppo [A] poi quelli del gruppo [AP] ecc... . Talvolta può essere utile ordinarli per tag o architettura del pacchetto. I valori accettati per questa opzione sono
    package Ordina per nome del pacchetto (default)
    repository Ordina per nome del repository
    tag Ordina per tag del pacchetto
    path Ordina per posizione nel repository
    arch Ordina per architettura

DETAILED_INFO
    Il comando slackpkg info mostra di solito solamente i metadati di base, ovvero NAME LOCATION SIZE DESCRIPTION. Con la variabile DETAILED_INFO è possibile mostrare ulteriori dettagli. I valori accettati per questa opzione sono
    none Mostra solo i metadati di cui sopra (default)
    basic Aggiunge i dettagli del repository e dell'url
    filelist Mostra anche la lista completa dei file del pacchetto
    E' possibile utilizzare questa impostazione anche da linea di comando. Esempio:
    DETAILED_INFO=basic slackpkg info slackpkg
    DETAILED_INFO=filelist slackpkg info kernel-source|less

ENABLENOTIFY
    Alcuni pacchetti richiedono alcune attività di post-installazione da fare manualmente; per esempio dopo aver aggiornato il kernel vanno ricompilati i moduli di driver di terze parti, o reinstallati alcuni pacchetti che potrebbero essere stati sovrascritti, e molto spesso ci si dimentica di queste operazioni. Impostando ENABLENOTIFY=on si abilita un sistema di notifiche che però va configurato opportunamente. Vedi la documentazione e il file notifymsg.conf per i dettagli.

FILES

/etc/slackpkg/slacpkgplus.conf
    Il file di configurazione principale dove sono presenti tutti i parametri di cui sopra.
    Ad ogni modifica è opportuno rilanciare %slackpkg update

/etc/slackpkg/greylist
    Il file di greylisting. Accetta la sintassi del file blacklist di slackpkg. Esempi:
    - abilita il greylist per tutti i pacchetti di terze parti aggiungere: SLACKPKGPLUS_.*
    - abilita il greylist per tutti i pacchetti di internazionalizzazione: l10n

/usr/doc/slackpkg+-*/
    La directory con la documentazione di slackpkg+ e altre cose miste: ChangeLog.txt:
    Il changelog di slackpkg+
    CHANGES:
    L'elenco cumulativo completo dei cambiamenti da slackpkg+ 1.6 a 1.7; leggilo per avere una descrizione delle nuove funzionalità introdotte.
    README:
    La documentazione di slackpkg+. Leggila per avere ulteriori informazioni sull'uso di slackpkg+.
    repositories.txt:
    Una lista sommaria di repository. !!ATTENZIONE!! Questa lista si intende puramente indicativa e non è una lista ufficiale di repository supportati.
    repositories.lst:
    La stessa lista estesa e controllata (con script automatici per verificare se il repository è presente; non predente questa lista come affidabile al 100%; effettuate sempre una verifica personale)
    checkrepos.sh:
    Script utilizzato per generare la lista precedente. Si connette agli url trovati in un file e controlla la presenza di metadati.
    setupmultilib.sh:
    Script utilizzabile per configurare slackpkg+ per installare le multilib di alienbob ed effettuare la prima installazione.
    slackpkg+.SlackBuild:
    Lo SlackBuild di slackpkg+. Da usare solo per consultazione; il lancio fuori della directory dei sorgenti fallirà.
    slackpkg.bash_completion:
    Se hai il pacchetto bash_completion preso dal repository extra di slackware puoi copiare questo file nella directory /etc/bash-completion per utilizzare la funzione l'autocompletamento di bash con slackpkg (effettua anche le ricerche nel pkglist). E' in fase sperimentale.
    slackpkgplus.x86.sample:
    Il file di configurazione di esempio per le architetture a 32bit.
    slackpkgplus.x86_64.sample:
    Il file di configurazione di esempio per le architetture a 64bit.

/usr/libexec/slackpkg/zchangelog.sh
    Questo script popola un changelog globale /var/lib/slackpkg/RepoChangeLog.txt ad ogni slackpkg update con l'elenco di tutte le modifiche rilevate. E' disabilitato per default. Per abilitarlo lanciare il seguente come root (aprite il file stesso per ulteriori dettagli) # cd /usr/libexec/slackpkg/functions.d
    # ln -sf ../zchangelog.sh .

NOTE

Disclaimer
    slackpkg+ è un plugin di slackpkg, ma non per questo può essere considerato un tool ufficiale di slackware e non è supportato dal team di slackware. L'autore di slackpkg+ non è in alcun modo collegato agli autori dei singoli repository, né relativamente ai contenuti degli stessi né al corretto funzionamento dell'hosting. I pacchetti di terze parti non sono supportati dal team di slackware che quindi non garantirà per il loro funzionamento e non risponderà per eventuali danni che potrebbero apportare al sistema. Assicuratevi dell'autorevolezza del repository prima di usarlo in slackpkg+.

Supporto
    Se hai dubbi o hai trovato bug puoi segnalarli all'autore scrivendo all'indirizzo email zerouno@slacky.it. Puoi anche seguire la discussione ufficiale in italiano su slacky.eu:
    http://www.slacky.eu/forum/viewtopic.php?t=34536
    oppure in inglese su linuxquestions.org:
    http://www.linuxquestions.org/questions/showthread.php?p=4780861

Ringraziamenti
    Gran parte del codice di slackpkg+ è scritto da phenixia2003 di linuxquestions; a lui va un grande ringraziamento. Per tutti gli altri contributori cercare "thank" nel ChangeLog.
    Un ringraziamento va anche a chi ha testato, segnalato, consigliato o semplicemente usato slackpkg+
    Ma il ringraziamento più grande va a chi compila pacchetti, genera e mantiene i repository, senza i quali slackpkg+ non ha motivo di esistere.

VEDI ANCHE
slackpkg(8) pkgtool(8) installpkg(8) upgradepkg(8) removepkg(8) slackpkg.conf(5)