Capitolo 2. Gestione dei pacchetti in Debian

Indice

2.1. Prerequisiti per la gestione dei pacchetti Debian
2.1.1. Debian package management system
2.1.2. Configurazione dei pacchetti
2.1.3. Precauzioni base
2.1.4. Una vita di aggiornamenti senza fine
2.1.5. Nozioni di base sugli archivi Debian
2.1.6. Debian è al 100% software libero
2.1.7. Dipendenze dei pacchetti
2.1.8. Il flusso di eventi nella gestione dei pacchetti
2.1.9. Prima risposta a problemi di gestione dei pacchetti
2.1.10. Come scegliere i pacchetti Debian
2.1.11. How to cope with conflicting requirements
2.2. Operazioni base per la gestione dei pacchetti
2.2.1. Confronti apt - apt-get / apt-cache - aptitude
2.2.2. Operazioni base per la gestione dei pacchetti dalla riga di comando
2.2.3. Uso interattivo di aptitude
2.2.4. Associazioni dei tasti per aptitude
2.2.5. Viste dei pacchetti in aptitude
2.2.6. Opzioni per i metodi di ricerca in aptitude
2.2.7. La struttura delle espressioni regolari di aptitude
2.2.8. Risoluzione delle dipendenze di aptitude
2.2.9. Registri delle attività sui pacchetti
2.3. Esempi di operazioni con aptitude
2.3.1. Seeking interesting packages
2.3.2. Elencare pacchetti in base alla corrispondenza del nome con espressioni regolari
2.3.3. Sfogliare le corrispondenze ad una espressione regolare
2.3.4. Eliminare completamente i pacchetti rimosssi
2.3.5. Mettere ordine nello stato di installazione automatico/non automatico
2.3.6. Aggiornamento di tutto il sistema
2.4. Operazioni avanzate per la gestione dei pacchetti
2.4.1. Operazioni avanzate per la gestione dei pacchetti dalla riga di comando
2.4.2. Verifica dei pacchetti installati
2.4.3. Salvaguardarsi da problemi coi pacchetti
2.4.4. Cercare tra i metadati dei pacchetti
2.5. Aspetti tecnici della gestione dei pacchetti in Debian
2.5.1. Metadati degli archivi
2.5.2. File "Release" nella directory principale ed autenticità
2.5.3. File "Release" a livello di archivio
2.5.4. Recuperare i metadati per un pacchetto
2.5.5. Lo stato dei pacchetti per APT
2.5.6. Lo stato dei pacchetti per aptitude
2.5.7. Copie locali dei pacchetti scaricati
2.5.8. Nomi dei file di pacchetto di Debian
2.5.9. Il comando dpkg
2.5.10. Il comando update-alternatives
2.5.11. Il comando dpkg-statoverride
2.5.12. Il comando dpkg-divert
2.6. Ripristino da un sistema con problemi
2.6.1. Installazione fallita a causa di dipendenze mancanti
2.6.2. Errori di cache dei dati dei pacchetti
2.6.3. Incompatibilità con vecchie configurazioni utente
2.6.4. Pacchetti diversi con file sovrapposti
2.6.5. Risolvere problemi negli script di pacchetto
2.6.6. Ripristinare con il comando dpkg
2.6.7. Ripristinare i dati sui pacchetti selezionati
2.7. Suggerimenti per la gestione dei pacchetti
2.7.1. Chi ha caricato il pacchetto?
2.7.2. Limitare l'uso di banda di APT per gli scaricamenti
2.7.3. Scaricare ed aggiornare automaticamente i pacchetti
2.7.4. Updates e Backports
2.7.5. External package archives
2.7.6. Packages from mixed source of archives without apt-pinning
2.7.7. Tweaking candidate version with apt-pinning
2.7.8. Bloccare i pacchetti da installare perché "Raccomandati"
2.7.9. Usare e aggiornare testing con alcuni pacchetti da unstable
2.7.10. Usare e aggiornare unstable con alcuni pacchetti da experimental
2.7.11. Retrocessione di emergenza alla versione precedente
2.7.12. Il pacchetto equivs
2.7.13. Fare il port di un pacchetto nel sistema stabile
2.7.14. Server proxy per APT
2.7.15. Ulteriori letture sulla gestione dei pacchetti
[Nota] Nota

Questo capitolo è stato scritto assumendo che il rilascio stabile più recente abbia nome in codice: bookworm.

The data source of the APT system is collectively refered as the source list in this document . This can be defined anywhere in the "/etc/apt/sources.list" file, "/etc/apt/sources.list.d/*.list" files, or "/etc/apt/sources.list.d/*.source" files.

Debian è un'organizzazione di volontari che crea distribuzioni coerenti di pacchetti binari precompilati di software libero e li distribuisce dal suo archivio.

L'archivio Debian viene fornito da molti siti mirror remoti per l'accesso con i metodi HTTP e FTP. È anche disponibile come CD-ROM/DVD.

L'attuale sistema di gestione dei pacchetti di Debian che può utilizzare tutte queste risorse è APT (Advanced Packaging Tool).

Il sistema di gestione dei pacchetti di Debian, se usato in modo corretto, permette all'utente di installare dall'archivio insiemi coerenti di pacchetti binari sul sistema. Attualmente ci sono 71196 pacchetti disponibili per l'architettura amd64.

Il sistema di gestione dei pacchetti di Debian ha una storia ricca e fornisce molti programmi con interfacce per l'utente finale e molti metodi di backend per l'accesso agli archivi tra cui scegliere. Attualmente le scelte raccomandate sono le seguenti.

  • apt(8) per tutte le operazioni interattive dalla riga di comando, incluse le installazioni e le rimozioni di pacchetti nonché gli aggiornamenti dist-upgrade.

  • apt-get(8) per chiamare il sistema di gestione dei pacchetti Debian da script. È anche un'opzione di ripiego quando non è disponibile apt (spesso in sistemi Debian più vecchi).

  • aptitude(8) per un'interfaccia testuale interattiva per gestire i pacchetti installati e per cercare i pacchetti disponibili.


[Avvertimento] Avvertimento

Non installare pacchetti da una miscela casuale di suite. Probabilmente si disgrega la coerenza tra i pacchetti che richiede una conoscenza approfondita dalla gestione del sistema, come dell'ABI del compilatore, versione delle librerie, funzionalità dell'interprete, ecc.

The newbie Debian system administrator should stay with the stable release of Debian while applying only security updates. Until you understand the Debian system very well, you should follow the following precautions.

  • Do not include testing or unstable in the source list.

  • Do not mix standard Debian with other non-Debian archives such as Ubuntu in the source list .

  • Non creare il file "/etc/apt/preferences".

  • Non cambiare il comportamento degli strumenti di gestione dei pacchetti attraverso i loro file di configurazione senza capire a pieno il loro effetto.

  • Non installare pacchetti presi qua e là con "dpkg -i pacchetto_a_caso".

  • Non installare mai pacchetti presi qua e là con "dpkg --force-all -i pacchetto_a_caso".

  • Non cancellare o alterare i file in "/var/lib/dpkg/".

  • Non sovrascrivere file di sistema, installando direttamente programmi software compilati dai sorgenti.

    • Se necessario, installarli in "/usr/local" o "/opt".

The non-compatible effects caused by violating above precautions to the Debian package management system may leave your system unusable.

Gli amministratori di sistema Debian seri, che gestiscono server di importanza critica, dovrebbero usare particolari precauzioni.

  • Non installare alcun pacchetto, compresi quelli di aggiornamenti di sicurezza di Debian, senza averli attentamente testati con la propria particolare configurazione in condizioni sicure.

    • Alla fin fine è l'amministratore di sistema ad essere responsabile del proprio sistema.

    • La lunga tradizione di stabilità dei sistemi Debian non è di per sé una garanzia.

[Attenzione] Attenzione

Per i server di produzione, è raccomandata la suite stable con gli aggiornamenti di sicurezza. Lo stesso vale per i PC desktop su cui si investono sforzi di amministrazione limitati.

Nonostante gli avvertimenti descritti prima, si sa che molti lettori di questo documento possono volere eseguire le più nuove suite testing o unstable.

L'illuminazione data dalla lettura di ciò che segue salva l'utente dall'eterna lotta karmica con l'inferno degli aggiornamenti e gli fa raggiungere il nirvana Debian.

Questa lista è pensata per l'ambiente Desktop amministrato da soli.

  • Usare la suite testing dato che è in pratica il rilascio in progresso gestito automagicamente dall'infrastruttura di QA dell'archivio Debian come la integrazione continua di Debian, le pratiche di caricamento dei soli sorgenti e il tracciamento delle transizioni delle librerie. I pacchetti nella suite testing vengono aggiornati sufficientemente di frequente da fornire tutte le funzionalità più recenti.

  • Set the codename corresponding to the testing suite ("trixie" during the bookworm-as-stable release cycle) in the source list.

  • Manually update this codename in the source list to the new one only after assessing situation by yourself for about a month after the major suite release. The Debian user and developer mailing list are good sources of information for this, too.

L'uso della suite unstable non è raccomandato. La suite unstable è buona per fare il debug dei pacchetti come sviluppatore ma tende ad esporre l'utente a rischi non necessari per il normale uso per desktop. Anche se la suite unstable del sistema Debian sembra molto stabile per la maggior parte del tempo, ci sono stati alcuni problemi con i pacchetti e alcuni di questi non sono stati affatto banali da risolvere.

