1. Riparare manualmente portage
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).
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.