Riparare manualmente installazioni di portage non funzionanti
1.
Riparare manualmente portage
Scopo
Questo documento suggerirà come aggiornare/riparare l'installazione di portage
nel caso in cui non sia possibile lanciare emerge sys-apps/portage.
Sebbene non sia un procedimento difficile, è necessario eseguirlo comunque con
molta attenzione, seguendo i passi indicati così come compaiono in questo
documento (usando se necessario un po' di buonsenso).
Nota:
Uno script per automatizzare la procedura seguente è disponibile qui.
|
Ottenere un tarball di portage
Il primo passo da eseguire è ottenere il tarball (archivio tar) di una versione
corrente di portage. Nel testo seguente verrà usato portage-2.1.1 come
esempio (questa è la versione stabile al momento della scrittura); sostituire
questa versione con una di quelle presenti nel tree (insieme dei pacchetti) se
possibile.
Avvertenza:
Se la propria corrente versione installata di python riportata da python
-V è minore di 2.4 allora bisogna scegliere una versione di portage
compatibile con esso. Se si possiede almeno la versione 2.3 di python allora
usare portage-2.1.1.tar.bz2. Se si ha python 2.2 allora usare
portage-2.0.51.22.tar.bz2.
|
A seconda della ragione per cui portage non funziona più potrebbe essere
comunque possibile usarlo per recuperare il pacchetto di cui sopra: come primo
passo provare ad eseguire emerge --fetchonly sys-apps/portage; se ciò non
dovesse funzionare, è necessario scaricare manualmente il pacchetto con:
Codice 1.1: Recuperare il pacchetto di portage con wget |
# wget -P /usr/portage/distfiles http://distfiles.gentoo.org/distfiles/portage-2.1.1.tar.bz2
|
Concluso questo passaggio si dovrebbe avere a disposizione il pacchetto in
/usr/portage/distfiles/portage-2.1.1.tar.bz2.
Sostituire la versione installata
Il passaggio seguente consiste nell'estrarre il pacchetto in una directory
temporanea; usando /root/portage-recover i comandi per eseguire
l'estrazione sono:
Codice 1.2: Estrazione del pacchetto di portage |
# cd /root
# mkdir portage-recover
# cd portage-recover
# tar xfj /usr/portage/distfiles/portage-2.1.1.tar.bz2
|
Dopo aver eseguito questo passo, è solamente questione di sostituire i file di
python e bash della precedente installazione di portage con quelli dal pacchetto
(almeno nella maggior parte dei casi). Per farlo, eseguire:
Codice 1.3: Sostituzione dei file installati |
# cd /root/portage-recover/portage-2.1.1
# cp -R pym bin /usr/lib/portage/
|
Se non si sta usando Gentoo su FreeBSD allora è consigliabile rimuovere lo
script wrapper per sed poichè non è necessario e causa problemi con vecchie
versioni di bash:
Codice 1.4: Rimuovere lo script wrapper per sed |
# rm -f /usr/lib/portage/bin/sed
|
Nota:
Se portage è stato accidentalmente disinstallato prima di questo momento o è
stato perso il file /etc/make.globals per altre ragioni, è
necessario copiare cnf/make.globals in /etc,
altrimenti portage potrebbe comportarsi in maniera strana.
|
Nota:
Se la versione precedente di portage era inferiore alla 2.1 allora bisognerebbe
eseguire immediatamente emerge --metadata prima di continuare con il
passaggio successivo. Questa operazione è necessaria per poter convertire i
metadati degli ebuild al nuovo formato usato da portage 2.1 e successivi. Si può
comunque eseguire senza problemi tale comando anche se non si ha la sicurezza
su quale fosse la versione precedente di portage.
|
Ora si dovrebbe avere nuovamente un portage funzionante. Per assicurarsi di
avere un sistema coerente è necessario eseguire immediatamente emerge
sys-apps/portage.
Se si ottiene un messaggio di errore command not found con il precedente
emerge, è necessario ricreare il link simbolico:
Codice 1.5: Ricreare il link simbolico emerge |
# ln -s ../lib/portage/bin/emerge /usr/bin/emerge
|
Se questo procedimento non funziona, probabilmente portage non è guasto ma c'è
qualche altro problema la cui risoluzione è al di fuori dello scopo del presente
documento. Ricontrollare la Lista dei problemi comuni di
portage (ndT: in lingua inglese) e inoltre cercare in bugzilla se il problema è già stato
segnalato.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|