Ecco alcune idee per misure precauzionali di base per assicurare un recupero facile e veloce da bug nei pacchetti Debian.

  • Impostare il sistema per avere due partizioni avviabili installando la suite stable di Debian in un'altra partizione

  • Tenere a portata di mano il CD di installazione per l'avvio di ripristino

  • Considerare l'installazione di apt-listbugs per controllare le informazioni del Sistema Debian di tracciamento dei Bug (BTS) prima degli aggiornamenti

  • Imparare l'infrastruttura del sistema dei pacchetti abbastanza bene da poter aggirare il problema.

[Attenzione] Attenzione

Se non si è in grado di intraprendere nessuna di queste azioni precauzionali, probabilmente non si è pronti per le suite testing e unstable.

[Suggerimento] Suggerimento

La politica ufficiale per gli archivi Debian è definita nel Capitolo 2 - "L'archivo Debian", del manuale Debian Policy.

Guardiamo l'archivio Debian dalla prospettiva dell'utente.

For a system user, the Debian archive is accessed using the APT system.

The APT system specifies its data source as the source list and it is described in sources.list(5).

For the bookworm system with the typical HTTP access, the source list in one-line-style as the following:

deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free

deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free

Alternatively, the equivqlent source list in deb822-style as the following.

Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: bookworm
Components: main non-free-firmware contrib non-free

Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: bookworm-security
Components: main non-free-firmware contrib non-free

Key points of the source list are followings.

  • One-line-style format

    • It's definition files are in the "/etc/apt/sources.list" file and "/etc/apt/sources.list.d/*.list" files.

    • Each line defines the data source for the APT system.

    • Le righe "deb" definiscono voci per pacchetti binari.

    • Le righe "deb-src" definiscono voci per i pacchetti sorgenti.

    • Il primo argomento è l'URL radice dell'archivio Debian.

    • The 2nd argument is the distribution name using either the suite name or the codename.

    • Il terzo argomento e quelli seguenti sono l'elenco dei nomi di aree valide dell'archivio Debian.

  • Deb822-style format

    • It's definition files are in "/etc/apt/sources.list.d/*.source" files.

    • Each block of lines separated by a blank line defines the data source for the APT system.

    • The "Types:" stanza defines the list of types such as "deb" and "deb-src".

    • The "URIs:" stanza defines the list of root URIs of the Debian archive.

    • The "Suites:" stanza defines the list of distribution names using either the suite name or the codename.

    • The "Components:" stanza defines the list of valid archive area names of the Debian archive.

The definition for "deb-src" can safely be omitted if it is just for aptitude which does not access source related meta data. It speeds up the updates of the archive meta data.

The URL can be "http://", "ftp://", "file://", ….

Lines starting with "#" are comments and ignored.

Here, I tend to use codename "bookworm" or "trixie" instead of suite name "stable" or "testing" to avoid surprises when the next stable is released.

[Suggerimento] Suggerimento

If "sid" is used in the above example instead of "bookworm", the "deb: http://security.debian.org/ …" line or its deb822 equivalent content for security updates in the source list is not required. This is because there is no security update archive for "sid" (unstable).

Here is the list of URL of the Debian archive sites and suite name or codename used in the configuration file after the bookworm release.


[Attenzione] Attenzione

Only pure stable release with security updates provides the best stability. Running mostly stable release mixed with some packages from testing or unstable release is riskier than running pure unstable release for library version mismatch etc. If you really need the latest version of some programs under stable release, please use packages from stable-updates and http://backports.debian.org (see Sezione 2.7.4, «Updates e Backports») services. These services must be used with extra care.

[Attenzione] Attenzione

Fondamentalmente si dovrebbe mettere una sola tra le suite stable, testing o unstable nelle righe "deb". Se si elenca una combinazione delle suite stable, testing e unstable nelle righe "deb", il programma APT verrà rallentato e solo l'archivio più recente avrà effetto. Elencare più di una voce ha senso quando viene usato il file "/etc/apt/preferences" con scopi ben precisi (vedere Sezione 2.7.7, «Tweaking candidate version with apt-pinning»).

[Suggerimento] Suggerimento

For the Debian system with the stable suite, it is a good idea to include the content with "http://security.debian.org/" in the source list to enable security updates as in the example above.

[Nota] Nota

I bug che riguardano la sicurezza per l'archivio stable vengono risolti dal Debian Security Team, la cui attività è piuttosto rigorosa ed affidabile. I bug per l'archivio testing possono essere risolti dal Debian Security Team. Per svariate ragioni questa attività non è così rigorosa come quella per stable e potrebbe essere necessario attendere la migrazione di pacchetti unstable corretti. I bug per l'archivio unstable sono corretti dal manutentore del pacchetto; i pacchetti unstable attivamente mantenuti sono solitamente in una forma piuttosto buona dato che sfruttano le più recenti correzioni a monte relative alla sicurezza. Per informazioni sul modo in cui Debian gestisce i bug relativi alla sicurezza, vedere le FAQ Debian sulla sicurezza.


Nella tabella soprastante il numero dei pacchetti è per l'architettura amd64. L'area main fornisce il sistema Debian (vedere Sezione 2.1.6, «Debian è al 100% software libero»).

L'organizzazione dell'archivio Debian può essere studiata meglio puntando il proprio browser a ciascuno degli URL dell'archivio con aggiunto in coda dists o pool.

Ci si riferisce alla distribuzione in due modi, con la suite o con il nome in codice. In alternativa la parola distribuzione viene usata come sinonimo di suite in molta documentazione. La relazione tra la suite e il nome in codice può essere riassunta nel modo seguente.


La storia dei nomi in codice è descritta nelle FAQ Debian: 6.2.1 Quali altri nomi in codice sono stati usati in passato?

Nella terminologia per gli archivi Debian più precisa, la parola "sezione" è usata specificatamente per la categorizzazione dei pacchetti in base all'area di applicazione. (Anche se l'espressione "sezione main" può essere a volte usata per descrivere l'area dell'archivio Debian chiamata "main".)

Ogni volta che uno sviluppatore Debian (DD) carica un nuovo pacchetto nell'archivio unstable (passando per incoming), gli viene richiesto di assicurare che i pacchetti caricati siano compatibili con l'insieme più recente di pacchetti nell'archivio unstable più recente.

Se un DD rompe questa compatibilità intenzionalmente per importanti aggiornamenti di librerie, ecc. di solito viene fatto un annuncio nella mailing list debian-devel, ecc.

Prima di muovere un insieme di pacchetti dall'archivio unstable all'archivio testing, lo script di gestione degli archivio Debian non solo controlla la maturità (circa 10 giorni di età) e lo stato delle segnalazioni di bug RC per i pacchetti, ma cerca anche di assicurare che siano compatibili con il più recente insieme di pacchetti nell'archivio testing. Questo processo rende l'archivio testing molto aggiornato e usabile.

Attraverso il graduale processo di freeze dell'archivio, giudato dal team di rilascio, l'archivio testing viene fatto maturare con un po' di intervento manuale per renderlo completamente coerente e libero da bug. Quindi viene creato il nuovo rilascio stable assegnando il nome in codice per il vecchio archivio testing al nuovo archivio stable e creando il nuovo nome in codice per il nuovo archivio testing. Il contenuto iniziale del nuovo archivio testing è esattamente lo stesso dell'archivio stable appena rilasciato.

Sia l'archivio unstable sia l'archivio testing possono soffrire di problemi temporanei a causa di diversi fattori.

  • Pacchetti difettosi caricati nell'archivio (principalmente per unstable)

  • Ritardo nell'accettazione di nuovi pacchetti nell'archivio (principalmente per unstable)

  • Problemi nei tempi di sincronizzazione degli archivi (sia per testing sia per unstable)

  • Interventi manuali all'archivio, come rimozione di pacchetti (più per testing) ecc.

Perciò se si decide di usare questi archivi, si dovrebbe essere in grado di risolvere o aggirare questo tipo di problemi.

[Attenzione] Attenzione

Per qualche mese circa dopo un nuovo rilascio stable, la maggior parte degli utenti desktop dovrebbe usare l'archivio stable con i suoi aggiornamenti di sicurezza, anche se di solito usano gli archivi unstable o testing. Durante questo periodo di transizione, entrambi gli archivi unstable e testing non sono adatti alla maggior parte degli utenti. È difficile mantenere il proprio sistema in condizioni buone di funzionamento con l'archivio unstable dato che è affetto da ondate di aggiornamenti importanti di pacchetti fondamentali. Anche l'archivio testing non è molto utile perché contiene per lo più le stesse cose dell'archivio stable senza il suo supporto per la sicurezza (Debian testing-security-announce 2008-12). Dopo circa un mese, l'archivio unstable potrebbe essere utilizzabile se si è cauti.

[Suggerimento] Suggerimento

Quando si usa l'archivio testing, i problemi causati da un pacchetto rimosso vengono solitamente aggirati installando il corrispondente pacchetto dall'archivio unstable che è caricato per risolvere un bug.

Vedere il manuale Debian Policy per le definizioni degli archivi.

Debian è al 100% software libero perché:

  • Debian installa in modo predefinito solo software libero per rispettare le libertà dell'utente.

  • Debian fornisce in main solo software libero.

  • Debian raccomanda l'esecuzione del solo software libero contenuto in main.

  • No packages in main depend nor recommend packages in non-free nor non-free-firmware nor contrib.

Alcune persone si chiedono se i seguenti due fatti siano in contraddizione o meno tra loro.

Queste due cose non sono in contraddizione, perché:

  • Il sistema Debian è libero al 100% e i suoi pacchetti sono ospitati dai server Debian nell'area main.

  • Packages outside of the Debian system are hosted by Debian servers in the non-free, non-free-firmware and contrib areas.

