Handbook:Parts/Working/Portage/it

Benvenuto in Portage
Portage è una delle innovazioni più notevoli di Gentoo per quanto riguarda la gestione del software. Grazie alla sua grande flessibilità e all'enorme quantità di caratteristiche, è frequentemente considerato il miglior strumento di gestione del software disponibile per Linux.

Portage è scritto completamente in Python e Bash e di conseguenza è completamente visibile dagli utenti in quanto entrambi sono linguaggi per lo scripting.

La maggior parte degli utenti lavorerà con Portage tramite lo strumento. Questo capitolo non è pensato per duplicare le informazioni disponibili tramite la pagina man di emerge. Per un resoconto completo delle opzioni di emerge, per favore si consulti la pagina man:

Ebuild
Quando la documentazione di Gentoo parla dei pacchetti, intende i titoli dei software che sono disponibili per gli utenti di Gentoo attraverso il repository di Gentoo. Questo repository è una raccolta di ebuild, file che contengono tutte le informazioni di cui Portage abbisogna per mantenere il software (installazione, ricerca, ecc.). Queste ebuild risiedono normalmente nel percorso.

Ogni qual volta qualcuno chiede a Portage di effettuare una certa azione riguardante dei titoli software, userà le ebuild nel sistema come base. Di conseguenza, è importante aggiornare regolarmente le ebuild nel sistema così che Portage venga a conoscenza del nuovo software, degli aggiornamenti di sicurezza, ecc.

Aggiornamento del repository di Gentoo
Il repository di Gentoo è solitamente aggiornato tramite, una veloce utilità incrementale di trasferimento dei file. L'aggiornamento è piuttosto semplice in quanto il comando fornisce un front-end per :

Talvolta vengono applicate restrizioni sul firewall tali da impedire a di contattare i mirror. In questo caso, si aggiorni il repository di Gentoo tramite le istantanee (snapshot) di Gentoo generate quotidianamente. Lo strumento ottiene ed installa automaticamente l'istantanea più recente sul sistema:

Un vantaggio aggiuntivo quando si usa consiste nel permettere all'amministratore di scaricare solo le istantanee del repository di Gentoo che sono firmate con la chiave GPG dell'ingegneria dei rilasci di Gentoo. Per ulteriori informazioni, consultare le sezioni che trattano le caratteristiche di Portage in ottenere le istantanee convalidate del repository di Gentoo.

Ricerca del software
Ci sono vari modi per cercare software nel repository di Gentoo. Una possibilità è tramite stesso. Predefinitamente, restituisce i nomi dei pacchetti il cui titolo corrisponde (completamente o parzialmente) alla stringa di ricerca inserita.

Per esempio, per cercare tutti i pacchetti che contengono "pdf" nel loro nome:

Per cercare anche nelle descrizioni, usare l'opzione  (o  ):

Si noti che vengono restituite un sacco di informazioni. I campi sono etichettati chiaramente quindi non andremo ulteriormente nei dettagli circa i loro significati:

Installazione del software
Una volta trovato un certo software, si è ad appena un comando di distanza dall'installazione vera e propria. Per esempio, per installare gnumeric:

Poiché molte applicazioni dipendono l'una dall'altra, qualunque tentativo di installare un certo software potrà risultare anche nell'installazione di numerose dipendenze. Non ci si preoccupi, Portage gestisce bene le dipendenze. Per scoprire cosa installerebbe Portage, aggiungere l'opzione. Per esempio:

Durante l'installazione di un pacchetto, Portage scaricherà il codice sorgente necessario da Internet (se necessario) e lo metterà in. Dopodiché spacchetterà, compilerà ed installerà il pacchetto. Per dire a Portage di scaricare solamente il sorgente senza installarlo, aggiungere l'opzione  al comando emerge:

Trovare la documentazione dei pacchetti installati
Molti pacchetti possiedono una loro documentazione. Talvolta, l'opzione USE  determina se la documentazione di un pacchetto debba essere installata oppure no. Per vedere se l'opzione USE   viene usata da un certo pacchetto, usare :

Il miglior modo per abilitare l'opzione USE  per  un certo pacchetto è tramite, così che venga installata solo la documentazione per i pacchetti voluti. Per ulteriori informazioni, consultare la sezione Opzioni USE del manuale.

Una volta installato il pacchetto, la sua documentazione si trova generalmente in una sotto cartella che si chiama come il pacchetto nel percorso :

Un modo più sicuro per elencare i file installati della documentazione è usare l'opzione  di. viene usato per cercare nel database di Portage ed è parte del pacchetto :

L'opzione  può essere usata con altre regole per vedere i percorsi di installazione per molti tipi di file. Si possono vedere ulteriori funzionalità nella pagina man di :.

Rimozione del software
Per rimuovere il software da un sistema, usare. Ciò dirà a Portage di rimuovere dal sistema tutti i file installati da quel pacchetto. Un'eccezione a ciò sono tutti i file di configurazione di quell'applicazione "se" sono stati modificati dall'utente. Lasciare i file di configurazione permette agli utenti di continuare a lavorare con il pacchetto senza bisogno di riconfigurarlo se viene reinstallato successivamente.

