Qualche opzione di emerge
Posted: Dicembre 13th, 2010 | Author: packz | Filed under: Gentoo, Tips&Tricks | Tags: emerge, gentoo | Commenti disabilitati su Qualche opzione di emergeGentoo mi piace, però qualche volta mi ritrovo con un sistema impossibile da aggiornare o con qualche problema di update; questa volta è stato un aggiornamento di perl, per scoprirlo ho dovuto leggere le news di gentoo come indicato alla fine dell’ultimo emerge:
$ eselect news list
News items:
[1] read 2009-04-06 Migration to X.org Server 1.5
[2] read 2009-04-18 Generation 1 Java Setup Deprecated
[3] read 2009-07-12 xorg-x11-7.4 and xorg-server-1.5 kernel support
[4] read 2009-10-02 Migration to X.org Server 1.6 and libxcb 1.4
[5] read 2009-10-08 Upgrade to GNOME 2.26
[6] read 2010-01-31 Removal of libGL.la
[7] read 2010-02-28 Layman storage path changed from version 1.3.0 on
[8] read 2010-02-21 MySQL 5.1 unmasking and upgrade procedures
[9] read 2010-03-23 New desktop subprofiles for GNOME and KDE
[10] read 2010-04-23 Upgrade to GNOME 2.28
[11] read 2010-03-25 Python 3.1
[12] read 2010-08-01 –as-needed enabled in default profiles
[13] read 2010-10-22 Perl 5.12 upgrade procedure
Possiamo leggere la news nella maniera seguente
$ eselect news read 13
2010-10-22-perl-5.12-upgrade-procedure
Title Perl 5.12 upgrade procedure
Author perl-team <perl@gentoo.org>
Author Torsten Veller <tove@gentoo.org>
Posted 2010-10-22
Revision 1
==> Run `perl-cleaner –all` after upgrading to a new Perl version! <==
“Perl 5.12 is not binary compatible with prior releases of Perl. If
you have built extensions (i.e. modules that include C code) using an
earlier version of Perl, you will need to rebuild and reinstall those
extensions.” [1]
In fact, in Gentoo you currently have to rebuild all Perl modules and
all binaries linking libperl to get into a consistent state again.
perl-cleaner generates a list of broken packages and passes it to your
package manager to reinstall them. After reinstalling the packages,
perl-cleaner outputs a list of files the script could not deal with
(like modules installed not via the package manager).
See `man perl-cleaner` for its options.
[1] http://search.cpan.org/dist/perl-5.12.2/INSTALL#Changes_and_Incompatibilities
Il problema è che lanciando perl-cleaner non ottenevo l’effetto sperato in quanto mi diceva che dovevo unmaskare (~x86) un casino di pacchetti. Il problema non è l’unmaskare i packages (o almeno, se sai cosa stai facendo) ma il fatto che (di default) una volta lanciato l’emerge, esso ti manda l’avviso che bisogna unmaskare, però indicando solo il primo package che ha dato problema. Quindi se ce ne sono 15 ti tocca rilanciarlo 15 volte e non è carino visto che non è immediato.
Un primo approccio è stato de-unmaskare tutti i pacchetti che con i vari upgrade precedenti avevo unmaskato nell’ottica di eliminare dipendenze inverse particolari. Purtroppo anche de-unmaskando la situazione non è cambiata e quindi mi sono detto “è possibile che non esista una opzione che mi permetta di vedere in un colpo solo tutti i pacchetti che hanno problemi nell’emerge che voglio fare?” e ho pensato al sacro principio sancito dal RTFM.
Leggere la pagina di emerge è stata la mossa vincente e mi ha fatto arrivare alla seguente combinazione di opzioni (solo l’ultima è una innovazione, le altre le usavo già di default ma già che ci sono vi illumino di sapienza)
emerge --ask --update --verbose --deep --keep-going=True --autounmask system world
che posso spiegare brevemente così
- –ask: prima di effettuare l’effettivo aggiornamento chiedi
- –update: esegui l’aggiornamento dei pacchetti che hanno degli aggiornamenti disponibili
- –deep: esegui l’update anche per le dipendenze (l’opzione precedente aggiorna solo i pacchetti contenuti nel world, questa opzione dice di aggiornare anche i pacchetti da cui questi dipendono)
- –keep-going: in caso di errore nell’emerge continua con i rimanenti
- –autounmask: se ci sono dei pacchetti che per qualche motivo bloccano l’upgrade, mostra quali cambiamenti si necessitano e blocca l’upgrade
È proprio questa ultima opzione quella che cercavo: se ci sono problemi si blocca e mostra cosa bisogna scrivere in package.keyword e package.use per mandare a buon fine l’upgrade. Una volta copiato il tutto l’upgrade va che è un piacere e finalmente dopo più di un mese ho una installazione gentoo senza problemi di upgrade.