PDA

Afficher la version complète : [Script] APT sources



lucienmathieu
13/09/2004, 13h08
voici la mise à jour des sourceshttp://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif 1. Mettre à jour les packages, malheureusement l'installation des sources n'est pas tenue en compte par rpm. Ce serait bien que l'upgrade se fasse par rapport à ce qui est déjà installé.
http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif 2. La recherche de tous les packages déjà installés pour être recompilé.
http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif 3. L'installation des dépendances par rapport aux sources.
http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif 4. La compilation des packages#1
apt-get update -y
apt-get upgrade -y
#2
PACKAGES=`rpm -qa --queryformat "%{NAME}\n"`
#3
for i in $PACKAGES
doapt-get build-dep $i -y 2>> isuse2.err
echo "apt-get build-dep $i rc: $?" >> isuse2.log
if [ $? -gt 0 ]
then
exit
fidone
#4
for i in $PACKAGES
doapt-get -b source $i -y 2>> isuse2.err
echo "apt-get source $i rc: $?" >> isuse2.log
if [ $? -gt 0 ]
then
exit
fido

mortelRDV
30/12/2004, 18h30
j'ai pas trop compris le but ? (surement parce que suis un newbie)

c'est quoi ? récuperer les .src.rpm, les compiler et les installer ?

molodoi
30/12/2004, 23h39
Originally posted by mortelRDV@jeudi 30 décembre 2004 à 17:30
j'ai pas trop compris le but ? (surement parce que suis un newbie)

c'est quoi ? récuperer les .src.rpm, les compiler et les installer ?
<div align='right'><{POST_SNAPBACK}> (index.php?act=findpost&pid=12785)[/quote]

+1

j'ai rien compris http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wacko.gif

mortelRDV
31/12/2004, 08h07
que fait ce script ?
update upgrade, d'accord. mais c'est quoi cette histoire de source ?

<div class='quotetop'>Citation </div>
voici la mise à jour des sources

arrow.gif 1. Mettre à jour les packages, malheureusement l'installation des sources n'est pas tenue en compte par rpm. Ce serait bien que l'upgrade se fasse par rapport à ce qui est déjà installé.
arrow.gif 2. <div class='quotetop'>Citation
La recherche de tous les packages déjà installés pour être recompilé.[/b]
arrow.gif 3. L'installation des dépendances par rapport aux sources.
arrow.gif 4. <div class='quotetop'>Citation </div>
La compilation des packages[/b]

#1
apt-get update -y
apt-get upgrade -y
#2
PACKAGES=`rpm -qa --queryformat "%{NAME}\n"`
#3
for i in $PACKAGES
do

apt-get build-dep $i -y 2>> isuse2.err
echo "apt-get build-dep $i rc: $?" >> isuse2.log
if [ $? -gt 0 ]
then
exit
fi

done
#4
for i in $PACKAGES
do

apt-get -b source $i -y 2>> isuse2.err
echo "apt-get source $i rc: $?" >> isuse2.log
if [ $? -gt 0 ]
then
exit
fi

do[/b][/quote]

okparanoid
02/01/2005, 16h58
C'est quoi ce bordel !

http://okparanoid.free.fr/thom.gif

okparanoid
02/01/2005, 18h47
Alors j'ai surement fait le debile mais j'ai teste ce script en l'associant avec celui de spyhawk pour virer les cpio bad magic's error.

En gros ca scrute les rpm installes et ca les recompile a partir des sources. Est-ce que ca va rendre mon ordi plus rapide vu que c'est lui qui recompile tout lui meme ? Quelles sont les options de compilation qui vont ameliorer le resultat et ou les enregistre-t-on dans le systeme ?

je vous donne le script que j'ai utilise pour ceux qui veulent faire pareil (me suis pas trop foule, juste copie colle deux script, merci a ceux qui les ont fait http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif).

<div class='quotetop'>Citation </div>
#!/bin/bash
#!/bin/sh

# pas de controle d'erreur humain
# fonctionne qu'avec le serveur ftp, mais modification pour http facile
# test sur suse 9.2 seulement
# le lancement se fait en root biensur


