Outils personnels
Vous êtes ici : Accueil Linux Gentoo Utilisation d'une Gentoo - Problèmes/Solutions - FAQ 25-Mise à jour "critique" Baselayout 2
Navigation
Se connecter


Mot de passe oublié ?
 

25-Mise à jour "critique" Baselayout 2

Par Freecrazy - Dernière modification 14/07/2011 20:42

Une mise à jour à risque, puisqu'en mai Baselayout passe à la version 2 et sa mise à jour doit se faire proprement sous peine d'un reboot impossible.

Lors de ma mise à jour du 02 juin 2011 (ma dernière datée du 19 mars) avec ma classique séquence :

# emerge –sync; emerge -ud world; emerge –depclean; revdep-rebuild

j'ai dès le début 2 news à lire, ce qui se fait avec un

# eselect news read

(p.m une fois lues, pour retrouver ces news, il vous faut lancer "eselect news list" puis un eselect news read <item>" avec pour <item> le numéro correspondant à la new que vous voulez lire.)

La première m'annonce :

2011-04-27-glib-228
 Title Upgrade to GLIB 2.28

 Author The Gentoo Freedesktop Maintainers
  <freedesktop-bugs@gentoo.org>
  Posted 2011-04-27
 Revision                  1

The method for
setting default applications for specific URI types (https://,
mailto://, etc.) changed in dev-libs/glib-2.28 and newer.

If you
previously set them in GConf using the Configuration Editor, they
will now be ignored.

If you use GNOME, you must upgrade
gnome-session and gnome-control-center and set your default
browser/mail-client again.

If you don't use GNOME, you should
ensure that the file ~/.local/share/applications/mimeapps.list has
the following content:

[Added Associations]
x-scheme-handler/http=$browser_name.desktop;
x-scheme-handler/https=$browser_name.desktop;
x-scheme-handler/mailto=$mailclient_name.desktop;

Replace
$browser_name.desktop and $mailclient_name.desktop with the
appropriate file from /usr/share/applications that can handle
http/https/mailto URIs.

The system-wide version of the file is
often at /usr/share/applications/defaults.list instead.

Please
make sure that your browsers and mail clients have been upgraded to
the latest stable versions before doing all this.
More information about using defaults.list and mimeapps.list is at:
http://www.freedesktop.org/wiki/Specifications/mime-actions-spec


En clair, cela concerne l'upgrade vers glib 2.28. En gros les appels par défaut d'application de type URI (https://, mailto://, etc.) changent. Si nous avions utilisé Configuration Editor pour les définir dans GConf, et bien ces configurations seront ignorées.

La seconde nouvelle est plus inquiétante :

2011-05-01-baselayout-update
  Title    Baselayout update
  Author   Christian Faulhammer <fauli@gentoo.org>
  Author   William Hubbs <williamh@gentoo.org>
  Posted   2011-05-01
  Revision 1

The baselayout package provides files which all systems must have in
order to function properly. You are currently using version 1.x,
which has several issues. The most significant of these is that the
included init scripts are written entirely in bash, which makes them
slow and not very flexible.

On 2011/05/08, you will see an update for sys-apps/baselayout to 2.x 
and a new package,sys-apps/openrc. It is recommended that you perform
this update as soon as possible.

Please note, after these packages are
emerged, it is __Absolutely_Critical__ that you immediately update
your configuration files with dispatch-conf, etc-update or a similar
tool then follow the
steps in the migration guide located at the
following URL.

http://www.gentoo.org/doc/en/openrc-migration.xml

FAILURE
TO FOLLOW ALL OF THESE STEPS WILL RESULT IN AN UNBOOTABLE SYSTEM! IF
THIS SHOULD HAPPEN, YOU WILL NEED TO BOOT FROM A LIVE CD OR DVD,
MOUNT YOUR ROOT FILE SYSTEM, CHROOT INTO THAT ENVIRONMENT AND FOLLOW
THE ABOVE STEPS!

Quand on voit "Absolutely Critical" et "RESULT IN AN UNBOOTABLE SYSTEM", on craint le pire.

Pourtant mon gros problème ne viendra pas de là.

1 – La commande "Emerge" ne fonctionne plus – Python n'est plus installé

En effet mes quelques 146 mises à jour se passent correctement, vient le temps du emerge –depclean puis du revdep-rebuild et là message d'erreur !

Lorsqu'on regarde les logs d'emerge ("/var/log/emerge.log"), on remarque :

- Dans la séquence –update :

1307026442:  ::: completed emerge (103 of 146) dev-lang/python-2.7.1-r1 to /

- Dans la séquence –depclean :

1307088818: === Unmerging...(dev-lang/python-2.6.6-r2)
1307088829:  >>> unmerge success: dev-lang/python-2.6.6-r2

 - Et enfin sur la séquence revdep-rebuild

 1307132694:  === (10 of 16)
Compiling/Merging
(net-analyzer/net-snmp-5.4.2.1-r4::/usr/portage/net-analyzer/net-snmp/net-snmp-5.4.2.1-r4.ebuild)
1307133675:  *** Finished. Cleaning up...
1307133676:  *** exiting unsuccessfully with status '1'.
1307133679:  *** terminating.

Et dans l'affichage on trouve un :

requires libpython2.6.so.1.0

Par ailleurs, les commandes "emerge" ne fonctionnent plus, au sens où elles me renvoient que dalle, rien, nada, ...

Le changement de version de Python doit y être pour quelque chose, je tente alors un :

# python-updater

qui me répond

python 2 and 3 not installed

Sur le net d'autres ont exactement la même problématique et la réponse la plus avisée fut celle-ci.

Elle consiste à passer les commandes suivantes :

# eselect python list
[1] python2.7
[2] python3.1 

# eselect python set 1

Un python-updater est également nécessaire (mais il me semble de mémoire qu'à ce stade il ne va pas jusqu'au bout à cause de java-config, que je résouds au chapitre suivant)

Et de recommencer la procédure de mise à jour, car emerge fonctionne de nouveau.

2 – "revdep-rebuild" demande une mise à jour de setuptools et n'arrive pas à trouver java-config

Pour net-analyser/net-snmp-5.4.2.1-14, j'ai (/var/log/emerge.log)

1307132692:  >>> emerge (10 of
16) net-analyzer/net-snmp-5.4.2.1-r4 to /
1307132693:  === (10 of 16) Cleaning
(net-analyzer/net-snmp-5.4.2.1-r4::/usr/portage/net-analyzer/net-snmp/net-snmp-5.4.2.1-r4.ebuild)
1307132694:  === (10 of 16)
Compiling/Merging
(net-analyzer/net-snmp-5.4.2.1-r4::/usr/portage/net-analyzer/net-snmp/net-snmp-5.4.2.1-r4.ebuild)
1307133675:  *** Finished. Cleaning
up...
1307133676:  *** exiting unsuccessfully
with status '1'.

Et dans l'affichage (ou dans /var/tmp/portage/net-analyser/net-snmp-5.4.2.1-r4/temp/build.log que je n'ai pas gardé), on me parle de setuptools. Donc :

# emerge -va setuptools

puis

# emerge net-snmp

et c'est OK. Si tel n'est pas le cas essayez de supprimer et de ré installer, comme ceci :

# emerge -C setuptools
# emerge setuptools

idem avec net-snmp.

Je relance la mise à jour et cette fois, pour subversion-1.6.16, j'ai le message suivant :

Can't run java-config --help
Have you upgraded python recently but
haven't run python-updater yet?
ERROR: dev-vcs/subversion-1.6.16 failed
(setup phase):
    Can't run java-config –help

Problème similaire évoqué et résolu ici, et qui en résumé se résoud par un re emerge de java-config.

# emerge -va java-config

Nota : ne pas oublier de supprimer les fichiers temporaires :

# rm /var/cache/revedep-rebuild/*-rr

avant de relancer un revdep-rebuild.

3 – Garantir la migration vers openrc

Là j'ai suivi strictement cette page (que je vous conseille fortement de lire), et voici les changements que j'ai apporté (mais vous pouvez en avoir d'autres selon votre configuration, c'est pourquoi la lecture de la page de migration à Openrc est nécessaire) :

     3-1 La mise à jour des fichiers de configuration

J'ai 21 fichiers de configuration, tous n'ont pas la même importance, voici ceux que j'ai trouvé intéressants :

  • /etc/host

c'est là que l'on met le nom de la machine, avec /etc/conf.d/hostname

  • /etc/networks

A noter que l'on y trouve l'adresse par défaut lorsqu'il n'y a pas de réseau (169.254.0.0)

  • /etc/bash

  • /etc/protocols

  • /etc/screenrc

  • /etc/services

  • /etc/sysctl.conf

  • /etc/conf.d/consolefont

  • /etc/conf.d/hostname

  • /etc/conf.d/hwclock

  • /etc/conf.d/keymaps

Si on veut un clavier français sous console (c.a.d lorsqu'on n'est pas sous X, à la mise en route notamment), il faut y mettre keymap="fr-latin9" au lieu de "us"

  • /etc/tor/torrc

Ces fichiers se mettent à jour avec la commande "etc-update" ou "dispatch-conf" qui permet d'aller un peu plus vite, tout en gardant la visibilité des changements pour chaque fichier.

    3.2 /etc/conf.d/rc

/etc/conf.d/rc est devenu obsolète et les paramètres que vous y avez placés devront être migrés à l'endroit approprié dans le fichier /etc/rc.conf. Moi je n'y avais rien mis, mais par précaution plutôt que de supprimer /etc/conf.d/rc je l'ai renommé en /etc/conf/d/rc.old.

    3-3 Mettre net.eth0

Sous /etc/init.d, le lien net.eth0 n'existait pas, mais mes liens (connection Wi-Fi) sur net.wlan0 et net.wlan1 eux été présents. Cela se crée facilement par :

# cd /etc/init.d
# ln -s net.lo net.eth0

Par ailleurs, il y a quelque modif à apporter à /etc/conf.d/net, où il faut simplement enlever les parenthèses existantes, par exemple :

Voici un exemple de code ancienne configuration de /etc/conf.d/net

config_eth0=( "192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255" )
routes_eth0=( "default via 192.168.1.100" )

et voici le code précédent version nouvelle configuration de /etc/conf.d/net

config_eth0="192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255"
routes_eth0="default via 192.168.1.100"

Comme ils n'étaient pas dans la séquence de boot :

# ls -al /etc/runlevels/boot/

j'ai du ajouter net.eth0 et mes net.wlanx au démarrage par :

# rc-update add net.eth0 boot

    3-4 Horloge

Les paramètres de l'horloge ont changé également, pour moi cela s'est fait automatiquement.

Mais la variable TIMEZONE est à présent placé dans le fichier /etc/timezone. S'il n'existe pas, vous devrez le créer avec votre fuseau horaire.

# vi /etc/timezone
Europe/Paris

    3.5 Journal de démarrage

Je trouve intéressant d'avoir un log du démarrage (même si avant je n'en avais pas). Mais avec OpenRC, c'est simple, il suffit d'écrire dans /etc/rc.conf

rc_logger="YES"

et les messages seront écrits dans /var/log/rc.log.

4 – Le "reboot" : clavier anglais et plus de Wi-Fi

Lors de la mise à jour des fichiers de configuration, vous avez du louper la modification de "/etc/conf.d/keymaps" dans lequel il faut écrire :

keymap="fr-latin9"

et non keymap='"us". Vous pouvez choisir le clavier qui vous convient le mieux sous "/usr/share/keymap/"

Pour le Wi-Fi, il y a quelque modif à apporter à /etc/conf.d/net  en effet le fichier /etc/conf.d/net n'utilise plus les tableaux de style bash pour la configuration. Vous devriez votre bonheur dans le fichier /usr/share/doc/openrc-<version>/net.example pour les instructions de configuration. La conversion devrait être assez simple, par exemple l'affectation d'une adresse IP statique devra se faire ainsi :

  • Exemple de code avec l'ancienne configuration de /etc/conf.d/net
config_eth0=( "192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255" )
routes_eth0=( "default via 192.168.1.100" )
  • et le même code avec la nouvelle configuration de /etc/conf.d/net
config_eth0="192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255"
routes_eth0="default via 192.168.1.100"

Bref les parenthèses disparaissent !

Ensuite un :

# ls -al /etc/runlevels/boot/

montre que si net.lo est bien dans le process de boot, ce n'est pas le cas de /etc/init.d/net.wlan0, on corrige ce manque par :

# rc-update add net.wlan0 boot

Et voilà, tout est maintenant nickel !

Actions sur le document