Vi avranno detto che non si può fare e basta (vedasi la FAQ di Gentoo su AMD64). In realtà si può fare, come si evince da quest'altra guida. Quest'ultima guida è un pelino scarna e, forse, dà per scontate troppe cose.
Perché ho dovuto fare tutto 'sto ambaradan? Beh. Dovevo installare roba che, se dovessi aspettare la facciano per i 64bit, creperei prima io. Di vecchiaia.
Inizialmente, il gentoo che ho qua in ufficio era impostato così:
xxxxxx ~ # eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/13.0
[2] default/linux/amd64/13.0/selinux
[3] default/linux/amd64/13.0/desktop
[4] default/linux/amd64/13.0/desktop/gnome
[5] default/linux/amd64/13.0/desktop/gnome/systemd
[6] default/linux/amd64/13.0/desktop/kde
[7] default/linux/amd64/13.0/desktop/kde/systemd
[8] default/linux/amd64/13.0/developer
[9] default/linux/amd64/13.0/no-multilib *
[10] default/linux/amd64/13.0/x32
[11] hardened/linux/amd64
[12] hardened/linux/amd64/selinux
[13] hardened/linux/amd64/no-multilib
[14] hardened/linux/amd64/no-multilib/selinux
[15] hardened/linux/amd64/x32
[16] hardened/linux/uclibc/amd64
Non so come sia il vostro. In ogni caso, per ora, NON pensateci nemmeno a passare a un qualsivoglia x32. È tuttora sperimentale (this is NOT Sparta, ragà). Se lo fate cercatevi 'nartra guida e non rompetemi più le scatole. Io ho scelto la [1]
, col comando eselect profile set 1
. Dopodiché createvi una dir 'ndovecazzovepare, in /media, /mnt o /sarcazzo.
Io ho scelto /mnt/switch
per la "gabbia" dove poi ricompilerò tutta la fuffa necessaria a ripartire come multilib (glibc, gcc). Siccome i vari tools per la compilazione già presenti nel mio sistema sono tutti no-multilib, devo appunto usare una gabbia dove scaricare e decomprimere il stage3 multilib, contenente giustappunto i tools in questione:
xxxxxx ~ # mkdir /mnt/switch/
xxxxxx ~ # cd /mnt/switch/
xxxxxx switch # wget http://distfiles.gentoo.org/releases/amd64/current-iso/stage3-amd64-20140320.tar.bz2 ./
xxxxxx switch # tar xpf stage3-amd64-20140320.tar.bz2 -C /mnt/switch/
Ora preparariamo la gabbia per la ricompilazione summenzionata...
xxxxxx switch # mount -t proc none /mnt/switch/proc
xxxxxx switch # mount -o bind /dev /mnt/switch/dev
xxxxxx switch # mkdir /mnt/switch/usr/portage
xxxxxx switch # mount -o bind /usr/portage /mnt/switch/usr/portage
xxxxxx switch # cp -L /etc/resolv.conf /mnt/switch/etc/
xxxxxx switch # cp -r /etc/portage/* /mnt/switch/etc/portage/
xxxxxx switch # cp -L /etc/locale.gen /mnt/switch/etc/
xxxxxx switch # cp -L /etc/make.conf /mnt/switch/etc/
xxxxxx switch # chroot /mnt/switch /bin/bash
xxxxxx / # env-update
Ho copiato il locale.gen perché il mio ha poche localizzazioni (5 invece di 445), e il make.conf, perché era in /etc e non in /etc/portage. Ovviamente, anche qui vale il solito disclaimer: se copiateincollate ciecamente senza riflettere, cazzivostri :) Altrettanto ovviamente, verificate che i vari USE non vadano in conflitto con il multilib futuro (io ho rimosso "-multilib", per esempio) PRIMA di copiare. Finito con l'env-update, riverificate con eselect profile list prima di proseguire.
Prima di ricompilare glibc e gcc controllate non solo che siano versioni il più possibili "vicine" a quelle fuori dalla gabbia, ma anche che siano effettivamente predisposti per il multilib, con emerge -pv
. Ricompilate prima glibc, poi controllate se dovete ricompilare anche binutils, coreutils e libtool. Poi rifate lo stesso con gcc. Dopo la ricompilazione, verificate con gcc-config e fix_libtool_files.sh. Infine create i pacchetti binari di glibc e gcc con il comando quickpkg
(se avete ricompilato anche altra roba nella gabbia, aggiungete anche quelli), che li metterà in /usr/portage/packages/.
Uscite dalla gabbia. Per reinstallare glibc e gcc "multilibbati" dai pacchetti, usate prima emerge -Kpv1
per essere sicuri. Dovrebbero essere di color violetto e comunque riportare qualcosa tipo:
xxxxxx ~ # emerge -Kav1 glibc
These are the packages that would be merged, in order:
Calculating dependencies... done!
[binary R ] sys-libs/glibc-2.17:2.2 USE="gd (multilib*) -debug (-hardened) -nscd -profile (-selinux)
-suid -systemtap -vanilla" 0 kB
Total: 1 package (1 reinstall, 1 binary), Size of downloads: 0 kB
Se non vi fidate, controllate:
xxxxxx ~ # emerge -av1 glibc
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] sys-libs/glibc-2.17:2.2 USE="gd (multilib*) -debug (-hardened) -nscd -profile (-selinux)
-suid -systemtap -vanilla" 0 kB
Total: 1 package (1 reinstall), Size of downloads: 0 kB
Da qui proseguite come al solito (dispatch-conf, gcc-config, fix_libtool_files.sh, eccetera, eccetera, ricostruzione della fuffa di base, poi di world e, se necessario, anche del kernel), secondo i vostri gusti/paranoie/rituali apotropaici... (se pensavate di poter pendere tranquillamente dalle mie labbra, col cacchio. Sarò nerd, ma sono umana anche io, indi soggetta a dimenticanze, errori, eccetera.)
Nessun commento:
Posta un commento
NOTA BENE: TUTTI i commenti sono moderati... se non sono in vacanza, controllo quasi ogni giorno. Ovviamente, se siete spammers vi cancello :)