Queste sono spiegate in dettaglio nella quarta e nella quinta voce del Contratto sociale Debian:

  • Le nostre priorità sono gli utenti ed il software libero

    • Ci faremo guidare dai bisogni dei nostri utenti e della comunità del software libero. Metteremo al primo posto i loro interessi. Supporteremo le necessità dei nostri utenti di operare in molti diversi tipi di ambienti di calcolo. Non ci opporremo alle opere non libere che siano state pensate per l'uso in sistemi Debian e non richiederemo compensi a chi crea o usa queste opere. Permetteremo ad altri di creare distribuzioni contenenti sia il sistema Debian che altre opere, senza richiedere compensi. Per raggiungere questi scopi, forniremo un sistema integrato di materiali di alta qualità senza alcuna restrizione legale che limiti qualsiasi uso del sistema.

  • Opere che non rispettano i nostri standard free software

    • We acknowledge that some of our users require the use of works that do not conform to the Debian Free Software Guidelines. We have created "non-free", "non-free-firmware" and "contrib" areas in our archive for these works. The packages in these areas are not part of the Debian system, although they have been configured for use with Debian. We encourage CD manufacturers to read the licenses of the packages in these areas and determine if they can distribute the packages on their CDs. Thus, although non-free works are not a part of Debian, we support their use and provide infrastructure for non-free packages (such as our bug tracking system and mailing lists). The Debian official media may include firmware that is otherwise not part of the Debian system to enable use of Debian with hardware that requires such firmware.

[Nota] Nota

The actual text of the 5th term in the current Debian Social Contract 1.2 is slightly different from the above text. This editorial deviation is intensional one to make this user document consistent without changing the real content of the Social Contract.

Users should be aware of the risks of using packages in the non-free, non-free-firmware and contrib areas:

  • mancanza di libertà legata a tali pacchetti software

  • mancanza di supporto da parte di Debian per tali pacchetti software (Debian non può supportare del software in maniera adeguata senza avere accesso al suo codice sorgente)

  • contaminazione del sistema Debian libero al 100%

Il documento Debian Free Software Guidelines è lo standard di Debian per il software libero. Debian interpreta la parola "software" nel suo senso più ampio includendo documentazione, firmware, logo e dati artistici nel pacchetto. Questo fa sì che gli standard Debian per il software libero siano molto severi.

Typical non-free, non-free-firmware and contrib packages include freely distributable packages of following types:

  • Pacchetti di documentazione distribuiti sotto la GNU Free Documentation License con sezioni invarianti come quelli per GCC e Make (per lo più presenti nella sezione non-free/doc).

  • Firmware packages containing sourceless binary data such as ones listed in Sezione 9.10.5, «Driver per hardware e firmware» as non-free-firmware. (mostly found in the non-free-firmware/kernel section.)

  • Pacchetti di giochi e tipi di carattere con restrizioni sull'uso a scopo commerciale o sulla modifica dei contenuti.

Please note that the number of non-free, non-free-firmware and contrib packages is less than 2% of that of main packages. Enabling access to the non-free, non-free-firmware and contrib areas does not obscure the source of packages. Interactive full screen use of aptitude(8) provides you with full visibility and control over what packages are installed from which area to keep your system as free as you wish.

Il sistema Debian offre un insieme coerente di pacchetti binari grazie al suo meccanismo di dichiarazione, nei campi di controllo dei file, delle dipendenze binarie basate su versioni . Ecco una definizione molto semplificata delle dipendenze.

  • "Depends" (Dipende)

    • Dichiara una dipendenza assoluta e tutti i pacchetti elencati in questo campo devono essere installati insieme a quello scelto o prima.

  • "Pre-Depends" (Pre-dipende)

    • È come "Depends", tranne che richiede l'installazione completa dei pacchetti elencati in anticipo.

  • "Recommends" (Raccomanda)

    • Dichiara una dipendenza forte, ma non assoluta. La maggior parte degli utenti non vorrà il pacchetto in esame a meno che tutti i pacchetti elencati non siano installati.

  • "Suggests" (Consiglia)

    • Dichiara una dipendenza debole. La maggior parte degli utenti del pacchetto potrebbe trarre vantaggio dall'installazione dei pacchetti elencati in questo campo, ma può ottenere una funzionalità adeguata senza di essi.

  • "Enhances" (Migliora)

    • Dichiara una dipendenza debole come "Suggests" ma in verso opposto.

  • "Breaks" (Rompe)

    • Dichiara un'incompatibilità del pacchetto di solito con qualche specifica versione. Generalmente la soluzione è di aggiornare tutti i pacchetti elencati in questo campo.

  • "Conflicts" (Va in conflitto)

    • Dichiara una incompatibilità assoluta. Tutti i pacchetti elencati in questo campo devono essere rimossi per installare il pacchetto in esame.

  • "Replaces" (Sostituisce)

    • Viene dichiarata quando i file installati dal pacchetto in esame sostituiscono i file nei pacchetti elencati.

  • "Provides" (Fornisce)

    • Viene dichiarata quando il pacchetto fornisce tutti i file e le funzionalità nei pacchetti elencati.

[Nota] Nota

Notare che una buona configurazione per un pacchetto virtuale deve avere "Provides", "Conflicts" e "Replaces" simultaneamente definiti. Questo assicura che in un dato momento possa essere installato un solo pacchetto reale che fornisce il pacchetto virtuale.

La definizione ufficiale, compresa quella di dipendenza dei sorgenti, può essere trovata nel manuale Debian Policy, Capitolo 7, Dichiarare le relazioni tra i pacchetti.

Ecco un riassunto semplificato del flusso di eventi nella gestione dei pacchetti con APT.

Sono stati intenzionalmente omessi dettagli tecnici a favore di una più chiara vista d'insieme.

Whatever suite of Debian system you may decide to use, you may still wish to run versions of programs which aren't available in that suite. Even if you find binary packages of such programs in other Debian suites or in other non-Debian resources, their requirements may conflict with your current Debian system.

Although you can tweak package management system with apt-pinning technique etc. as described in Sezione 2.7.7, «Tweaking candidate version with apt-pinning» to instal such out-of-sync binary packages, such tweaking approaches have only limited use cases since they may break those programs and your system.

Before brutally installing such out-of-sync packages, you should seek all available alternative safer technical solutions which are compatible with your current Debian syetem.

Le operazioni di gestione dei pacchetti basate sui repository sul sistema Debian possono essere eseguite da molti strumenti di gestione dei pacchetti basati su APT disponibili sul sistema Debian. Qui, verranno spiegati 3 strumenti base di gestione dei pacchetti: apt, apt-get / apt-cache e aptitude.

Per operazioni di gestione dei pacchetti che comportano l'installazione o l'aggiornamento dei metadati dei pacchetti, è necessario avere privilegi di root.

Anche se aptitude è uno strumento interattivo molto bello ed è quello principalmente usato dall'autore, si dovrebbero conoscere alcuni avvertimenti:

I comandi apt-get e apt-cache sono gli strumenti di gestione dei pacchetti basati su APT più a livello base.

  • apt-get e apt-cache offrono solo l'interfaccia utente a riga di comando.

  • apt-get è più adatto per gli aggiornamenti principali del sistema tra rilasci diversi, ecc.

  • apt-get offre un sistema robusto di risoluzione delle dipendenze dei pacchetti.

  • apt-get è meno avido di risorse di sistema. Consuma meno memoria ed è più veloce durante l'esecuzione.

  • apt-cache offre una ricerca standard, basata su espressioni regolari, nei nomi e nelle descrizioni dei pacchetti.

  • apt-get e apt-cache possono gestire più versioni dei pacchetti usando /etc/apt/preferences, ma è piuttosto elaborato farlo.

Il comando apt è un'interfaccia a riga di comando di alto livello per la gestione dei pacchetti. Fondamentalmente è un wrapper di apt-get, apt-cache e comandi simili, originariamente pensata come interfaccia per l'utente finale e abilita in modo predefinito alcune opzioni più adatte per l'uso interattivo.

  • apt fornisce una comoda barra di avanzamento quando si installano pacchetti usando apt install.

  • apt elimina in modo predefinito i pacchetti .deb nella cache dopo l'installazione con successo dei pacchetti scaricati.

[Suggerimento] Suggerimento

È raccomandato agli utenti di usare il nuovo comando apt(8) per l'uso interactive e di usare i comandi apt-get(8) e apt-cache(8) negli script di shell.

Il comando aptitude è lo strumento di gestione dei pacchetti basato su APT più versatile.

  • aptitude offre un'interfaccia utente testuale interattiva a schermo intero.

  • aptitude offre anche un'interfaccia utente a riga di comando.

  • aptitude è più adatto per la gestione interattiva quotidiana dei pacchetti, come l'ispezione dei pacchetti installati e la ricerca dei pacchetti disponibili.

  • aptitude è più avido di risorse di sistema. Consuma più memoria ed è più lento durante l'esecuzione.

  • apt-cache offre una ricerca migliorata, basata su espressioni regolari, su tutti i metadati dei pacchetti.

  • aptitude può gestire più versioni dei pacchetti senza usare /etc/apt/preferences e farlo è piuttosto intuitivo.

Ecco alcune operazioni base di gestione dei pacchetti dalla riga di comando usando apt(8), aptitude(8) e apt-get(8) /apt-cache(8).

Tabella 2.6. Operazioni base di gestione dei pacchetti dalla riga di comando usando aptitude(8) e apt-get(8) /apt-cache(8)

