cerhu > linux.debian.user.french

MERLIN Philippe (04/05/2017, 15h00)
Bonjour,
Sur ce poste est installé la Debian testing à jour et j'ai essayé de migrer
d'une version 32 bits vers 64 bits en suivant la doc
[..]
Tout a très bien marché, j'ai bien migré vers une version 64 bits de la
testing qui fonctionne très bien avec un noyau AMD 64 et des librairies 32
bits Merci Multi-Arch , mais il y a un mais.... Si je veux migrer tous les
paquets installés de 32 bits à 64 bits par la commande :
dpkg --get-selections|grep :i386 |sed -e s/:i386/:amd64/ | dpkg --set-
selections
J'obtiens une liste de warning :
package not in status nor available database a line xxx : xxxx:amd64
une ligne par paquet répondant à dpkg --get-selections
On dirait que les paquets amd64 sont ignorés.
dpkg --print-architecture me donne bien
amd64
si je fait un apt-cache policy xxxx (xpack étant un paquet i386)
le paquet est dit non installé et le candidat est un paquet amd64
si je fait un apt-get download xpack c'est bien un paquet amd64 qui arrive.
J'ai fait des apt-get update
j'ai essayé beaucoup de commande :
sync-available
qui donne "l'information sur 90355 paquets a été mis à jour"
toujours sans succès
un apt-get -f install se casse la figure avec des tas d'insultes
donc résumons cela marche grâce à multi-arch mais je ne peux plus faire de mis
à jour.
Avez vous rencontrer ce problème, ou pourrais je m'adresser pour avoir de
l'aide ?
Philippe Merlin
P.S. les commentaires du genre c'est ta faute tu l'as bien cherché ne sont
pas la bienvenue
Étienne Mollier (05/05/2017, 20h10)
Bonjour Philippe,

Philippe Merlin, le 2017-05-04 à 14:53:16 CEST :
> Sur ce poste est installé la Debian testing à jour et j'ai
> essayé de migrer d'une version 32 bits vers 64 bits en suivant
> la doc
> [..]


Intéressante manipulation, j'ai essayé dans une machine
virtuelle. Le moins qu'on puisse dire, c'est que c'est délicat.
Ma configuration était une machine en Testing avec uniquement les
composants de base, donc je suis probablement passé à côté des
problèmes de configuration.

Avant toute chose, j'espère que tu as une copie de sauvegarde des
donnée de ta machine et de sa configuration et que tu sais
comment la restaurer.

Les liens en bas de la page du wiki CrossGrading renvoient sur
d'autres retours d'expérience. Il ne faut pas hésiter à les
consulter également pour voir leurs approches. En particulier,
j'ai trouvé de l'inspiration dans l'article suivant :

[..]

Ce n'est pas mentionné dans ton courriel, mais je pars du
principe que tu as pu installer tes commandes tar, dpkg et apt en
version 64bits :

$ file $(which tar)
/bin/tar: ELF 64-bit LSB shared object, ...
$ file $(which dpkg)
/usr/bin/dpkg: ELF 64-bit LSB shared object, ...
$ file $(which apt-get)
/usr/bin/apt-get: ELF 64-bit LSB shared object, ...

Si ce n'est pas le cas et que quelque chose a cassé, les
manipulations à base de `ar' et de `busybox tar' mentionnée dans
les retours d'expérience peuvent éventuellement te sauver la
mise.

> Tout a très bien marché, j'ai bien migré vers une version 64
> bits de la testing qui fonctionne très bien avec un noyau AMD
> 64 et des librairies 32 bits Merci Multi-Arch , mais il y a un
> mais.... Si je veux migrer tous les paquets installés de 32
> bits à 64 bits par la commande :
> dpkg --get-selections|grep :i386 |sed -e s/:i386/:amd64/ | dpkg --set-selections
> J'obtiens une liste de warning :
> package not in status nor available database a line xxx : xxxx:amd64
> une ligne par paquet répondant à dpkg --get-selections
> On dirait que les paquets amd64 sont ignorés.


Les paquets amd64 sont effectivement ignorés. L'erreur se
produit dans mon cas d'utilisation aussi. Un gourou de dpkg aura
sans doute la solution pour résoudre ce problème proprement.
Pour ma part, je suis passé par un fichier temporaire `packages`
pour pouvoir travailler dedans avec un éditeur de texte :

dpkg --get-selections \
| grep :i386 \
| sed -e s/:i386/:amd64/ \
| awk '{print $1}' \
> packages


