Ricerca tra la vecchia roba

Qualche opzione di emerge

Posted: dicembre 13th, 2010 | Author: | Filed under: Gentoo, Tips&Tricks | Tags: , | Commenti disabilitati su Qualche opzione di emerge

Gentoo 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.