sintassi per apt sintassi per aptitude sintassi per apt-get/apt-cache descrizione
apt update aptitude update apt-get update aggiorna i metadati dell'archivio dei pacchetti
apt install pippo aptitude install pippo apt-get install pippo installa la versione candidata del pacchetto "pippo" con le sue dipendenze
apt upgrade aptitude safe-upgrade apt-get upgrade installa le versioni candidate dei pacchetti installati senza rimuovere altri pacchetti
apt full-upgrade aptitude full-upgrade apt-get dist-upgrade installa le versioni candidate dei pacchetti installati e rimuove, se necessario, altri pacchetti
apt remove pippo aptitude remove pippo apt-get remove pippo rimuove il pacchetto "pippo" lasciando i suoi file di configurazione
apt autoremove N/D apt-get autoremove rimuove i pacchetti installati automaticamente che non sono più necessari
apt purge pippo aptitude purge pippo apt-get purge pippo elimina completamente il pacchetto "pippo" con i suoi file di configurazione
apt clean aptitude clean apt-get clean pulisce completamente il repository locale dei file dei pacchetti scaricati
apt autoclean aptitude autoclean apt-get autoclean pulisce il repository locale dei file dei pacchetti scaricati che sono obsoleti
apt show pippo aptitude show pippo apt-cache show pippo mostra informazioni dettagliate sul pacchetto "pippo"
apt search regex aptitude search regex apt-cache search regex cerca i pacchetti che corrispondono all'espressione regolare regex
N/D aptitude why regex N/D spiega le ragioni per cui i pacchetti che corrispondono a regex dovrebbero essere installati
N/D aptitude why-not regex N/D spiega le ragioni per cui i pacchetti che corrispondono a regex non dovrebbero essere installati
apt list --manual-installed aptitude search '~i!~M' apt-mark showmanual elenca i pacchetti installati manualmente

apt / apt-get e aptitude possono essere mescolati senza grandi problemi.

«aptitude why regex» può mostrare ancor più informazioni se usato come «aptitude -v why regex». Informazioni simili possono essere ottenute con «apt rdepends package» o «apt-cache rdepends package».

Quando il comando aptitude è avviato in modalità a riga di comando e si trova davanti a problemi come conflitti tra pacchetti, si può passare alla modalità interattiva a tutto schermo premendo successivamente il tasto "e" al prompt.

[Nota] Nota

Sebbene il comando aptitude sia dotato di moltissime funzionalità come il suo risolutore avanzato di conflitti tra pacchetti, questa complessità ha causato (o può ancora causare) alcune regressioni quali i Bug nr. 411123, Bug nr. 514930 e Bug nr. 570377. In caso di dubbio, preferire i comandi apt, apt-get e apt-cache al comando aptitude.

Si possono usare opzioni per il comando immediatamente dopo "aptitude".


Per maggiori informazioni vedere aptitude(8) e il "manuale utente di aptitude" in "/usr/share/doc/aptitude/README".

Quelle che seguono sono le associazioni di tasti degne di nota usate, nella modalità a schermo intero, per sfogliare lo stato dei pacchetti e per impostare "azioni pianificate" su di essi.


Le espressioni regolari usate per specificare il nome di pacchetto nella riga di comando e nel prompt del menu dopo aver premuto "l" o "//" sono descritte in seguito. Le espressioni regolari di aptitude possono esplicitamente trovare corrispondenze con nomi di pacchetto usando una stringa che inizia con "~n seguita dal nome del pacchetto.

[Suggerimento] Suggerimento

È necessario premere "U" per aggiornare tutti i pacchetti installati alla versione candidata nell'interfaccia interattiva. Altrimenti vengono aggiornati alla versione candidata solo i pacchetti selezionati e quelli da una cui particolare versione dipendono altri.

Nella modalità interattiva a tutto schermo di aptitude(8), i pacchetti nell'elenco vengono mostrati come nell'esempio seguente.

idA   libsmbclient                             -2220kB 3.0.25a-1  3.0.25a-2

Il significato degli elementi di questa riga, partendo da sinistra, è il seguente.

  • Il flag di "stato attuale" (la prima lettera)

  • Il flag di "azione pianificata" (la seconda lettera)

  • Il flag "automatico" (la terza lettera)

  • Il nome del pacchetto

  • Il cambiamento in termini di uso dello spazio su disco collegato dall'"azione pianificata"

  • La versione attuale del pacchetto

  • La versione candidata del pacchetto

[Suggerimento] Suggerimento

L'elenco completo dei flag è fornito alla fine della schermata mostrata di Aiuto mostrata se si preme "?".

La versione candidata è scelta in base alle preferenze locali attuali (vedere apt_preferences(5) e Sezione 2.7.7, «Tweaking candidate version with apt-pinning»).

Diversi tipi di viste per i pacchetti sono disponibili nel menu "Viste".


[Nota] Nota

È estremamente benvenuto ogni aiuto per migliorare l'assegnazione di etichette Debtags ai pacchetti!

La "Vista dei pacchetti" standard organizza i pacchetti un po' nello stile di dselect con alcune funzionalità extra.


[Suggerimento] Suggerimento

La vista dei Task può essere usata per scegliere a uno a uno i pacchetti per le proprie attività.

La struttura delle espressioni regolari di aptitude è quella di ERE (vedere Sezione 1.6.2, «Espressioni regolari») estese in stile mutt ed il significato delle speciali regole estese di corrispondenza, specifiche di aptitude, è il seguente.

Tabella 2.11. Elenco delle regole per espressioni regolari di aptitude

descrizione della regola estesa di corrispondenza struttura della espressione regolare
corrispondenza con il nome di pacchetto ~nregex_nome
corrispondenza con la descrizione ~dregex_descrizione
corrispondenza con il nome del task ~tregex_task
corrispondenza con il debtag ~Gregex_debtag
corrispondenza con il manutentore ~mregex_mantainer
corrispondenza con la sezione del pacchetto ~sregex_sezione
corrispondenza con la versione del pacchetto ~Vregex_versione
corrispondenza con l'archivio ~A{bookworm,trixie,sid}
corrispondenza con l'origine ~O{debian,…}
corrispondenza con la priorità ~p{extra,important,optional,required,standard}
corrispondenza con pacchetti essenziali ~E
corrispondenza con pacchetti virtuali ~v
corrispondenza con pacchetti nuovi ~N
corrispondenza con azioni pendenti ~a{install,upgrade,downgrade,remove,purge,hold,keep}
corrispondenza con pacchetti installati ~i
corrispondenza con pacchetti installati e con l'indicatore A (pacchetti installati automaticamente) ~M
corrispondenza con i pacchetti installati e senza l'indicatore A (pacchetti selezionati dall'amministratore) ~i!~M
corrispondenza con pacchetti installati che sono aggiornabili ~U
corrispondenza con pacchetti rimossi ma non eliminati completamente ~c
corrispondenza con pacchetti rimossi, eliminati o che possono essere rimossi ~g
corrispondenza con pacchetti che dichiarano problemi di dipendenze ~b
corrispondenza con pacchetti con problemi di dipendenze di tipo tipo ~B<tipogt;
corrispondenza con pacchetti modello con dipendenze di tipo tipo ~D[tipo:]modello
corrispondenza con pacchetti modello con dipendenze non soddisfatte di tipo tipo ~DB[tipo:]modello
corrispondenza con pacchetti verso i quali il pacchetto che corrisponde a modello dichiara una dipendenza di tipo tipo ~R[tipo:]modello
corrispondenza con pacchetti verso i quali il pacchetto termine dichiara una dipendenza non soddisfatta di tipo tipo ~RB[tipo:]modello
corrispondenza con pacchetti da cui dipende un qualche altro pacchetto installato ~R~i
corrispondenza con pacchetti da cui non dipende alcun pacchetto installato !~R~i
corrispondenza con pacchetti da cui dipende o che vengono raccomandati da qualche altro pacchetto ~R~i|~Rrecommends:~i
corrispondenza con pacchetto modello con filtro sulle versioni ~S filtro modello
corrispondenza con tutti i pacchetti (vero) ~T
corrispondenza con nessun pacchetto (falso) ~F

  • Il formato dell'espressione regolare è la stessa di quello ERE usato nei tipici strumenti per il testo in stile Unix "^", ".*", "$", ecc. come in egrep(1), awk(1) e perl(1).

  • Il tipo di relazione è uno tra depends, predepends, recommends, suggests, conflicts, replaces, provides, e definisce la relazione tra i pacchetti.

  • Il tipo di dipendenza predefinito è "depends".

[Suggerimento] Suggerimento

Quando modello_regex è una stringa vuota, mettere "~T" immediatamente dopo il comando.

Ecco alcune scorciatoie.

  • "~Ptermine" == "~Dprovides:termine"

  • "~Ctermine" == "~Dconflicts:termine"

  • "…~W termine" == "(…|termine)"

Gli utenti che hanno familiarità con mutt imparano presto, dato che la sintassi per le espressioni si è ispirata a mutt. Vedere "SEARCHING, LIMITING, AND EXPRESSIONS" nel "Manuale utente", "/usr/share/doc/aptitude/README".

[Nota] Nota

Con la versione lenny di aptitude(8), può essere usata la nuova sintassi in forma lunga come "?broken" invece del vecchio equivalente in forma breve " "~b". Il carattere di spazio " " è ora considerato uno dei caratteri che terminano l'espressione regolare, oltre al carattere tilde "~". Vedere il "Manuale utente" per la sintassi della nuova forma lunga.

Ecco alcuni esempi di operazioni con aptitude(8).