Le fichier `packages` contient une liste des paquets, un par
ligne, sans le champ d'état d'installation. Je le réutilise pour
une première tentative d'installation des paquets en 64bits :

apt-get install $(xargs < packages)

À la première passe, `apt` sort des erreurs sur des paquets
introuvable. Il faut les retirer de la liste. Typiquement les
images linux 686 sont en cause, mais éventuellement certaines
versions de paquets devenus obsolètes, si des mises à jour sont
passées pendant la crossgrade. C'est souvent le cas des paquets
qui ont leur numéro de version dans leur nom, pour faciliter
l'installation de versions différentes sur un même système.

En relançant la commande sans les erreurs sur les paquets
indisponibles, l'installation démarre. Étant donné les
composants de c?ur en 32bits qui nécessiteront un
désinstallation, il est vraisemblable qu'apt demande de confirmer
l'opération par la saisie au clavier d'une locution: "Yes, do as
I say!" sur une machine localisée en en_US. La désinstallation
de perl-base:i386 dans mon cas a été la cause du message. Si
l'opération plante, passer un coup `apt-get -f install` avant de
recommencer avec la liste complète des paquets.

Il est probable que certain services récalcitrants bloquent le
gestionnaire de paquet. Dans ce cas j'ai eu la chance de pouvoir
désinstaller manuellement le composant, puis le réinstaller après
coup dans sa nouvelle architecture. En l'occurrence, il
s'agissait du passage de acpid:i386 à acpid:amd64.

Quand une tentative d'installation de l'ensemble des paquets
termine en disant que tout est bien installé et qu'aucune
opération n'est à effectuer, alors la partie 64bits du système
est normalement complète. Les paquets en 32bits peuvent être
enlevés :

dpkg --get-selections \
| grep :i386 \
| awk '{print $1}' \
> packages.i386


apt-get remove $(xargs < packages.i386)

À ce stade, le système ne doit plus comporter de binaire 32bits
sur disque et être capable de tourner juste avec les paquets
amd64. Reste à redémarrer la machine pour arrêter les processus
32bits encore en cours d'exécution, tel l'init.

Si la machine est capable de redémarrer correctement avec ses
services opérationnels après ce traitement, alors la bouteille
réservée aux jours de fêtes sera amplement méritée. :-)

À plus,
Daniel Caillibaud (09/05/2017, 19h30)
Le 05/05/17 à 20:05, Étienne Mollier <etienne.mollier>a écrit :
> Intéressante manipulation, j'ai essayé dans une machine
> virtuelle. Le moins qu'on puisse dire, c'est que c'est délicat.


Et intéressante contribution !

Je me suis demandé pourquoi xargs sur

> apt-get install $(xargs < packages)


car en bash le $(< fichierQcq) transforme les \n en espaces, et je l'utilise depuis des
années sans me poser de question, mais effectivement avec dash (par ex) $(<fichier) ne sort rien
(même pas la 1re ligne) et xargs est alors nécessaire.
Étienne Mollier (12/05/2017, 20h30)
On 05/09/2017 07:27 PM, Daniel Caillibaud wrote:
> Je me suis demandé pourquoi xargs sur
>> apt-get install $(xargs < packages)

> car en bash le $(< fichierQcq) transforme les \n en espaces, et
> je l'utilise depuis des années sans me poser de question, mais
> effectivement avec dash (par ex) $(<fichier) ne sort rien (même
> pas la 1re ligne) et xargs est alors nécessaire.


Bonjour Daniel,

J'aurais aimé dire que c'était voulu, mais à la base, c'était une
simple méconnaissance de cette construction de ma part. Merci
beaucoup, j'ai appris un truc, très utile qui plus est. :D

Effectivement, dépendant des situations, les constructions ne
sont pas toujours possibles. Par exemple, si on a cassé la lib C
et qu'on ne peut se ratrapper qu'avec un shell `busybox ash',
alors la construction utilisable dans ce cas est celle en
`xargs'. Et encore, parce que `xargs' est un builtin de busybox.
Sinon dans ce cas précis, en `dash', aucune des constructions
n'aurait fonctionné. Enfin, en `bash' seule la construction en
`$(<file)' aurait fonctionné.

À plus,
Discussions similaires
[testing] migration 32 vers 64 bits

Vista Ultimate 32 bits OEM vers 64 bits

passage 32 bits vers 64 bits : mem virtuelle facteur 2

Faire cohabiter Analysis Services 64 Bits avec SQL Server 32 Bits ?...


Fuseau horaire GMT +2. Il est actuellement 09h12. | Privacy Policy