giovedì 6 novembre 2014

Aggiornamento Chakra: breve guida

Propongo di seguito una guida basata sul Wiki pubblicato sul sito ufficiale e tradotto dal buon FranzMari, riguardo l’ultimo delicato aggiornamento di Chakra Linux che, come anticipato dalla news, richiede un intervento manuale.




VERIFICA REPOSITORY


L’aggiornamento in questione richiede che siano presenti nei repository i pacchetti  linux-3.16.4-1 e glibc-2.20-1, verificare la versione attualmente presente con i comandi


pacman -Si glibc
pacman -Si linux


Se i comandi di cui sopra restituiscono una versione precedente a linux-3.16.4-1 e glibc-2.20-1, sarà necessario attendere la corretta sincronizzazione dei mirror.


Nota: una volta avviato l’aggiornamento seguendo la procedura descritta di seguito, è necessario completare tutti i passaggi indicati, diversamente il sistema non sarà avviabile.


Attenzione: non usare mai --force durante l’aggiornamento.


A causa delle limitazioni del sistema di gestione dei pacchetti, per questo aggiornamento sarà necessario intervenire manualmente con la procedura di seguito descritta.



PREPARAZIONE DEL SISTEMA


Quando si aggiorna Chakra tramite il comando


pacman -Syu


sarà molto probabile che si verifichino conflitti con


/ bin
/ sbin
/ lib
/ lib64
/usr / lib64


Prima di iniziare, assicurarsi di eseguire questo aggiornamento all'interno di una shell di root, sudo potrebbe non essere adatto.


Controllare i file rimanenti


Ci sono due gruppi di file che è necessario rimuovere:


1. Tutti i file in / lib / usr / lib64 / lib64 / bin / sbin che non appartengono ad alcun pacchetto.


L’elenco di tali file può essere ottenuto tramite:


find / lib / lib64 / usr / lib64 / bin / sbin -exec pacman -Qoq - {} +> / dev / null


Questo comando cerca e visualizza tutti i file in / lib / lib64 / bin / sbin, e potrebbe restituire un messaggio del tipo:


Errore: Nessun pacchetto possiede / path / to / qualche / file
Controllare attentamente i file e rimuoverli con permessi di root.


Normalmente si vedrà un output vuoto, o potrebbero essere presenti moduli del kernel residui relativi a virtualbox in /lib/modules.


2. Tutti i file in / lib / lib64 / usr / lib64 / bin / sbin di proprietà di alcuni pacchetti non ufficiali.


L’elenco di tali file può essere ottenuto tramite:


pacman -Qqo / bin / sbin / lib / lib64 / usr / lib64 | pacman -Qm -


Rimuovere (o aggiornare se possibile) tutti i pacchetti non ufficiali dei nell'output con


pacman -R nome-pacchetto


Se si ha realmente bisogno di alcuni di questi pacchetti / file, si può considerare la rimozione e re-installazione in un secondo momento, dopo aver completato tutti i passaggi indicati di seguito.


AGGIORNAMENTO DEL SISTEMA


È necessario utilizzare i seguenti comandi in questo ordine per eseguire un aggiornamento completo.


È necessario eseguire i comandi seguenti in questo ordine per eseguire un aggiornamento completo. Tutti i comandi devono essere eseguiti insieme, il che significa che non si deve riavviare il sistema, non si deve chiudere il terminale, non si deve chiudere la sessione.


Nel caso di notebook è quindi consigliabile eseguire l'aggiornamento con il cavo di alimentazione collegato.


Assumere i privilegi di ROOT


sudo su


Dare quindi i comandi


pacman -Sy
pacman -Su --ignore glibc, lib32-gcc-libs, filesystem, bash


Se avete ancora / lib / modules, a questo punto, verificare con attenzione i file
Se i file sono tutti per i vecchi moduli del kernel, è possibile rimuoverli con
Rm -rf / lib / modules


pacman -Su --ignore filesystem, bash
pacman -Su --ignore filesystem
pacman -Su

Rispondere con attenzione y a domande del tipo:


:: I seguenti pacchetti non possono essere aggiornati a causa di dipendenze irrisolvibili:
     binutils gcc gcc-libs libtool
:: Vuoi saltare i pacchetti di cui sopra per questo aggiornamento? [Y / n] y


Anche se il kernel di Linux è aggiornato, depmod e mkinitcpio mostreranno alcuni errori perché non è ancora stato creato il symlink al percorso corretto dei moduli.


È possibile ignorarli per il momento, ma NON riavviare il sistema, altrimenti il kernel non sarà in grado di avviare il sistema.


Nota: Durante l'aggiornamento, pacman può individuare un conflitto nella directory / lib con il messaggio:


error: failed to commit transaction (file in conflitto)
glibc: /lib è già presente nel filesystem
Si sono verificati degli errori, nessun pacchetto è stato aggiornato.


Ciò significa che sono ancora presenti file in /lib, quindi occorre tornare indietro e seguire Check leftover files (la rimozione dei pacchetti vista in fase preparazione) per correggerli.

COMPLETAMENTO AGGIORNAMENTO