Ecco come faccio per mettere ordine nello stato di installazione automatico/non automatico per i pacchetti (dopo aver usato un installatore che non sia aptitude, ecc.).

  1. Avviare da root aptitude in modalità interattiva.

  2. Digitare "u", "U", "f" e "g" per aggiornare l'elenco dei pacchetti e i pacchetti stessi.

  3. Digitare "l" per impostare la limitazione della visualizzazione con "~i(~R~i|~Rrecommends:~i)" e digitare "M" su "Pacchetti installati" per marcarli come installati automaticamente.

  4. Digitare "l" per impostare la limitazione della visualizzazione dei pacchetti con "~prequired|~pimportant|~pstandard|~E" e digitare "m" su "Pacchetti installati" per marcarli come installati manualmente.

  5. Digitare "l" per impostare la limitazione della visualizzazione dei pacchetti con "~i!~M" e rimuovere i pacchetti inutilizzati digitando "-" su ciascuno di essi dopo averli visualizzati digitando "[" su "Pacchetti installati".

  6. Digitare "l" per impostare la limitazione della visualizzazione dei pacchetti con "~i"; poi digitare "m" su "Task" per marcare quei pacchetti come installati manualmente.

  7. Uscire da aptitude.

  8. Avviare "apt-get -s autoremove|less" da root per controllare quelli che non sono usati.

  9. Riavviare aptitude in modalità interattiva e segnare i pacchetti necessari con "m".

  10. Riavviare "apt-get -s autoremove|less" da root per controllare che in REMOVED siano contenuti soltanto i pacchetti attesi.

  11. Avviare "apt-get autoremove|less" da root per rimuovere automaticamente i pacchetti non utilizzati.

L'azione "m" sopra "Task" è opzionale e server per prevenire situazioni di rimozioni di massa di pacchetti in futuro.

[Nota] Nota

Quando si passa ad un nuovo rilascio, ecc. si dovrebbe considerare una installazione pulita di un nuovo sistema anche se è possibile aggiornare Debian nel modo descritto in seguito. Ciò dà la possibilità di rimuovere la spazzatura raccolta nel tempo e fornisce la migliore combinazione dei pacchetti più nuovi. Naturalmente si dovrebbe fare un backup completo del sistema in un posto sicuro (vedere Sezione 10.2, «Backup e ripristino») prima di farlo. Raccomando di creare una configurazione con due sistemi avviabili usando due diverse partizioni per avere una transizione il più lineare possibile.

You can perform system wide upgrade to a newer release by changing contents of the source list pointing to a new release and running the "apt update; apt dist-upgrade" command.

To upgrade from stable to testing or unstable during the bookworm-as-stable release cycle, you replace "bookworm" in the source list example of Sezione 2.1.5, «Nozioni di base sugli archivi Debian» with "trixie" or "sid".

In realtà si possono dover affrontare alcune complicazioni a causa di problemi di transizione dei pacchetti, per lo più a causa di dipendenze. Più è grande la differenza nell'aggiornamento, più è probabile dover affrontare problemi più grossi. Per la transizione dal vecchio rilascio stable al nuovo stable si possono leggere le nuove Note di rilascio e seguire esattamente la procedura che vi è descritta per minimizzare i problemi.

Quando si decide di passare da stable a testing prima del suo rilascio formale non ci sono Note di rilascio che possano aiutare. La differenza tra stable e testing potrebbe essere diventata piuttosto grande dopo il precendente rilascio stable e potrebbe rendere l'aggiornamento complicato.

SI dovrebbero prendere misure precauzionali per l'aggiornamento completo raccogliendo le informazioni più aggiornate da mailing list ed usando il buon senso.

  1. Leggere le "Note di rilascio" precedenti.

  2. Fare il backup dell'intero sistema (specialmente dei dati e della configurazione).

  3. Tenere a portata di mano supporti avviabili in caso di problemi con il bootloader.

  4. Informare con un buon anticipo gli utenti nel sistema.

  5. Registrare l'attività di aggiornamento con script(1).

  6. Applicare l'opzione "unmarkauto" ai pacchetti richiesti, ad esempio "aptitude unmarkauto vim, per prevenire la loro rimozione.

  7. Minimizzare i pacchetti installati per ridurre le probabilità di conflitti tra i pacchetti, ad esempio rimuovere i pacchetti dell'attività desktop.

  8. Remove the "/etc/apt/preferences" file (disable apt-pinning).

  9. Cercare di aggiornare per gradi: oldstablestabletestingunstable.

  10. Update the source list to point to new archive only and run "aptitude update".

  11. Installare, opzionalmente i nuovi pacchetti partendo dai pacchetti fondamentali, ad esempio "aptitude install perl".

  12. Eseguire il comando "apt-get -s dist-upgrade" per avere un'idea dell'impatto dell'aggiornamento.

  13. Eseguire da ultimo il comando "apt-get dist-upgrade".

[Attenzione] Attenzione

Non è saggio saltare un rilascio principale Debian quando si aggiorna da un rilascio stable ad un altro.

[Attenzione] Attenzione

Nelle "Note di rilascio" precedenti GCC, il kernel Linux, initrd-tools, Glibc, Perl, APT tool chain, ecc. hanno richiesto un po' di attenzione particolare per gli aggiornamenti dell'intero sistema.

Per gli aggiornamenti quotidiani in unstable, vedere Sezione 2.4.3, «Salvaguardarsi da problemi coi pacchetti».

Ecco un elenco di altre operazioni di gestione dei pacchetti per i quali aptitude è di livello troppo altro o manca delle funzionalità richieste.

Tabella 2.13. Elenco delle operazioni avanzate per la gestione dei pacchetti

comando azione
COLUMNS=120 dpkg -l modello_nome_pacchetto elenca lo stato di un pacchetto installato per una segnalazione di bug
dpkg -L nome_pacchetto elenca il contenuto di un pacchetto installato
dpkg -L nome_pacchetto | egrep '/usr/share/man/man.*/.+' elenca le pagine man di un pacchetto installato
dpkg -S modello_nome_file elenca i pacchetti installati che uno un file con un nome che corrisponde al modello
apt-file search modello_nome_file elenca i pacchetti nell'archivio che hanno un file con un nome che corrisponde al modello
apt-file list modello_nome_pacchetto elenca il contenuto dei pacchetti nell'archivio che corrispondono al modello
dpkg-reconfigure nome_pacchetto riconfigura il pacchetto con esattamente quel nome
dpkg-reconfigure -plow nome_pacchetto riconfigura il pacchetto con esattamente quel nome ponendo le domande più dettagliate
configure-debian riconfigura i pacchetti da un'interfaccia a tutto schermo a menu
dpkg --audit controlla il sistema alla ricerca di pacchetti parzialmente installati
dpkg --configure -a configura tutti i pacchetti parzialmente installati
apt-cache policy nome_pacchetto_binario mostra la versione disponibile, la priorità e le informazioni nell'archivio di un pacchetto binario
apt-cache madison <nome pacchetto> mostra la versione disponibile e le informazioni nell'archivio di un pacchetto
apt-cache showsrc nome_pacchetto_binario mostra informazioni sul pacchetto sorgente di un pacchetto binario
apt-get build-dep nome_pacchetto installa i pacchetti richiesti per compilare un pacchetto
aptitude build-dep nome_pacchetto installa i pacchetti richiesti per compilare un pacchetto
apt-get source nome_pacchetto scarica un sorgente (da un archivio standard)
dget URL del file dsc scarica un pacchetto sorgente (da un altro archivio)
dpkg-source -x nome_pacchetto_versione-versione_debian.dsc crea un albero dei sorgenti a partire da un insieme di pacchetti sorgenti ("*.orig.tar.gz" e "*.debian.tar.gz"/"*.diff.gz")
debuild binary compila pacchetti da un albero dei sorgenti locale
make-kpkg immagine_kernel compila un pacchetto kernel a partire da un albero dei sorgenti del kernel
make-kpkg --initrd immagine_kernel compila un pacchetto kernel con initramfs abilitato, a partire da un albero dei sorgenti
dpkg -i nome_pacchetto_versione-versione_debian_arch.deb installa un pacchetto locale nel sistema
apt install /percorso/di/nomefile_pacchetto.deb installa un pacchetto locale nel sistema, cercando al contempo di risolvere automaticamente le dipendenze
debi nome_pacchetto_versione-versione_debian_arch.dsc installa pacchetti locali nel sistema
dpkg --get-selections '*' >selection.txt salva le informazioni di stato sui pacchetti selezionati a livello di dpkg
dpkg --set-selections <selection.txt imposta le informazioni di stato sui pacchetti selezionati a livello di dpkg
echo nome_pacchetto hold | dpkg --set-selections imposta lo stato di selezione di un pacchetto a livello di dpkg a hold (equivalente a "aptitude holdnome_pacchetto")

[Nota] Nota

Per un pacchetto con la funzionalità multi-arch, può essere necessario specificare l'architettura per alcuni comandi. Per esempio, usare «dpkg -L libglib2.0-0:amd64» per elencare il contenuto del pacchetto libglib2.0-0 per l'architettura amd64.

[Attenzione] Attenzione

Gli strumenti per i pacchetti a più basso livello, come "dpkg -i …" e "debi …" dovrebbero essere usati con molta cura dall'amministratore di sistema. Non si prendono cura in modo automatico delle dipendenze richieste dai pacchetti. Le opzioni "--force-all" e simili, per la riga di comando di dpkg (vederedpkg(1), sono pensate per essere usate solamente da utenti esperti. Usarle senza comprenderne pienamente l'effetto potrebbe portare tutto il sistema in uno stato problematico.

Notare quanto segue.