# modification du fichier /etc/apt/apt.conf.d/apt.conf pour ne pas upgrade certains
# packages avec la commande 'apt-get upgrade'
# pour définir par défaut des packages, mettre pkgs_default="pkgs1 pkgs2 pkgs3 ..."
# pas besoin décrire le nom du package entierement
pkgs_default=""
pkgs=""

# formater les packages par défaut dans le language correct
if [ -n "$pkgs_default" ]
then
for index in $pkgs_default
do
pkgs=$( echo \"$index\"\; $pkgs )
done
fi

# ajouter aux packages par defaut les packages passés en parametres
while [ -n "$1" ]
do
pkgs=$( echo \"$1\"\; $pkgs )
shift
done

# modification du fichier /etc/apt/apt.conf.d/apt.conf
if [ -n "$pkgs" ]
then
line=$(expr `grep -n "RPM\b" /etc/apt/apt.conf.d/apt.conf | cut -d: -f1` + 1)
head -n $line /etc/apt/apt.conf.d/apt.conf >/tmp/apt.conf.tmp

echo " "Hold { $pkgs }\; >>/tmp/apt.conf.tmp

line=$(expr $line + 1)
tail +$line /etc/apt/apt.conf.d/apt.conf | grep -v "Hold " >>/tmp/apt.conf.tmp
fi


################################################## ############################
# creer un nouveau sources.list en enlevant la vérification de la diff des rpm
################################################## ############################

# mettre à jour le fichier /etc/apt/sources.list sur internet
wget -O /etc/apt/sources.list http://ftp.gwdg.de/pub/linux/suse/apt/SuSE...ources.list.FTP (http://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.2-i386/examples/sources.list.FTP)
# on recupere les en-tetes pour faire joli
head -n 5 /etc/apt/sources.list >/tmp/sources.list.tmp

# on vire tout ce qui finissent par -drpm dans rpm ...
var_repository=""
for index in $(grep "rpm ftp" /etc/apt/sources.list)
do
if [ -z $(echo $index | grep "\-drpm\b") ] && [ $index != "rpm" ]
then
var_repository=$(echo $var_repository $index)
fi
done

echo "rpm "$var_repository >>/tmp/sources.list.tmp

# on vire tout ce qui finissent par -drpm dans rpm-src ...
var_repository=""
for index in $(grep "rpm-src ftp" /etc/apt/sources.list)
do
if test -z $(echo $index | grep "\-drpm\b") && [ $index != "rpm-src" ]
then
var_repository=$(echo $var_repository $index)
fi
done

echo "rpm-src "$var_repository >>/tmp/sources.list.tmp


# sauvegarde de l'ancien ficier /etc/apt/sources.list
cp /etc/apt/sources.list /tmp/sources.list.old

# modification du fichier /etc/apt/sources.list
cp /tmp/sources.list.tmp /etc/apt/sources.list

apt-get update

# sauvegarde de l'ancien fichier /etc/apt/apt.conf.d/apt.conf
cp /etc/apt/apt.conf.d/apt.conf /tmp/apt.conf.old

# modification du fichier /etc/apt/apt.conf.d/apt.conf
cp /tmp/apt.conf.tmp /etc/apt/apt.conf.d/apt.conf

apt-get dist-upgrade -y

#2
PACKAGES=`rpm -qa --queryformat "%{NAME}\n"`

#3
for i in $PACKAGES
do

apt-get build-dep $i -y 2>> isuse2.err
echo "apt-get build-dep $i rc: $?" >> isuse2.log
if [ $? -gt 0 ]
then
exit
fi

done
#4
for i in $PACKAGES
do

apt-get -b source $i -y 2>> isuse2.err
echo "apt-get source $i rc: $?" >> isuse2.log
if [ $? -gt 0 ]
then
exit
fi

done

#restauration des fichiers originaux
#cp /tmp/sources.list.old /etc/apt/sources.list
#cp /tmp/apt.conf.old /etc/apt/apt.conf.d/apt.conf

#suppression des rpm sources
apt-get clean[/b]

Pour info le script n'est pas fini d'etre execute chez moi et ca a l'air de bosser dur, mais j'ai le temps http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif !

okparanoid
03/01/2005, 23h45
alors j'ai essaye un peu de me renseigner et les options d'optimisation pour compiler les rpm sources se trouvent dans le fichier /usr/lib/rpm/rpmrc.

Elles vous permettent d'optimiser la compilation en fonction de votre systeme...

On peut le modifier directement mais il est conseille de plutot le copier dans le rep /etc/rpm, qui lui sera prioritaire ceci afin qu'une nouvelle version de rpm n'ecrase pas ce fichier de conf.

donc :


cp /usr/lib/rpm/rpmrc /etc/rpm/rpmrc

Apres on edite le fichier /etc/rpm et il s'agit de remplacer la ligne qui correspond a l'optflags de votre architecture avec de nouvelles options d'optimisation. Surtout pour les connaisseurs vous me dites si je dis des betises, j'essaye d'apprendre en meme temps, alors je ne garantis strictement rien de ce que je raconte...

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif Pour un P4 :

optflags: i686 -O3 -march=i686 -fomit-frame-pointer -mcpu=pentium4

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif Pour un Athlon :

optflags: athlon -O3 -march=athlon -fomit-frame-pointer

Liste a completer se serait sympa d'en faire un tuto par la suite mais pour l'instant ca fait un peu lege comme info, surement que lucienmathieu nous en apprendra un peu plus http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif

siko
04/01/2005, 11h20
C'est bien mais est-ce que le gain est vraiment suffisament important par rapport au temp de la recompilation que je suppose assez élevé.

lucienmathieu
04/01/2005, 15h42
Perso, j'ai pas trouve trop de gain au niveau performance en 9.1. Par contre pour la 9.2, tous les fichiers sources d'apt ne sont pas la, c'est un peu la merde.

C'est plus pour le fun, que fait le script, charge les sources des packages dejainstalle me semble une bonne option... j'ai pas fait complique, evidemment j'ai pas inclu la recherche complete des dependances a l'install, c'etait pas le but...

En toute logique, ce qui est compile pour une architecture, n'est pas forcement performant pour une autre... bin meme si on reste dans l'architecture x86, on va avoir des optimisations differentes d'un processeur a un autre...

Bon, on est pas oblige de tout compiler pour trouver la performance, suffit de compiler par exemple le strict necessaire dans un petit kernel fait maison ;-P

Spyhawk
04/01/2005, 17h22
<div class='quotetop'>Citation </div>
mais j'ai teste ce script en l'associant avec celui de spyhawk pour virer les cpio bad magic's error.[/b]

Ahem, j'ai écrit qu'un seul tuto, celui sur la recompil kernel...

okparanoid
04/01/2005, 19h44
Originally posted by Spyhawk@mardi 04 janvier 2005 à 16:22
<div class='quotetop'>Citation
mais j'ai teste ce script en l'associant avec celui de spyhawk pour virer les cpio bad magic's error.

Ahem, j'ai écrit qu'un seul tuto, celui sur la recompil kernel...
<div align='right'><{POST_SNAPBACK}> (index.php?act=findpost&pid=13592)</div>
[/b][/quote]

C'etait MortelRDV oups ! Mefiez vous de mes remarques sur les options de compil parce que je les ai ecrite avec a peu pres autant d'approximation que cette affaire http://www.alionet.org/style_emoticons/<#EMO_DIR#>/unsure.gif

lucienmathieu
05/01/2005, 20h51
C'est rien, il y a 2 ou 3 petits trucs interessant dans tes commentaires ;-P

Par contre, ca me chiffone de trouver une application qui permet d'analyser la rapiditee d'execution des application re-compilees.

Est-ce que quelqu'un aurait une idee? a par faire une liste avec top ou ps pour voir l'occupation systeme, j'ai pas beaucoup d'idees!

Un workbench sous Linux! Ca existe?

okparanoid
06/01/2005, 00h47
Originally posted by siko@mardi 04 janvier 2005 à 10:20
C'est bien mais est-ce que le gain est vraiment suffisament important par rapport au temp de la recompilation que je suppose assez élevé.
<div align='right'><{POST_SNAPBACK}> (index.php?act=findpost&pid=13522)[/quote]

En faite je me dis que tu peux lancer la recompile complete de ton systeme une fois de temps en temps avant de te coucher ca devrait etre fini avant que tu te reveilles, donc ca pose pas tant de probleme que ca. Reste a voir si ca sert a quelque chose effectivement ! :^p.

siko
06/01/2005, 09h11
Bon je crois que je vais jouer la prudence http://www.alionet.org/style_emoticons/<#EMO_DIR#>/blushing.gif

lucienmathieu
06/01/2005, 13h38
euh, je parle de workbench... je suis trop branche boulot... c'etait de benchmark que je voulais parler...

Par contre, on pourrait faire une liste des parametres de compil qui force la performance, par exemple recompiler le tout sans les information de debug dans les libs ou les applis.

Est-ce que Suse mets beaucoup d'info de debug dans ses packages? Comment je peux verifier ca avec ld?

okparanoid
06/01/2005, 14h04
Originally posted by lucienmathieu@jeudi 06 janvier 2005 à 12:38
euh, je parle de workbench... je suis trop branche boulot... c'etait de benchmark que je voulais parler...

Par contre, on pourrait faire une liste des parametres de compil qui force la performance, par exemple recompiler le tout sans les information de debug dans les libs ou les applis.

Est-ce que Suse mets beaucoup d'info de debug dans ses packages? Comment je peux verifier ca avec ld?
<div align='right'><{POST_SNAPBACK}> (index.php?act=findpost&pid=13871)[/quote]

Lol, si c'est toi qui pose les questions on est pas pret de d'en sortir ! http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

lucienmathieu
06/01/2005, 14h13
euh, je savais pas que je pouvais pas poser de questions!

LOL

en fait, si je pose la question c'est que je sais que ca existe de faire un truc du style ld -v /usr/lib/libkdebase3.a | grep DEBUG (je suis pas sur que ca existe) et hop on sait si il y a une info de debug.

Et si on veut augmenter la perf, suffira de recompiler avec no-debug, mais bon comme je n'ai pas trouve l'information sur le net, je me suis dit que j'allais poster une petite question pour mettre mon cerveau a jour...

okparanoid
10/01/2005, 03h01
Il y a un truc qui me chiffone dans ton script en faite. quand tu fais apt-get -b source lepaquet.rpm :

Tu le telecharges et tu le recompiles. OK(paranoid). sauf que le src.rpm a ete edite pour une architecture donnee qui n'est pas forcement celle que tu utilises. Je veux dire par la que dans le src.rpm il y a une option qui dit qu'elle sera la cible par defaut a utiliser pendant la compilation. (A verifier, mais c'est ce que j'ai capte en faisant un rpm avec krpmbuilder)

Pour compiler un rpm avec l'architecture desiree peut etre jai pas donc tout compris mais dans le man il me semble qu'il y a l'option --target ce qui voudrait dire que si j'ai un 686 il faudrait que je precise --target=i686. Or avec apt on peut pas la preciser directement cette option. Ne faudrait-til pas utiliser deux etapes supplimentaires :

tu fais :

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif on se place ds un rep temporaire vide et on vide le rep /usr/src/RPMS

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif les dependances (ca jai pas compris comment ca marchait encore tu peux nous expliquer le principe un peu mieux parce que c'est joli de regarder les dependances mais il en fait quoi apt ?)

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif moulinette pour recuper lensemble des noms de paquets precedemments installes

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif pour tous les rpm (i) (recuperes par la moulinette)
apt-get source i

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif pour tous les rpm sources telecharges (i) (*.src.rpm du repertoire courant : donc avoir veiller a ce quil soit bien clean auparavant)
rpmbuild --rebuild i.src.rpm

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif pour tous les rpms venant d'etre rebuilder (i) (ils doivent se trouver dans usr/src/packages/RPMS donc avoir veiller aussi a bien le vider avant)
rpm -Uvh i.rpm

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif menage du repertoire temporaire et du usr/src/RPMS

Et avec ca on a de quoi recompiler avec optimisation tout son systeme une bonne nuit par semaine !!!!!

Qu'en penses tu ?

et pour ton truc de debug ben vu qu'on recompile tout est-ce vraiment necessaire de savoir qui debug quoi http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wacko.gif ?

edit : pffffff tout ca pour rien suffit alors de changer dans TOUS les optflags du fichier de conf pour ca propre config : on met la meme ligne de conf pour les 386 486 586 686 athlon et le probleme se pose plus...

okparanoid
10/01/2005, 10h44
Originally posted by okparanoid@lundi 03 janvier 2005 à 22:45
alors j'ai essaye un peu de me renseigner et les options d'optimisation pour compiler les rpm sources se trouvent dans le fichier /usr/lib/rpm/rpmrc.

Elles vous permettent d'optimiser la compilation en fonction de votre systeme...

On peut le modifier directement mais il est conseille de plutot le copier dans le rep /etc/rpm, qui lui sera prioritaire ceci afin qu'une nouvelle version de rpm n'ecrase pas ce fichier de conf.

[...]

Il s'agit de remplacer la ligne qui correspond a l'optflags de votre architecture avec de nouvelles options d'optimisation. Surtout pour les connaisseurs vous me dites si je dis des betises, j'essaye d'apprendre en meme temps, alors je ne garantis strictement rien de ce que je raconte...

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif Pour un P4 :

optflags: i686 -O3 -march=i686 -fomit-frame-pointer -mcpu=pentium4

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/arrow.gif Pour un Athlon :

optflags: athlon -O3 -march=athlon -fomit-frame-pointer

Liste a completer se serait sympa d'en faire un tuto par la suite mais pour l'instant ca fait un peu lege comme info, surement que lucienmathieu nous en apprendra un peu plus http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif
<div align='right'><{POST_SNAPBACK}> (index.php?act=findpost&pid=13490)</div>

alors j'ai dit une erreur le fichier rpmrc est a mettre dans le rep /etc/ et non /etc/rpm
et j'ai fait la remarque plus haut je pense qu'il faut mettre cette ligne pour les optflags i386 i486 i586 i686 et pas seulement pour celui qui correspond au notre...

pour les opt-flags j'ai un athlon XP et j'utilise cette optimisation, sans aucune garantie :

-O3 -march=athlon-xp -mcpu=athlon-xp -DNDEBUG -fomit-frame-pointer

Je sais pas ce que ca donne je viens de lancer la compile mais en tout cas maintenant les options de compilation sont bien prises en compte chez moi et le compilo a l'air de bien les comprendre...

Me reste une question pour lucienmathieu au niveau des build dep, je crois comprendre un peu mieux sans en etre certain, il m'a lair d'installer des librairies supplementaires de dev pour pouvoir compiler les sources futures. Question : est ce qu'on pourrait pas compiler ces librairies en les optimisant (en les rajoutant a la liste des packages en queue de file histoire de verifier aussi leur liste de dependance http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif) ou ca sert a rien ?

okparanoid
11/01/2005, 23h13
Le serveur d'apt a ete mis a jour recemment et de nombreux paquets de develo ont ete places ce qui fait que maintenant le script peut compiler bcp plus de programme, le hic c'est que ca fait pas mal de paquets a recuperer en plus et je m'apercois que ton script alterne recuperation des paquets et compilation... Pourrait-t-on pas modifier le script de sorte qu'il fasse une premiere moullinette juste pour recuperer les paquets de develo des dependances sans rien compiler et une deuxieme pour la compilation en elle meme ?

Parce qu'en ce moment apt rame vraiment et du coup ca fait deux jours que le script tourne sur ma machine !

lucienmathieu
16/02/2005, 23h02
un peut tard pour la reponse, mais si tu ajoute l'option -d a apt, ca devrait marcher a l'aise ;-P

L'option -d ne fait que le download des packages, il suffira de compiler en suite...