Se tutto va bene, dopo tutti gli aggiornamenti di cui sopra, il vostro sistema sarà ancora utilizzabile, il che significa che normalmente è possibile avviare un nuovo processo.


È possibile controllare l'esito dell’aggiornamento dando


ls -l / lib *


L'output sarà simile (Data e ora sarà il vostro tempo) a: ls -l / lib *


lrwxrwxrwx 1 root root 7 15 set 16:53 / lib -> usr / lib
lrwxrwxrwx 1 root root 7 15 set 16:53 / lib64 -> usr / lib


Occorre ancora ricompilare l'immagine del kernel reinstallando il pacchetto del kernel:


pacman -S linux


In alternativa, se si utilizza il kernel LTS eseguire:


pacman -S linux-lts


Questa volta depmod non dovrebbe lamentarsi.


Alcuni utenti hanno segnalato problemi con GRUB. Anche se questo non dovrebbe dipendere da questo specifico aggiornamento di glibc, una nuova versione di GRUB dovrebbe essere installata al momento del presente aggiornamento e dovrebbe essere sicuro installare nuovamente GRUB se lo si utilizza.


Per la reinstallazione di Grub, è possibile controllare GRUB in ArchWiki.

SOLUZIONI A ERRORI COMUNI


# Non è stato usato l’utente root per aggiornare


Questo potrebbe causare alcuni problemi dopo l'aggiornamento di bash, perché il nuovo eseguibile di bash si trova in /usr/bin, ma il nuovo symlink in /bin non è ancora stato installato.


In questo caso, se si ha una finestra di terminale aperta, occorre entrare in una shell di root con il seguente comando.


su -s / usr / bin / bash -


Fatto questo si dovrebbe essere in grado di continuare la procedura di aggiornamento.


# Si è dimenticato di ricostruire l’immagine del kernel dopo l’aggiornamento

Trovare un CD o una USB Live e dopo l'avvio premere Ctrl+Alt+F1 (o F2.. F6, dipende dal sistema live in uso) per passare all'interfaccia a riga di comando, oppure avviare un emulatore di terminale (es. konsole, gnome-terminal, xterm). Eseguire:

su -

o

sudo su -

per passare all'account root. Potrebbe essere necessaria la password (di solito è vuota o indicata in un posto ben visibile; la password di root dell'ISO di Chakra è root).

Dopodiché è necessario montare il disco del sistema ed entrare in esso tramite chroot per ricostruire l'immagine del kernel. Il numero della partizione dipende dallo schema delle partizioni del proprio sistema. Supponendo che /dev/sda1 sia la partizione radice (/), eseguire rebuild. i seguenti comandi per impostare un punto di mount dove sia possibile effettuare il chroot.

mkdir / chakra_root
# Mount partizione di root
mount / dev / sda1 / chakra_root
# Mount tmpfs di sistema
mount -o bind / dev / chakra_root / dev
mount -o bind / tmp / chakra_root / tmp
mount -o bind / sys / chakra_root / sys
mount -o bind / proc / chakra_root / proc

Se si utilizza una partizione di /boot separata, sarà necessario montare anch'essa. Utilizzare fdisk -l per controllare la partizione, se si utilizza MBR, altrimenti usare gdisk se si utilizza GPT.

Dopo aver impostato il punto di mount, eseguire:

chroot / chakra_root

per entrare in chroot

Poi si può ricostruire la propria immagine del kernel come descritto in precedenza.

# Messaggio di errore da ldconfig

Potrebbe verificarsi in fase di aggiornamento un errore del tipo:

ldconfig: /usr/lib/libguile-2.0.so.22.7.2-gdb.scm non è un file ELF - i byte magic iniziali sono sbagliati.

L'errore in questione si presenta all'installazione di qualsiasi pacchetto come anche al termine della ricompilazione dell'immagine del kernel, questo errore denota la concreta possibilità che il sistema non risulti avviabile, di conseguenza il sistema non va riavviato e va imputato il comando:

rm /usr/lib/libguile-2.0.so.22.7.2-gdb.scm

Il comando va dato con privilegi di root e rimuove il pacchetto incriminato, consiglio successivamente di ridare i comandi:

pacman -Su --ignore glibc,lib32-gcc-libs,filesystem,bash
pacman -Su --ignore filesystem, bash
pacman -Su --ignore filesystem
pacman -Su
pacman -S linux

A questo punto dovrebbe essere sicuro riavviare il proprio sistema. Se aveste riavviato il sistema prima di rimuovere libguile sarà necessario avviare una live ed entrare in ambiente chroot da cui imputare i comandi sopra indicati.

# Servizio di stampa non avviato

Nel caso in cui il servizio di stampa non risultasse avviato dare da terminale:

sudo systemctl enable org.cups.cupsd.path sudo systemctl enable org.cups.cupsd.socket sudo systemctl enable org.cups.cupsd.service

Riavviare quindi il sistema.

Seguite attentamente le istruzioni e nel caso di problemi non esitate ad avvalervi del prezioso aiuto dispensato dalla comunità italiana.

Nessun commento:

Posta un commento