View previous topic :: View next topic |
Author |
Message |
erich.guildenstern n00b

Joined: 19 Apr 2004 Posts: 21
|
Posted: Wed May 12, 2004 9:09 am Post subject: Conservare gli ebuild vecchi durante un emerge sync |
|
|
Ciao.
Uso gentoo su un server di produzione, quindi sono sempre un po' restio ad aggiornare e lo faccio con prudenza, comunque faccio abbastanza regolarmente emerge sync.
La configurazione funzionante comprende apache-2.0.48-r1 e resin-2.6.1; dato che ho notato per esperienza che variare questa coppia porta un po' di problemi mi sarebbe piaciuto conservarla, ma ho notato che dopo uno degli ultimi sync apache-2.0.48-r1 non e' piu' nel portage.
La domanda e': si puo' dire ad emerge di conservare gli ebuild vecchi, o almeno quelli delle versioni installate, durante un sync?
Inoltre: c'e' qualche posto dove ripescare gli ebuild vecchi ed i loro files relativi?
Grazie!
Ciao
-Erich |
|
Back to top |
|
 |
randomaze Bodhisattva


Joined: 21 Oct 2003 Posts: 9985
|
Posted: Wed May 12, 2004 9:16 am Post subject: Re: Conservare gli ebuild vecchi durante un emerge sync |
|
|
erich.guildenstern wrote: | Inoltre: c'e' qualche posto dove ripescare gli ebuild vecchi ed i loro files relativi? |
Qualcosa tipo CVS?
apache-2.0.48-r1.ebuild _________________ Ciao da me! |
|
Back to top |
|
 |
fedeliallalinea Administrator


Joined: 08 Mar 2003 Posts: 31674 Location: here
|
Posted: Wed May 12, 2004 10:00 am Post subject: |
|
|
Potresti crearti /usr/local/portage e mettere li dentro gli ebuild che vuoi conservare. _________________ Questions are guaranteed in life; Answers aren't.
"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968 |
|
Back to top |
|
 |
erich.guildenstern n00b

Joined: 19 Apr 2004 Posts: 21
|
Posted: Wed May 12, 2004 10:12 am Post subject: |
|
|
randomaze wrote: | erich.guildenstern wrote: | Inoltre: c'e' qualche posto dove ripescare gli ebuild vecchi ed i loro files relativi? |
Qualcosa tipo CVS?
apache-2.0.48-r1.ebuild |
Hai assolutamente ragione, grazie, del link!
fedeliallalinea wrote: | Potresti crearti /usr/local/portage e mettere li dentro gli ebuild che vuoi conservare. |
e' quello che ho iniziato a fare, ma (santo cielo!) sono taaaanti!
Sto cercando di pensare ad una procedura per automatizzare la cosa, accetto qualunque tipo di suggerimento in merito! |
|
Back to top |
|
 |
fedeliallalinea Administrator


Joined: 08 Mar 2003 Posts: 31674 Location: here
|
Posted: Wed May 12, 2004 10:20 am Post subject: |
|
|
erich.guildenstern wrote: | Sto cercando di pensare ad una procedura per automatizzare la cosa, accetto qualunque tipo di suggerimento in merito! |
In questo topic ho postato uno script che il lavoro di esync cioe' ti dice gli ebuild nuovi che sono arrivati facendo una copia della lista del portage vecchio e confrontandola con quello nuovo. Modificando questo script puoi fare in modo che copi gli ebuil nuovi in /usr/local/portage senza che cancelli i vecchi cosi' avrai sempre un traccia dei vecchi ebuild. Un problema che potrebbe esserci e' che hai un doppione degli ebuild nuovi quindi non so come si comporta portage. _________________ Questions are guaranteed in life; Answers aren't.
"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968 |
|
Back to top |
|
 |
erich.guildenstern n00b

Joined: 19 Apr 2004 Posts: 21
|
Posted: Wed May 12, 2004 10:56 am Post subject: |
|
|
fedeliallalinea wrote: | Modificando questo script puoi fare in modo che copi gli ebuil nuovi in /usr/local/portage senza che cancelli i vecchi cosi' avrai sempre un traccia dei vecchi ebuild. Un problema che potrebbe esserci e' che hai un doppione degli ebuild nuovi quindi non so come si comporta portage. |
Quindi se ho capito bene tu mi suggerisci di duplicare l'intero portage in /usr/local/portage e poi ad ogni aggiornamento copiare gli ebuild nuovi in quest'ultimo in modo da tenere traccia di tutti quelli vecchi senza mai cancellarli.
E' un metodo un po' "dispendioso", ma puo' funzionare, devo solo controllare che /usr/local/portage abbia la precedenza (a me sembra logico che ce l'abbia, ma non si sa mai).
Cerchero' anche di lavorare sul modo di "proteggere" gli ebuild installati anche se non credo che avro' molto successo... il primo problema che mi viene in mente e': come posso proteggere anche tutti i files/ associati ad un determinato ebuild? temo proprio che non si possa.
Grazie mille per il suggerimento! |
|
Back to top |
|
 |
neon l33t