Quando un pacchetto viene rimosso dal sistema, le dipendenze di quel pacchetto che sono state installate automaticamente quando era stati installato vengono lasciate intatte nel sistema. Per far sì che Portage individui tutte le dipendenze che ora possono essere rimosse, usare la funzionalità  di emerge, che verrà discussa in seguito.

Aggiornamento del sistema
Per mantenere il sistema in forma perfetta (senza contare l'installazione degli aggiornamenti di sicurezza più importanti) è necessario aggiornare regolarmente il sistema. Poiché Portage controlla solo le ebuild nel repository di Gentoo, la prima cosa da fare è aggiornare questo repository. Quando il repository di Gentoo viene aggiornato, il sistema può essere aggiornato usando. Nell'esempio successivo, viene usata anche l'opzione, che dirà a Portage di mostrare la lista dei pacchetti che vuole aggiornare e di chiedere conferma:

Portage cercherà poi versioni più recenti delle applicazioni che sono installate. Tuttavia, verificherà solo le versioni per le applicazioni che sono esplicitamente installate (le applicazioni elencate in ) - non controllerà accuratamente le loro dipendenze. Per aggiornare anche le dipendenze di quei pacchetti, aggiungere l'opzione :

Ciò non significa ancora tutti i pacchetti: alcuni pacchetti nel sistema sono necessari durante la compilazione e la costruzione di alcuni pacchetti, ma una volta che il pacchetto viene installato, queste dipendenze non sono più richieste. Portage le chiama dipendenze di costruzione. Per comprenderle in un ciclo di aggiornamento, aggiungere :

Poiché gli aggiornamenti di sicurezza coinvolgono anche pacchetti che non sono esplicitamente installati nel sistema (ma che sono scaricati come dipendenze di altri programmi), viene raccomandato di eseguire questo comando una volta ogni tanto.

Se le impostazioni USE del sistema sono state alterate, è raccomandato di aggiungere anche. Portage allora verificherà se il cambio richiede l'installazione di nuovi pacchetti o la ricompilazione di alcuni di quelli esistenti:

Metapacchetti
Alcuni pacchetti nel repository di Gentoo non hanno alcun contenuto reale ma sono usati per installare una raccolta di pacchetti. Per esempio, il pacchetto installerà un ambiente KDE completo nel sistema semplicemente scaricando vari pacchetti relativi a KDE come dipendenze.

Per rimuovere un pacchetto del genere dal sistema, eseguire sul pacchetto non avrà molto effetto in quanto le dipendenze rimarranno nel sistema.

Portage possiede la capacità di rimuovere anche le dipendenze rimaste orfane, ma poiché la disponibilità del software è dipendente in maniera dinamica è importante per prima cosa aggiornare completamente il sistema, comprendendo i nuovi cambiamenti applicati quando si cambiano le opzioni USE. Una volta fatto ciò, si esegua per rimuovere le dipendenze rimaste orfane. Una volta fatto ciò, potrebbe essere necessario ricostruire le applicazioni che erano collegate dinamicamente ai pacchetti ora rimossi, ma che ora non sono più richiesti, benché sia stato aggiunto supporto a Portage per questo recentemente.

Tutto ciò viene gestito con i seguenti tre comandi:

is provided by the package; do not forget to emerge it:

Licenses
Beginning with Portage version 2.1.7, it is possible to accept or reject software installation based on its license. All packages in the tree contain a LICENSE entry in their ebuilds. Running will show the package's license.

By default, Portage permits all licenses, except End User License Agreements (EULAs) that require reading and signing an acceptance agreement.

The variable that controls permitted licenses is called ACCEPT_LICENSE, which can be set in the file. In the next example, this default value is shown:

With this configuration, packages that require interaction during installation to approve their EULA will not be installable. Packages without an EULA will be installable.

It is possible to set ACCEPT_LICENSE globally in, or to specify it on a per-package basis in the file.

For example, to allow the license for the  package, add the following to :

This permits the installation of the package, but prohibits the installation of the  package, even though it has the same license.

License groups defined in the ACCEPT_LICENSE variable are prefixed with an  sign. A commonly requested setting is to only allow the installation of free software and documentation. To accomplish this, remove all currently accepted licenses (using ) and then only allow the licenses in the FREE group as follows:

In this case, "free" is mostly defined by the FSF and OSI. Any package whose license does not meet these requirements will not be installable on the system.

Terminology
As stated before, Portage is extremely powerful and supports many features that other software management tools lack. To understand this, we explain a few aspects of Portage without going into too much detail.

With Portage different versions of a single package can coexist on a system. While other distributions tend to name their package to those versions (like freetype and freetype2) Portage uses a technology called SLOTs. An ebuild declares a certain SLOT for its version. Ebuilds with different SLOTs can coexist on the same system. For instance, the freetype package has ebuilds with SLOT="1" and SLOT="2".

There are also packages that provide the same functionality but are implemented differently. For instance, metalogd, sysklogd, and syslog-ng are all system loggers. Applications that rely on the availability of "a system logger" cannot depend on, for instance, metalogd, as the other system loggers are as good a choice as any. Portage allows for virtuals: each system logger is listed as an "exclusive" dependency of the logging service in the logger virtual package of the virtual category, so that applications can depend on the package. When installed, the package will pull in the first logging package mentioned in the package, unless a logging package was already installed (in which case the virtual is satisfied).

Software in the Gentoo repository can reside in different branches. By default the system only accepts packages that Gentoo deems stable. Most new software titles, when committed, are added to the testing branch, meaning more testing needs to be done before it is marked as stable. Although the ebuilds for those software are in the Gentoo repository, Portage will not update them before they are placed in the stable branch.

Some software is only available for a few architectures. Or the software doesn't work on the other architectures, or it needs more testing, or the developer that committed the software to the Gentoo repository is unable to verify if the package works on different architectures.

Each Gentoo installation also adheres to a certain profile which contains, amongst other information, the list of packages that are required for a system to function normally.

Blocked packages
Ebuilds contain specific fields that inform Portage about its dependencies. There are two possible dependencies: build dependencies, declared in the DEPEND variable and run-time dependencies, likewise declared in RDEPEND. When one of these dependencies explicitly marks a package or virtual as being not compatible, it triggers a blockage.

While recent versions of Portage are smart enough to work around minor blockages without user intervention, occasionally such blockages need to be resolved manually.

To fix a blockage, users can choose to not install the package or unmerge the conflicting package first. In the given example, one can opt not to install postfix or to remove ssmtp first.

Sometimes there are also blocking packages with specific atoms, such as. In this case, updating to a more recent version of the blocking package could remove the block.

It is also possible that two packages that are yet to be installed are blocking each other. In this rare case, try to find out why both would need to be installed. In most cases it is sufficient to do with one of the packages alone. If not, please file a bug on Gentoo's bugtracking system.

Masked packages
When trying to install a package that isn't available for the system, this masking error occurs. Users should try installing a different application that is available for the system or wait until the package is marked as available. There is always a reason why a package is masked:

Necessary USE flag changes
The error message might also be displayed as follows, if  isn't set:

Such warning or error occurs when a package is requested for installation which not only depends on another package, but also requires that that package is built with a particular USE flag (or set of USE flags). In the given example, the package app-text/feelings needs to be built with USE="test", but this USE flag is not set on the system.

To resolve this, either add the requested USE flag to the global USE flags in, or set it for the specific package in.

Missing dependencies
The application to install depends on another package that is not available for the system. Please check Bugzilla if the issue is known and if not, please report it. Unless the system is configured to mix branches, this should not occur and is therefore a bug.

Ambiguous ebuild name
The application that is selected for installation has a name that corresponds with more than one package. Supply the category name as well to resolve this. Portage will inform the user about possible matches to choose from.

Dipendenze circolari
Due (o più) pacchetti da installare dipendono l'uno dall'altro e di conseguenza non possono essere installati. Ciò è probabilmente dovuto ad un errore in uno dei pacchetti nel repository di Gentoo. Si prega di effettuare nuovamente la sincronizzazione dopo un po' e riprovare di nuovo. Potrebbe essere anche utile controllare Bugzilla per vedere se il problema è noto e se non lo è, riportarlo.

Acquisizione (fetch) fallita
Portage non è stato in grado di scaricare i sorgenti per una certa applicazione e continuerà ad installare le altre applicazioni (se possibile). Questo fallimento può essere dovuto ad un mirror che non è stato sincronizzato correttamente oppure perché l'ebuild punta ad una posizione non corretta. Il server in cui risiedono i sorgenti può anche essere guasto per qualche ragione.

Ritentare dopo un'ora per vedere se il problema persiste.

Protezione del profilo di sistema
L'utente ha richiesto di rimuovere un pacchetto che è parte dei pacchetti del nucleo del sistema. È elencato nel profilo come richiesto e di conseguenza non dovrebbe essere rimosso dal sistema.

Fallimento nella verifica del digest
Questo indica che c'è qualcosa che non va con il repository di Gentoo - spesso, causato da un errore fatto quando si inserisce un ebuild nel repository delle ebuild di Gentoo.

Quando la verifica del digest fallisce, non tentare di effettuare il digest nuovamente di persona. Eseguire non risolverà il problema; potrebbe anzi renderlo peggiore.

Al contrario, attendere un'ora o due affinché il repository si sistemi. È probabile che l'errore sia già stato notato, ma la soluzione può impiegare un po' di tempo prima che arrivi nei mirror rsync. Controllare Bugzilla e vedere se qualcuno ha già riportato il problema o chiedere in giro su (IRC). Se il problema non è noto, proseguire e presentare istanza del problema per l'ebuild corrotta.

Una volta che l'errore è stato risolto, ri-sincronizzare il repository delle ebuild di Gentoo per ottenere il digest riveduto.