L'installazione di debsums permette la verifica dei file di pacchetto installati in base ai valori delle somme di controllo MD5sum nei file "/var/lib/dpkg/info/*.md5sums" con debsums(1). Per il funzionamento di MD5sum vedere Sezione 10.3.5, «Somme di controllo MD5».

[Nota] Nota

Dato che il database MD5sum può essere manomesso da un intruso, debsums ha un'utilità limitata come strumento di sicurezza. È adatto solo per controllare modifiche fatte dall'amministratore o danni dovuti ad errori dei supporti.

Sebbene visitare il sito Debian https://packages.debian.org/ faciliti oggi giorno la ricerca nei metadati dei pacchetti, ci sono metodi più tradizionali per farlo.

I comandi grep-dctrl(1), grep-status(1) e grep-available(1) possono essere usati per cercare in qualsiasi file che sia nel formato generico dei file di controllo dei pacchetti di Debian.

"dpkg -S modello_nome_file" può essere usato per cercare i pacchetti che contengono al loro interno file installati da dpkg il cui nome corrisponde al modello. Ma non trova i file creati dagli script dei manutentori.

Se è necessario fare ricerche più elaborate sui metadati dei pacchetti, è necessario eseguire il comando "grep -e modello_regex *" nella directory "/var/lib/dpkg/info/". In questo modo si cercano le parole indicate negli script e nei testi con le domande di installazione dei pacchetti.

Se si desiderano vedere in modo ricorsivo le dipendenze dei pacchetti, si dovrebbe usare apt-rdepends(8).

Verranno ora trattati alcuni aspetti tecnici interni del funzionamento del sistema di gestione dei pacchetti Debian. Queste informazioni dovrebbero aiutare a trovare soluzioni proprie ai problemi con i pacchetti.

[Suggerimento] Suggerimento

Il file "Release" nella directory di livello più alto è usato per firmare gli archivi nel sistema secure APT.

Ogni suite dell'archivio Debian ha un file "Release" nella sua directory di livello più alto, ad esempio "http://deb.debian.org/debian/dists/unstable/Release", di questo tipo.

Origin: Debian
Label: Debian
Suite: unstable
Codename: sid
Date: Sat, 14 May 2011 08:20:50 UTC
Valid-Until: Sat, 21 May 2011 08:20:50 UTC
Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian x.y Unstable - Not Released
MD5Sum:
 bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz
 9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz
 3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz
...
[Nota] Nota

Qui si può scoprire il motivo per cui in questa guida si è scelto di usare "suite" e "codename" (nome in codice) in Sezione 2.1.5, «Nozioni di base sugli archivi Debian». Il termine "distribuzione" è usato per riferirsi sia a "suite" sia a "codename". Tutti i nomi delle "aree" dell'archivio offerte da un archivio sono elencate in "Componente".

The integrity of the top level "Release" file is verified by cryptographic infrastructure called the secure apt as described in apt-secure(8).

  • Il file "Release.gpg" con la firma crittografica viene creato a partire dal file "Release" nella directory base e dalla chiave segreta dell'archivio Debian.

  • The public Debian archive keys are locally installed by the latest debian-archive-keyring package.

  • The secure APT system automatically verifies the integrity of the downloaded top level "Release" file cryptographically by this "Release.gpg" file and the locally installed public Debian archive keys.

  • L'integrità di tutti i file "Packages" e "Sources" viene verificata usando i valori MD5sum nel file "Release" nella ripsettiva directory base. L'integrità di tutti i file di pacchetto viene verificata usando i valori MD5sum nei file "Packages" e "Sources". Vedere debsums(1) e Sezione 2.4.2, «Verifica dei pacchetti installati».

  • Dato che la verifica crittografica della firma è un processo molto più dispendioso in termini di uso della CPU rispetto al calcolo di valori MD5sum, l'uso di valori MD5sum per ciascun pacchetto mentre viene usata la firma crittografica per il file "Release" principale, fornisce una buona sicurezza con buone prestazioni (vedere Sezione 10.3, «Infrastruttura di sicurezza dei dati»).

If the source list entry specifies the "signed-by" option, the integrity of its downloaded top level "Release" file is verified using specified public key. This is useful when the source list contains non-Debian archives.

[Suggerimento] Suggerimento

The use of apt-key(8) command for APT key management is deprecated.

Also, you can manually verify the integrity of the "Release" file with the "Release.gpg" file and the public Debian archive key posted on ftp-master.debian.org using gpg.

When APT tools, such as aptitude, apt-get, synaptic, apt-file, auto-apt, … are used, we need to update the local copies of the meta data containing the Debian archive information. These local copies have following file names corresponding to the specified distribution, area, and architecture names in the source list (see Sezione 2.1.5, «Nozioni di base sugli archivi Debian»).

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribuzione_Release"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribuzione_Release.gpg"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribuzione_area_binary-architettura_Packages"

  • "/var/lib/apt/lists/deb.debian.org_debian_dists_distribuzione_area_source_Sources"

  • "/var/cache/apt/apt-file/deb.debian.org_debian_dists_distribuzione_Contents-architettura.gz" (per apt-file)

First 4 types of files are shared by all the pertinent APT commands and updated from command line by "apt-get update" or "aptitude update". The "Packages" meta data are updated if the "deb" is specified in the source list. The "Sources" meta data are updated if the "deb-src" is specified in the source list.

I metadati "Packages" e "Sources" contengono la voce "Filename:" che punta alla posizione dei file dei pacchetti binari e sorgenti. Attualmente questi pacchetti sono posizionati nell'albero di directory "pool/" per una transizione migliore tra i rilasci.

Le copie locali dei metadati "Packages" possono essere ricercate interattivamente con l'aiuto di aptitude. Il comando specializzato di ricerca grep-dctrl(1) può cercare nelle copie locai dei metadati "Packages" e "Sources".

La copia locale dei metadati "Contents-architettura" può essere aggiornata con "apt-file update" e la sua posizione è diversa da quella degli altri quattro file. Vedere apt-file(1). (auto-apt usa in modo predefinito una posizione differente per la copia locale di "Contents-architettura.gz".)

I file di pacchetto Debian hanno nomi con una particolare struttura.


[Suggerimento] Suggerimento

Sono qui descritti solamente i formati base dei pacchetti sorgenti. Per ulteriori informazioni vedere dpkg-source(1).


[Nota] Nota

Si può controllare l'ordine delle versioni dei pacchetti con dpkg(1), per esempio con "dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $?".

[Nota] Nota

L'installatore Debian (d-i) usa come estensione per i suoi pacchetti binari udeb invece della normale deb. Un pacchetto udeb è un pacchetto deb ridotto al minimo, con rimossi alcuni contenuti non essenziali come la documentazione, per risparmiare spazio seguendo meno rigorosamente i requisiti richiesti dalle norme per i pacchetti. Entrambi i pacchetti deb e udeb condividono la stessa struttura di pacchetto. La "u" sta per micro.

dpkg(1) è lo strumento di più basso livello per la gestione dei pacchetti Debian. È molto potente e deve essere usato con cautela.

Quando installa un pacchetto chiamato "nome_pacchetto", dpkg fa nell'ordine elencato le seguenti operazioni.

  1. Spacchetta il file deb (equivalente di "ar -x")

  2. Esegue "nome_pacchetto.preinst" usando debconf(1)

  3. Installa il contenuto del pacchetto nel sistema (equivalente di "tar -x")

  4. Esegue "nome_pacchetto.postinst" usando debconf(1)

Il sistema debconf fornisce un'interazione standard con l'utente con supporto per internazionalizzazione e localizzazione (Capitolo 8, I18N e L10N).

Tabella 2.17. I file degni di nota creati da dpkg