Joined: 04 Aug 2003 Posts: 759 Location: Catania, Italy, Europe
|
Posted: Wed May 12, 2004 12:00 pm Post subject: |
|
|
Ma in questo modo si vengono ad avere due copie di portage uguali, di cui una crescerebbe a dismisura.
La cosa più comoda sarebbe creare uno script che alla fine di emerge controlla gli ebuild presenti e se qualche versione installata non è presente la scarica dal cvs e la mette in /usr/local/portage (ovviamente il controllo fatto dopo aver aggiornato altrimenti scarica tutto ).
Non credo sia eccessivamente complicata come cosa, lo farei io avendo un pò di tempo, ma il povero gufo ha la precedenza (ormai caduto in no-coding da mesi). Nel frattempo vai di package.mask >net-www/apache-2.0.48-r1 ecc ecc e manualmente aggiungi i pacchetti al local portage (che confermo ha la precedenza) _________________ Io credo che le tecnologie siano moralmente neutrali fino a quando non le utilizziamo - William Gibson
LINEE GUIDA DEL FORUM |
|
Back to top |
|
 |
doom.it Guru


Joined: 23 May 2003 Posts: 430 Location: Pavia, Italy
|
Posted: Wed May 12, 2004 12:49 pm Post subject: |
|
|
Code: |
PORTDIR_OVERLAY="/usr/portage/overlay"
for line in `qpkg -nc -I -v`; do
category=${line/\/*/};
package_version=${line/*\//};
package=${package_version/-[0-9]*/};
version=${package_version/pkg-/};
old_ebuild="/usr/portage/"$category"/"$package"/"$package_version".ebuild"
save_position=$PORTDIR_OVERLAY"/"$category"/"$package"/"
if [ -f $old_ebuild ]; then
[ -f $save_position ] || `mkdir -p "$save_position"`
cp $old_ebuild $save_position;
echo $package_version "SAVED";
else
echo "SKIPPING "$package_version;
fi
done
|
Cambia la dir con quella del tuo PORTDIR_OVERLAY,
e lancialo...
TI salva tutti e soli gli ebuild delle versioni dei pacchetti che hai installato.
Nota che richiede gentoolkit per usare qpkg.
Per vedere quali ebuild non sono piu presenti sul sistema (e quindi non backuppabili) fai un
nomescript | grep "SKIPPING"
oppure commenta la riga
Code: | echo $package_version "SAVED"; |
P.S. grazie a fonderia per il supporto  _________________ I have discovered photography. Now I can kill myself. I have nothing else to learn.
Pablo Picasso |
|
Back to top |
|
 |
FonderiaDigitale Veteran


Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Wed May 12, 2004 1:40 pm Post subject: |
|
|
potresti fare un wrapper per emerge sync che copi i file piu vecchi di tot tempo dentro la directory overlay. Preso dalla solita foga ho fatto il solito script .
Sta qui _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
 |
randomaze Bodhisattva


Joined: 21 Oct 2003 Posts: 9985
|
Posted: Wed May 12, 2004 1:44 pm Post subject: |
|
|
FonderiaDigitale wrote: | Preso dalla solita foga ho fatto il solito script .
|
Ti vedo abbastanza iperattivo ultimamente  _________________ Ciao da me! |
|
Back to top |
|
 |
erich.guildenstern n00b

Joined: 19 Apr 2004 Posts: 21
|
Posted: Wed May 12, 2004 2:36 pm Post subject: |
|
|
Grazie a tutti per l'aiuto!
Ho deciso di adottare la soluzione di doom con qualche modifica:
Code: |
PORTDIR_OVERLAY=$(. /etc/make.conf ; echo $PORTDIR_OVERLAY)
[ -z "$PORTDIR_OVERLAY" ] && echo "Cannot continue, overlay dir is not specified in make.conf" && exit 1
mkdir -p ${PORTDIR_OVERLAY}
LOG="${PORTDIR_OVERLAY}/protect.log"
LAST_LOG="${PORTDIR_OVERLAY}/protect.last.log"
echo -e "\n" >> $LOG
date >> $LOG
echo >> $LOG
date > $LAST_LOG
echo >> $LAST_LOG
for line in $(qpkg -nc -I -v); do
category=${line/\/*/};
package_version=${line/*\//};
package=${package_version/-[0-9]*/};
version=${package_version/pkg-/};
source_dir="/usr/portage/${category}/${package}"
old_ebuild="${source_dir}/${package_version}.ebuild"
save_position="${PORTDIR_OVERLAY}/${category}/${package}/"
if [ -f $old_ebuild ]; then
[ -f $save_position ] || $(mkdir -p "$save_position")
if [ -f "${save_position}/${package_version}.ebuild" ] ; then
echo "$package_version EXISTING" | tee -a $LOG | tee -a $LAST_LOG
else
cp -aui "${source_dir}/files" "${save_position}"
cp -i $old_ebuild $save_position
echo "$package_version SAVED" | tee -a $LOG | tee -a $LAST_LOG
fi
else
echo "$package_version SKIP" | tee -a $LOG | tee -a $LAST_LOG
fi
done
|
Lo script scrive un paio di file di log nella overlay dir, non sovrascrive ebuild esistenti, chiede conferma prima di sovrascrivere files e salva anche le sottodir files/
Accetto ovviamente tutti i possibili suggerimenti  |
|
Back to top |
|
 |
|