file descrizione del contenuto
/var/lib/dpkg/info/nome_pacchetto.conffiles elenco di file di configurazione (modificabile dall'utente)
/var/lib/dpkg/info/nome_pacchetto.list elenco dei file e delle directory installate dal pacchetto
/var/lib/dpkg/info/nome_pacchetto.md5sums elenco dei valori degli hash MD5 per i file installati dal pacchetto
/var/lib/dpkg/info/nome_pacchetto.preinst script del pacchetto da eseguire prima dell'installazione del pacchetto
/var/lib/dpkg/info/nome_pacchetto.postinst script del pacchetto da eseguire dopo l'installazione del pacchetto
/var/lib/dpkg/info/nome_pacchetto.prerm script del pacchetto da eseguire prima della rimozione del pacchetto
/var/lib/dpkg/info/nome_pacchetto.postrm script del pacchetto da eseguire dopo la rimozione del pacchetto
/var/lib/dpkg/info/nome_pacchetto.config script per il sistema debconf
/var/lib/dpkg/alternatives/nome_pacchetto informazioni sulle alternative usate dal comando update-alternatives
/var/lib/dpkg/available informazioni sulla disponibilità per tutti i pacchetti
/var/lib/dpkg/diversions le informazioni sulle deviazioni usate da dpkg(1) e impostate da dpkg-divert(8)
/var/lib/dpkg/statoverride le informazioni per la sovrascrittura dello stato usate da dpkg(1) e impostate da dpkg-statoverride(8)
/var/lib/dpkg/status le informazioni sullo stato per tutti i pacchetti
/var/lib/dpkg/status-old la prima generazione di backup del file "var/lib/dpkg/status"
/var/backups/dpkg.status* la seconda generazione e le generazioni precedenti di backup del file "var/lib/dpkg/status"

Il file "status" è anche usato da altri strumenti come dpkg(1): "dselect update" e "apt-get -u dselect-upgrade".

Il comando di ricerca specializzato grep-dctrl(1) può ricercare nelle copie locali dei metadati "status" e "available".

[Suggerimento] Suggerimento

Nell'ambiente dell'installatore Debian, viene usato il comando udpkg per aprire i pacchetti udeb. Il comando udpkg è una versione ridotta al minimo del comando dpkg.

Quando si usa il sistema testing o unstable, l'amministratore deve saper ripristinare le cose da una situazione problematica di gestione dei pacchetti.

[Attenzione] Attenzione

Alcuni dei metodi descritti comportano azioni ad alto rischio. Ci si consideri avvertiti!

Errori nella cache dei dati dei pacchetti causano errori interessanti come "GPG error: ... invalid: BADSIG ..." con APT.

Si dovrebbero rimuovere tutti i dati in cache con "sudo rm -rf /var/lib/apt/* " e riprovare. (Se viene usato apt-cacher-ng si dovrebbe anche eseguire "sudo rm -rf /var/cache/apt-cacher-ng/* ".)

I sistemi di gestione dei pacchetti a livello dell'archivio, come aptitude(8) o apt-get(1) non provano nemmeno ad installare pacchetti con file sovrapposti, basandosi sulle dipendenze dei pacchetti (vedere Sezione 2.1.7, «Dipendenze dei pacchetti»).

Errori dei manutentori dei pacchetti o l'uso di fonti degli archivi mescolate in modo incoerente (vedere Sezione 2.7.6, «Packages from mixed source of archives without apt-pinning») dall'amministratore di sistema possono creare una situazione con dipendenze dei pacchetti non correttamente definite. Quando, in una situazione di questo tipo, si installa un pacchetto con file sovrapposti usando aptitude(8) o apt-get(1), dpkg(1) che spacchetta i pacchetti si assicura di restituire un errore al programma che lo ha invocato senza sovrascrivere file esistenti.

[Attenzione] Attenzione

L'uso di pacchetti di terze parti introduce significativi rischi per il sistema attraverso gli script dei manutentori che sono eseguiti con privilegi di root e che possono fare qualsiasi cosa nel sistema. Il comando dpkg(1) protegge solo contro la sovrascrittura in fase di spacchettamento.

Si possono risolvere installazioni problematiche di questo tipo rimuovendo prima il vecchio pacchetto che crea problemi: vecchio-pacchetto.

$ sudo dpkg -P old-package

Dato che dpkg è uno strumento per pacchetti a livello molto basso, può funzionare anche in situazioni molto brutte come un sistema non avviabile senza una connessione di rete. Assumiamo, per esempio, che il pacchetto pippo sia difettoso e debba essere sostituito.

Si possono trovare copie di versioni più vecchie del pacchetto pippo, libere dal bug, nella directory della cache dei pacchetti: «/var/cache/apt/archives/». (Se non ci sono, se ne può scaricare una dall'archivio di https://snapshot.debian.org/ o copiarla dalla cache dei pacchetti di una macchina funzionante.)

Se si può avviare il sistema, lo si può installare con il comando seguente.

# dpkg -i /path/to/foo_old_version_arch.deb
[Suggerimento] Suggerimento

Se il danno al sistema è piccolo, si può in alternativa retrocedere tutto il sistema ad una versione precedente come in Sezione 2.7.11, «Retrocessione di emergenza alla versione precedente», usando il sistema di più alto livello APT.

Se il sistema non è avviabile dal disco fisso, si dovrebbe cercare un altro modo per fare l'avvio.

  1. Avviare il sistema usando il CD dell'installatore Debian in modalità ripristino.

  2. Montare il sistema non avviabile sul disco fisso in "/destinazione".

  3. Installare una versione più vecchia del pacchetto pippo con il comando seguente.

# dpkg --root /target -i /path/to/foo_old_version_arch.deb

Questo esempio funziona persino se il comando dpkg sul disco fisso è danneggiato.

[Suggerimento] Suggerimento

Per ripristinare il sistema danneggiato, può essere usato in modo simile qualsiasi sistema GNU/Linux avviato da un altro sistema sul disco fisso, CD live GNU/Linux, chiavetta USB avviabile o avvio di rete.

Se il tentativo di installare un pacchetto in questo modo fallisce a causa di qualche violazione di dipendenze e si deve necessariamente farlo come ultima spiaggia, si possono sovrascrivere le dipendenze usando "--ignore-depends", "--force-depends" e altre opzioni di dpkg. Se lo si fa, è necessario in seguito fare tutti gli sforzi possibili per ripristinare le dipendenze corrette. Per i dettagli vedere dpkg(8).

[Nota] Nota

Se il sistema è seriamente danneggiato, se ne dovrebbe fare un backup completo in un posto sicuro (vedere Sezione 10.2, «Backup e ripristino») e fare un'installazione pulita. Ciò comporta meno perdita di tempo e alla fine produce un risultato migliore.

For simplicity, the source list examples in this section are presented as "/etc/apt/sources.list" in one-line-style after the bookworm release.

Il pacchetto apt viene fornito con il proprio script di cron, "/etc/cron.daily/apt" per permettere di scaricare automaticamente i pacchetti. Questo script può essere migliorato, installando il pacchetto unattended-upgrades, per effettuare l'aggiornamento automatico dei pacchetti. Può essere personalizzato dai parametri in "/etc/apt/apt.conf.d/02backup" e "/etc/apt/apt.conf.d/50unattended-upgrades" come descritto in "/usr/share/doc/unattended-upgrades/README".

Il pacchetto "unattended-upgrades è pensato principalmente per gli aggiornamenti di sicurezza del sistema stable. Se il rischio di danneggiare un sistema stable esistente con gli aggiornamenti automatici è minore di quello che il sistema venga danneggiato da un intruso, usando una falla nella sicurezza chiusa dall'aggiornamento di sicurezza, si dovrebbe considerare l'uso di questi aggiornamenti automatici con parametri simili ai seguenti.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";

If you are running an testing or unstable system, you do not want to use the automatic upgrade since it certainly breaks system some day. Even for such testing or unstable case, you may still want to download packages in advance to save time for the interactive upgrade with configuration parameters as the following.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "0";

There are stable-updates ("bookworm-updates" during the bookworm-as-stable release cycle) and backports.debian.org archives which provide upgrade packages for stable.

Per usare questi archivi, si devono elencare tutti quelli richiesti nel file "/etc/apt/sources.list" nel modo seguente.

deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free
deb http://deb.debian.org/debian/ bookworm-backports main non-free-firmware contrib non-free

Non è necessario impostare esplicitamente un valore di priorità di pin nel file "/etc/apt/preferences". Quando nuovi pacchetti diventano disponibili, la configurazione predefinita fornisce gli aggiornamenti più ragionevoli (vedere Sezione 2.5.3, «File "Release" a livello di archivio»).

  • Tutti i vecchi pacchetti installati vengono aggiornati con quelli più nuovi da bookworm-updates.

  • Solo i vecchi pacchetti installati manualmente da bookworm-backports vengono aggiornati a quelli più nuovi da bookworm-backports.

Ogni volta che si desidera installare manualmente un pacchetto chiamato "nome-pacchetto" con le sue dipendenze dall'archivio bookworm-backports, usare questo comando che sposta il rilascio stabilito con l'opzione "-t".

$ sudo apt-get install -t bookworm-backports package-name
[Avvertimento] Avvertimento

Do not install too many packages from backports.debian.org archives. It may cause package dependency complications. See Sezione 2.1.11, «How to cope with conflicting requirements» for alternative solutions.

[Attenzione] Attenzione

Installing packages from mixed source of archives is not supported by the official Debian distribution except for officially supported particular combinations of archives such as stable with security updates and stable-updates.

Ecco un esempio di operazioni da fare per includere, sporadicamente, versioni originali più recenti di specifici pacchetti presenti in unstable pur mantenendo testing.

  1. Cambiare temporaneamente il file "/etc/apt/sources.list" ad una singola voce "unstable".

  2. Eseguire "aptitude update".

  3. Eseguire "aptitude install nome-pacchetto".

  4. Ripristinare il file "/etc/apt/sources.list" originale per testing.

  5. Eseguire "aptitude update".

You do not create the "/etc/apt/preferences" file nor need to worry about apt-pinning with this manual approach. But this is very cumbersome.

[Attenzione] Attenzione

Quando si usano fonti di archivi mescolate, si deve assicurare la compatibilità tra i pacchetti da soli, dato che Debian non la garantisce. Se esistono incompatibilità tra i pacchetti, si può danneggiare il sistema. Si deve essere in grado di giudicare queste esigenze tecniche. L'uso di fonti mescolate di archivi non correlati è una modalità di funzionamento del tutto facoltativa e il suo uso non è per nulla raccomandato.

Le regole generali per installare pacchetti da archivi diversi sono le seguenti.

[Nota] Nota

Per rendere l'installazione di un pacchetto più sicura, possono essere forniti alcuni pacchetti binari applicativi commerciali non liberi con librerie completamente statiche. Si dovrebbe anche per essi controllare in ogni caso la compatibilità con ABI, ecc.

[Nota] Nota

Except to avoid broken package for a short term, installing binary packages from non-Debian archives is generally bad idea. You should seek all available alternative safer technical solutions which are compatible with your current Debian syetem (see Sezione 2.1.11, «How to cope with conflicting requirements»).

[Avvertimento] Avvertimento

Use of apt-pinning by a novice user is sure call for major troubles. You must avoid using apt-pinning except when you absolutely need it.

Senza il file "/etc/apt/preferences", il sistema APT sceglie la versione più recente disponibile come versione candidata usando la stringa di versione. Questa è la situazione normale e l'uso raccomandato del sistema APT. Tutte le combinazioni di archivi supportate ufficialmente non necessitano del file "/etc/apt/preferences", dato che gli archivi che non dovrebbero essere usati come fonti automatica per gli aggiornamenti sono marcati come NotAutomatic e trattati in modo appropriato.

[Suggerimento] Suggerimento

La regola di comparazione della stringa di versione può essere verificata con, ad esempio, "dpkg --compare-versions ver1.1 gt ver1.1~1; echo $?" (vedere dpkg(1)).

Quando si installano regolarmente pacchetti da fonti di archivi mescolate (vedere Sezione 2.7.6, «Packages from mixed source of archives without apt-pinning»), si possono automatizzare queste operazioni complicate creando il file "/etc/apt/preferences" con le voci appropriate e modificando la regola di selezione dei pacchetti per le versioni candidate come descritto in apt_preferences(5). Questo è chiamato usare i pin di APT.

When using apt-pinning, you must ensure compatibility of packages by yourself since the Debian does not guarantee it. The apt-pinning is completely optional operation and its use is not something I encourage you to use.

Archive level Release files (see Sezione 2.5.3, «File "Release" a livello di archivio») are used for the rule of apt_preferences(5). Thus apt-pinning works only with "suite" name for normal Debian archives and security Debian archives. (This is different from Ubuntu archives.) For example, you can do "Pin: release a=unstable" but can not do "Pin: release a=sid" in the "/etc/apt/preferences" file.

When you use non-Debian archive as a part of apt-pinning, you should check what they are intended for and also check their credibility. For example, Ubuntu and Debian are not meant to be mixed.

[Nota] Nota

Even if you do not create the "/etc/apt/preferences" file, you can do fairly complex system operations (see Sezione 2.6.6, «Ripristinare con il comando dpkg» and Sezione 2.7.6, «Packages from mixed source of archives without apt-pinning») without apt-pinning.

Quella che segue è una spiegazione semplificata delluso dei pin di APT.

Il sistema APT sceglie, dalle fonti per i pacchetti disponibili definite nel file "/etc/apt/sources.list", il pacchetto di aggiornamento con la priorità di pin più elevata come versione candidata del pacchetto. Se la priorità di pin del pacchetto è maggiore di 1000, la restrizione a versioni di aggiornamento non viene considerata per permettere la retrocessione ad una versione precedente (vedere Sezione 2.7.11, «Retrocessione di emergenza alla versione precedente»).

Il valore della priorità di pin per ciascun pacchetto è definito dalle voci "Pin-Priority" nel file "/etc/apt/preferences o viene usato il valore predefinito.


The target release archive can be set by the command line option, e.g., "apt-get install -t testing some-package"

Gli attributi di archivio NonAutomatico e MaConAggiornamentiAutomatici vengono impostati dal server dell'archivio che ha il file Release a livello di archivio (vedere Sezione 2.5.3, «File "Release" a livello di archivio») che contiene sia "NotAutomatic: yes" sia "ButAutomaticUpgrades: yes". L'archivio NonAutomatico viene impostato dal server dell'archivio che ha il file Release a livello di archivio che contiene solamente "NotAutomatic: yes".

La situazione dei pin di APT di pacchetto da diverse fonti di archivi viene mostrata con "apt-cache policy pacchetto".

  • Una riga che inizia con "pacchetto pin:" elenca la versione del pacchetto di pin se è definita un'associazione specifica per pacchetto, ad esempio "Package pin: 0.190".

  • Non esiste alcuna riga con "Package pin:" se non è definita alcuna associazione solamente con pacchetto.

  • Il valore di priorità di pin associato solamente con pacchetto viene mostrato alla destra di tutte le sringhe di versione, ad esempio "0.181 700".

  • Se non è definita un'associazione specifica con pacchetto viene mostrato "0" alla destra di tutte le stringhe di versione.

  • I valori di priorità di pin degli archivi (definiti come "Package: *" nel file "/etc/apt/preferences") sono elencati alla sinistra di tutti i percorsi di archivio, ad esempio "100 http://deb.debian.org/debian/bookworm-backports/main Packages".

[Avvertimento] Avvertimento

Use of apt-pinning by a novice user is sure call for major troubles. You must avoid using apt-pinning except when you absolutely need it.

Quello che segue è un esempio di uso dei pin di APT per includere pacchetti specifici con versioni originali più recenti presenti in unstable aggiornandoli regolarmente pur mantenendo testing. Si devono elencare nel file "/etc/apt/sources.list" tutti gli archivi necessari nel modo seguente.

deb http://deb.debian.org/debian/ testing main contrib non-free
deb http://deb.debian.org/debian/ unstable main contrib non-free
deb http://security.debian.org/debian-security testing-security main contrib

Impostare il file "/etc/apt/preferences" come segue.

Package: *
Pin: release a=unstable
Pin-Priority: 100

Quando, con questa configurazione, si desidera installare un pacchetto chiamato "nome-pacchetto" con le sue dipendenze dall'archivio unstable, usare il comando seguente che cambia il rilascio definito con l'opzione "-t" (la priorità di pin di unstable diventa 990).

$ sudo apt-get install -t unstable package-name

Con quessta configurazione, la normale esecuzione di "apt-get upgrade" e "apt-get dist-upgrade" (o "aptitude safe-upgrade" e "aptitude full-upgrade") aggiorna i pacchetti che erano stati installati dall'archivio testing usando l'attuale archivio testing e i pacchetti che erano stati installati dall'archivio unstable usando l'attuale archivio unstable.

[Attenzione] Attenzione

Fare attenzione a non rimuovere la voce "testing" dal file "/etc/apt/sources.list". Senza di essa il sistema APT aggiorna i pacchetti usando l'archivio unstable più recente.

[Suggerimento] Suggerimento

Io di solito modifico il file "/etc/apt/sources.list per commentare le voci relative all'archivio "unstable immediatamente dopo l'azione descritta sopra. Questo evita il rallentamento del processo di aggiornamento dovuto a troppe voci nel file "/etc/apt/sources.list" anche se impedisce l'aggiornamento, usando l'attuale archivio unstable dei pacchetti che erano stati installati dall'archivio unstable.

[Suggerimento] Suggerimento

Se viene usato "Pin-Priority: 1" invece di "Pin-Priority: 100" nel file "/etc/apt/preferences", i pacchetti già installati che hanno 100 come valore della priorità di pin, non vengono aggiornati dall'archivio unstable nemmeno se viene rimossa la voce "testing" dal file "/etc/apt/sources.list".

Se si desidera tenere traccia automaticamente di particolari pacchetti in unstable senza l'iniziale installazione con "-t unstable", si deve creare il file "/etc/apt/preferences" ed elencarvi esplicitamente tutti i pacchetti voluti nel modo seguente.

Package: package-1
Pin: release a=unstable
Pin-Priority: 700

Package: package-2
Pin: release a=unstable
Pin-Priority: 700

Questo imposta il valore della priorità di pin per ciascun pacchetto specifico. Per esempio, per tenere traccia della versione più recente in unstable di questo manuale "Debian Reference" in inglese, si dovrebbero avere, nel file "/etc/apt/preferences" le voci seguenti.

Package: debian-reference-en
Pin: release a=unstable
Pin-Priority: 700

Package: debian-reference-common
Pin: release a=unstable
Pin-Priority: 700
[Suggerimento] Suggerimento

This apt-pinning technique is valid even when you are tracking stable archive. Documentation packages have been always safe to install from unstable archive in my experience, so far.

[Avvertimento] Avvertimento

Use of apt-pinning by a novice user is sure call for major troubles. You must avoid using apt-pinning except when you absolutely need it.

[Attenzione] Attenzione

La retrocessione ad una versione precedente non è ufficialmente supportata da Debian. Dovrebbe essere fatta solamente come parte di un processo di ripristino di emergenza. Nonostante questo è noto che funziona bene in caso di molti incidenti. Per i sistemi critici, si dovrebbe fare un backup di tutti i dati importanti sul sistema dopo l'operazione di ripristino e reinstallare un nuovo sistema da zero.

Si potrebbe essere fortunati e riuscire a retrocedere da un archivio più recente ad uno più vecchio per ripristinare un aggiornamento di sistema andato male, manipolando le versioni candidate (vedere Sezione 2.7.7, «Tweaking candidate version with apt-pinning»). Questa è l'alternativa pigra al lavoro tedioso di dover usare molti comandi "dpkg -i pacchetto-danneggiato_vecchia-versione.deb" (vedereSezione 2.6.6, «Ripristinare con il comando dpkg»).

Cercare le righe nel file "/etc/apt/sources.list" che rimandano a unstable, come la seguente.

deb http://deb.debian.org/debian/ sid main contrib non-free

Sostituirle con la seguente per puntare a testing.

deb http://deb.debian.org/debian/ trixie main contrib non-free

Impostare il file "/etc/apt/preferences" come segue.

Package: *
Pin: release a=testing
Pin-Priority: 1010

Eseguire "apt-get update; apt-get dist-upgrade" per forzare la retrocessione dei pacchetti in tutto il sistema.

Rimuovere questo file speciale "/etc/apt/preferences" dopo la retrocessione di emergenza.

[Suggerimento] Suggerimento

È una buona idea rimuovere (non eliminare completamente!) il maggior numero di pacchetti per minimizzare i problemi di dipendenza. Potrebbe essere necessario rimuovere o installare manualmente alcuni pacchetti per retrocedere il sistema. Il kernel Linux, il bootloader, udev, PAM, APT e i pacchetti relativi alla rete ed i loro file di configurazione richiedono particolare attenzione.