Aller au contenu

[Tuto][Initié] Topic officiel Gentoo


Messages recommandés

  • Réponses 946
  • Créé
  • Dernière réponse

J'install la gentoo en se moment, la branche 2005.0

Que ce soit avec le live CD 2004.3 ou en prenant un arbre mise un jour sur le net j'ai toujour cette erreur lors du emerge -e system.

make[1]: *** [../obj_s/tty_update.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/var/tmp/portage/ncurses-5.4-r5/work/ncurses-5.4/ncurses'
make: *** [all] Error 2

!!! ERROR: sys-libs/ncurses-5.4-r5 failed.
!!! Function src_compile, Line 84, Exitcode 2
!!! make failed
!!! If you need support, post the topmost build error, NOT this status message.

j'ai donc mise à jour portage, j'ai maintenant une autre erreur:

The bug is not reproducible, so it is likely a hardware or OS problem.
make[1]: *** [mice.o] Error 1
make[1]: *** Waiting for unfinished jobs....
synaptics.c:888: attention : `tp_dump_report_data' defined but not used
make[1]: Leaving directory `/var/tmp/portage/gpm-1.20.1-r4/work/gpm-1.20.1/src'
make: *** [do-all] Error 1

!!! ERROR: sys-libs/gpm-1.20.1-r4 failed.
!!! Function src_compile, Line 37, Exitcode 2
!!! emake failed
!!! If you need support, post the topmost build error, NOT this status message.

Je me pose beaucoup de question sur la première ligne ...

hop un dernier emerge --sync, 3ème essais pour l'install tout passe, pourvu que ca dure.

edit et ben non gettext passe pas ... hum.

Last edit: bon, après une mise a jour des mirrors, je relance, pour l'install ca compile ca compile, aller on allume un sierge :pleure:

Lien vers le commentaire
Partager sur d’autres sites

tiens une petite question gentoo :modoreussi:

voila je met à jour ma gentoo à la main, c'est à dire que je choisit ce que je veux et ce que je veux pas. Ces dernier temps j'ai pas trop eu le temps, donc la liste des paquest à mettre à jour c'est considérablement allongée.

En regardant de près, je me suis rendu compte qu'une grosse partie des paquets à mettre à jour faisaient parti de media-plugin, media-sound, media-gfx, media-libs, media-video etc...

Ce genre de paquets pas hautement sensibles pourraient etre mis à jour automatiquement. Ca me permettrait de pourvoir me concentrer sur les trucs importants (kernel et autres trucs systeme) lors de la maj.

Bref voila ma question, comment faire pour mettre à jours par exemple tout les paquets installé de media-plugin? ca serait pour l'intégrer à mon crontab à la suite du esync journalier.

Je pense pas que ces fonctionnalités soient intégrée à portage. Le recours à un script est-il obligatoire ?

genre un truc comme ca

emerge -Dupv world | grep media-plugins | awk {'print $4'}

par contre il faudrait que je retire le numéro de version, que je l'écrive en ligne et que je passe ca en parametre à emerge. Je sais pas encore comment faire mais ca doit etre faisable :-D

Voila je cherche avant tout la solution la plus "propre" possible :chinois:

Merci

Lien vers le commentaire
Partager sur d’autres sites

T'es sur d'avoir correctement renseigné ton make.conf ?

Oui tout a fait, cependant je pense faire une install Stage 3 et tout recompiler après, j'ai des erreurs que je ne devrais pas avoir, mais je suis pas le seul a avoir des problèmes a compiler avec un AthlonXP 1600+.

Sur mon AMD Thunderbird aucun problème, anisi que sur le PIV.

Lien vers le commentaire
Partager sur d’autres sites

Cher Duke98, je ne saurai que te conseiller ce script (sur les forums de gentoo) qui te permettra de récupérer les paquets d'une catégorie qui sont a mettre à jour.

Après, je pense qu'il faudra basher un peu autour pour demander a emerge d'installer ces paquets...

Pourquoi pas un

pye -c media-plugins -s -e uDv world | xargs emerge -u

?

avec pye : script du site, -c media-plugins : catégorie à afficher, -s : emerge sync avant tout, -e uDv : options à passer à emerge (upgrade Deep verbose)

A explorer en fait :yes: ...

EDIT : D'oh

EDEDIT :transpi:

J'ai installé pye, je cherche le moyen de le "désinteractiviser" (oui, j'aime les néologismes, mais Guijnor ne traine pas ici :yes: )

Lien vers le commentaire
Partager sur d’autres sites

tiens une petite question gentoo :yes:

voila je met à jour ma gentoo à la main, c'est à dire que je choisit ce que je veux et ce que je veux pas. Ces dernier temps j'ai pas trop eu le temps, donc la liste des paquest à mettre à jour c'est considérablement allongée.

En regardant de près, je me suis rendu compte qu'une grosse partie des paquets à mettre à jour faisaient parti de media-plugin, media-sound, media-gfx, media-libs, media-video etc...

Ce genre de paquets pas hautement sensibles pourraient etre mis à jour automatiquement. Ca me permettrait de pourvoir me concentrer sur les trucs importants (kernel et autres trucs systeme) lors de la maj.

Bref voila ma question, comment faire pour mettre à jours par exemple tout les paquets installé de media-plugin? ca serait pour l'intégrer à mon crontab à la suite du esync journalier.

Je pense pas que ces fonctionnalités soient intégrée à portage. Le recours à un script est-il obligatoire ?

genre un truc comme ca

emerge -Dupv world | grep media-plugins | awk {'print $4'}

par contre il faudrait que je retire le numéro de version, que je l'écrive en ligne et que je passe ca en parametre à emerge. Je sais pas encore comment faire mais ca doit etre faisable :yes:

Voila je cherche avant tout la solution la plus "propre" possible ;)

Merci

Bon, j'ai trouvé un moyen...mais c'est pas super top...

en fait, ce qui gêne, c'est les numéros de version, car ils peuvent défférer d'une version à l'autre, peuvent comprendre des revisions, etc...

Donc tout d'abord, utiliser equery (du gentoolkit) pour récupérer les applis de la catégorie installés :

equery list "media-plugins/"

Ensuite, éliminer " * installed packages", ceci devrait suffire :

equery list "media-plugins/" | grep -v "^ * "

Après cela, ajouter \>= devant chaque entrée (donc en gros, ça ne gère pas du tout le downgrade)

equery list "media-plugins/" | grep -v "^ * " | sed 's/^/\\>=/'

ensuite, transformer les retours chariots en espaces :

equery list "media-plugins/" | grep -v "^ * " | sed 's/^/\\>=/' | tr '\n' ' '

et voilà... c'est presque fini : appeler emerge avec l'option -u (bon, là j'ai mis -pv en plus...)

 $ emerge -pvu `equery list "media-plugins/" | grep -v "^ * " | sed 's/^/\\>=/' | tr '\n' ' '`

Conclusion : c'est presque ça, mais il reste un problème au niveau des numéros de version qui gènent...

On continue, toujours plus fort !!!!

Bon, je viens de me rappeler que tout ça reste sur le disque dur de manière consultable facilement... donc utilisons cela !!!

il suffit de remplacer <<equery list "media-plugins/" | grep -v "^ * ">> par <<ls /var/db/pkg/media-plugins>> ... en plus, c'est beaucoup plus rapide !!!

(...plus tard :)

Bon, finalement j'ai trouvé comment virer les numéros de version : lister les chaînes entre les "-" et s'arrêter à la première qui commence par un nombre (merci google !!!)

Donc une petite fonction bash permet de le faire...

Ensuite, il suffit de lister cela...

Et ça donne ce script :

listpackages.sh

function packageName
{
       LIST=`echo $1 | tr '-' ' '`
       OUT=""
       for i in $LIST
       do
               if [ `echo $i | cut -c 1 | tr -d '[:digit:]'` ]
               then OUT="$OUT-$i"
               else break # si il y a un chiffre, on s'arrete
               fi
       done
       echo $OUT | cut -c 2- # on elimine le tiret originel
}

if [ ! $1 ]
then
       echo "Usage : $0 categorie"
       exit 0
fi

cat=`echo $1 | awk -F "/" '{print $1}'`
if ! ls -d /var/db/pkg/$cat 1>/dev/null 2>/dev/null
then
       echo "Erreur : mauvaise catégorie !" 1>&2
       exit 1
fi
PACKAGES=`ls /var/db/pkg/$1`
EMERGE_LIST=""
for pack in $PACKAGES
do
       EMERGE_LIST="$EMERGE_LIST $cat/"`packageName $pack`
done
echo $EMERGE_LIST

ensuite, il suffit de lancer :

$ emerge -pvu `./listpackages.sh media-plugins`

Bon, je vois qu'il y a déjà une solution (peut-être plus simple...) mais bon, en tout cas, ça m'aura entraîné (ouais, pour questions pour un pingouin :transpi: )

Lien vers le commentaire
Partager sur d’autres sites

Bon, j'ai trouvé un moyen...mais c'est pas super top...

en fait, ce qui gêne, c'est les numéros de version, car ils peuvent défférer d'une version à l'autre, peuvent comprendre des revisions, etc...

Donc tout d'abord, utiliser equery (du gentoolkit) pour récupérer les applis de la catégorie installés :

equery list "media-plugins/"

Ensuite, éliminer " * installed packages", ceci devrait suffire :

equery list "media-plugins/" | grep -v "^ * "

Après cela, ajouter \>= devant chaque entrée (donc en gros, ça ne gère pas du tout le downgrade)

equery list "media-plugins/" | grep -v "^ * " | sed 's/^/\\>=/'

ensuite, transformer les retours chariots en espaces :

equery list "media-plugins/" | grep -v "^ * " | sed 's/^/\\>=/' | tr '\n' ' '

et voilà... c'est presque fini : appeler emerge avec l'option -u (bon, là j'ai mis -pv en plus...)

 $ emerge -pvu `equery list "media-plugins/" | grep -v "^ * " | sed 's/^/\\>=/' | tr '\n' ' '`

Conclusion : c'est presque ça, mais il reste un problème au niveau des numéros de version qui gènent...

On continue, toujours plus fort !!!!

Bon, je viens de me rappeler que tout ça reste sur le disque dur de manière consultable facilement... donc utilisons cela !!!

il suffit de remplacer <<equery list "media-plugins/" | grep -v "^ * ">> par <<ls /var/db/pkg/media-plugins>> ... en plus, c'est beaucoup plus rapide !!!

(...plus tard :)

Bon, finalement j'ai trouvé comment virer les numéros de version : lister les chaînes entre les "-" et s'arrêter à la première qui commence par un nombre (merci google !!!)

Donc une petite fonction bash permet de le faire...

Ensuite, il suffit de lister cela...

Et ça donne ce script :

listpackages.sh

function packageName
{
       LIST=`echo $1 | tr '-' ' '`
       OUT=""
       for i in $LIST
       do
               if [ `echo $i | cut -c 1 | tr -d '[:digit:]'` ]
               then OUT="$OUT-$i"
               else break # si il y a un chiffre, on s'arrete
               fi
       done
       echo $OUT | cut -c 2- # on elimine le tiret originel
}

if [ ! $1 ]
then
       echo "Usage : $0 categorie"
       exit 0
fi

cat=`echo $1 | awk -F "/" '{print $1}'`
if ! ls -d /var/db/pkg/$cat 1>/dev/null 2>/dev/null
then
       echo "Erreur : mauvaise catégorie !" 1>&2
       exit 1
fi
PACKAGES=`ls /var/db/pkg/$1`
EMERGE_LIST=""
for pack in $PACKAGES
do
       EMERGE_LIST="$EMERGE_LIST $cat/"`packageName $pack`
done
echo $EMERGE_LIST

ensuite, il suffit de lancer :

Bon, je vois qu'il y a déjà une solution (peut-être plus simple...) mais bon, en tout cas, ça m'aura entraîné (ouais, pour questions pour un pingouin :yes: )

Ca m'a l'air beaucoup mieux que ma solution de script interactif a ininteractivifier alors que je suis une bille en Python :yes:

TuXXX tu gagnes le prix du pingouin d'or :transpi:

Non mais serieusement, c bien en si peu de temps...

Lien vers le commentaire
Partager sur d’autres sites

:transpi::mdr::|:eeek::eeek::eeek::eeek::eeek:

:yes::incline: tuXXX

j'ai adopté ton script :reflechis:

par contre avec l'option -pvu il sort massivement de la catégorie (normal). Je me demandais si c'est risqué de faire la maj sans le "u"?

C'est grave de pas mettre à jour les dépendances (je pense surtout aux plugin audio et video) ?

edit: merci aussi NicolasD, mais je vais suivre la methode de tuXXX :-D

Lien vers le commentaire
Partager sur d’autres sites

exact, le coup du ls c'est bien mais pas top en fait.

retour à l'utilisation d'emerge, ca donne

                                                                 

function packageName
{
      LIST=`echo $1 | tr '-' ' '`
      OUT=""
      for i in $LIST
      do
              if [ `echo $i | cut -c 1 | tr -d '[:digit:]'` ]
              then OUT="$OUT-$i"
              else break # si il y a un chiffre, on s'arrete
              fi
      done
      echo $OUT | cut -c 2- # on elimine le tiret originel
}

if [ ! $1 ]
then
      echo "Usage : $0 categorie"
      exit 0
fi

cat=`echo $1 | awk -F "/" '{print $1}'`
if ! ls -d /var/db/pkg/$cat 1>/dev/null 2>/dev/null
then
      echo "Erreur : mauvaise catégorie !" 1>&2
      exit 1
fi
PACKAGES=` emerge -Dupv world | grep $1 | awk {'print $4'}`
EMERGE_LIST=""
for pack in $PACKAGES
do
      EMERGE_LIST="$EMERGE_LIST "`packageName $pack`
done
echo $EMERGE_LIST

et ca roxe :reflechis:

Lien vers le commentaire
Partager sur d’autres sites

                                                              
#!/bin/bash

#
# UpdCateg
# Lists packages that have to be updated in a category
# For Gentoo@PC INpact
#
# Authors : tuXXX and Duke98
# http://www.pcinpact.com/forum/rubrique_20.htm
# Released under GNU-GPL v2
#

function packageName
{
     LIST=`echo $1 | tr '-' ' '`
     OUT=""
     for i in $LIST
     do
             if [ `echo $i | cut -c 1 | tr -d '[:digit:]'` ]
             then OUT="$OUT-$i"
             else break # si il y a un chiffre, on s'arrete
             fi
     done
     echo $OUT | cut -c 2- # on elimine le tiret originel
}

if [ ! $1 ]
then
     echo "Usage : $0 categorie"
     exit 0
fi

cat=`echo $1 | awk -F "/" '{print $1}'`
if ! ls -d /var/db/pkg/$cat 1>/dev/null 2>/dev/null
then
     echo "Erreur : mauvaise catégorie !" 1>&2
     exit 1
fi
PACKAGES=` emerge -Dupv world | grep $1 | awk {'print $4'}`
EMERGE_LIST=""
for pack in $PACKAGES
do
     EMERGE_LIST="$EMERGE_LIST "`packageName $pack`
done
echo $EMERGE_LIST

bowdown.gif effectivement, ca roxe...

Je le vole^Wcopylefte sans états d'âme biggerGrin.gif

EDIT : De plus, il faudrait trouver une astuce quand la liste de paquets est vide, pour pas que emerge nous signifie gentiment :


g3nt00 ~ # emerge -u
emerge: please tell me what to do.
...

Ce message a été modifié par NicolasD le 31-03-2005 17:09:55

Edit duke: oupsss :reflechis: édité au lieu de cité

Lien vers le commentaire
Partager sur d’autres sites

genre ca ?

                                                              
#!/bin/bash

#
# UpdCateg
# Lists packages that have to be updated in a category
# For Gentoo@PC INpact
#
# Authors : tuXXX and Duke98
# http://www.pcinpact.com/forum/rubrique_20.htm
# Released under GNU-GPL v2
#

function packageName
{
     LIST=`echo $1 | tr '-' ' '`
     OUT=""
     for i in $LIST
     do
             if [ `echo $i | cut -c 1 | tr -d '[:digit:]'` ]
             then OUT="$OUT-$i"
             else break # si il y a un chiffre, on s'arrete
             fi
     done
     echo $OUT | cut -c 2- # on elimine le tiret originel
}

if [ ! $1 ]
then
     echo "Usage : $0 categorie"
     exit 0
fi

cat=`echo $1 | awk -F "/" '{print $1}'`
if ! ls -d /var/db/pkg/$cat 1>/dev/null 2>/dev/null
then
     echo "Erreur : mauvaise catégorie !" 1>&2
     exit 1
fi
PACKAGES=` emerge -Dupv world | grep $1 | awk {'print $4'}`
if [ PACKAGES -eq "" ]
then
     echo "Rien à mettre à jour dans la catégorie $1;-)"
     exit 2
fi
EMERGE_LIST=""
for pack in $PACKAGES
do
     EMERGE_LIST="$EMERGE_LIST "`packageName $pack`
done
echo $EMERGE_LIST

bon le coup de la chaine vide j'ai pas testé, il faudrait trouver une catégorie vide de maj, je sais pas si j'ai ca tellement je suis à la bourre dans mes maj ;)

Lien vers le commentaire
Partager sur d’autres sites

D'ailleurs, y'a un truc cool : on peut même mettre un truc genre "sys-*" en catégorie (faut pas oublier les guillemets !)

Pour la chaîne vide, ça marche, mais il faudrait plustôt mettre = au lieu de -eq

(-eq c'est plutôt pour les nombres!)

Lien vers le commentaire
Partager sur d’autres sites

ca se voit tant que ca que j'ai jamais écrit de script de ma vie :pleure2::iloveyou:

sinon, il y a un bug

emerge -Dupv world | grep 'media-libs'                   
[ebuild     UD] media-libs/gst-plugins-0.8.7 [0.8.8] +alsa -debug +esd +oss 0 kB 
duron21 ~ # emerge -Dupv world | grep 'media-libs' | awk {'print $4'}
[0.8.8]

on peut pas utiliser awk... :transpi:

le D collé au crochet fout tout en l'air :iloveyou:

Lien vers le commentaire
Partager sur d’autres sites

ca se voit tant que ca que j'ai jamais écrit de script de ma vie  :-D  ;)

sinon, il y a un bug

emerge -Dupv world | grep 'media-libs'                   
[ebuild     UD] media-libs/gst-plugins-0.8.7 [0.8.8] +alsa -debug +esd +oss 0 kB 
duron21 ~ # emerge -Dupv world | grep 'media-libs' | awk {'print $4'}
[0.8.8]

on peut pas utiliser awk...  :8

le D collé au crochet fout tout en l'air :8

Et en essayant avec

emerge -Dupv world | sed "s/ /\n/g" | grep 'media-libs'                  

?

EDIT :

Voire :

emerge -Dup world | grep 'media-libs' | sed "s/ /\n/g" | grep 'media-libs'                  

pour economiser du sed (je sais pas niveau perf, mais je pense que la deuxieme est mieux)

Et enlever le flag verbose, en a-t-on vraiment besoin dans un script discret pour un cron ?

Lien vers le commentaire
Partager sur d’autres sites

ton optimisation n'est pas tout le temps rentable, elle ne l'est que si il n'y a que peu de 'media-libs' dans l'emerge.

cas extreme, si il ne a que ça, tu parses trois fois l'intégralité du texte, alors que tu ne le faisait que 2 fois dans le premier... :-D

Lien vers le commentaire
Partager sur d’autres sites

ton optimisation n'est pas tout le temps rentable, elle ne l'est que si il n'y a que peu de 'media-libs' dans l'emerge.

cas extreme, si il ne a que ça, tu parses trois fois l'intégralité du texte, alors que tu ne le faisait que 2 fois dans le premier... :fumer:

Le problème est qu'il y a 8 espaces par ligne dans un emerge -p (à peu près)

ca nous donne donc 9 lignes à parser pour grep...

Mais bon... il faut de toute facon enlever le "-v", puisque ca ajoute pas mal d'espaces pour séparer les use-flags...et là :-D

ce qui nous donne :

emerge -Dup world | sed "s/ /\n/g" | grep 'media-libs'

Lien vers le commentaire
Partager sur d’autres sites

ben facile... cut !!

emerge -pvuD world | cut -c 16- | grep 'media-libs' | awk {'print $1'}

ce qui donne donc :

#!/bin/bash

#
# UpdCateg
# Lists packages that have to be updated in a category
# For Gentoo@PC INpact
#
# By tuXXX and Duke98
# http://www.pcinpact.com/forum/rubrique_20.htm
# Released under GNU-GPL v2
#

function packageName
{
LIST=`echo $1 | tr '-' ' '`
OUT=""
for i in $LIST
do
 if [ `echo $i | cut -c 1 | tr -d '[:digit:]'` ]
 then OUT="$OUT-$i"
 else break
 fi
done
echo $OUT | cut -c 2-
}

if [ "$1" ]
then echo -n "";
else
echo "Usage : $0 categorie"
echo ""
echo "categorie examples :"
echo "    media-plugins"
echo "    \"sys-*\""
exit 0
fi

cat=`echo $1 | awk -F "/" '{print $1}'`
if ! ls -d /var/db/pkg/$cat 1>/dev/null 2>/dev/null
then
echo "Erreur : mauvaise catégorie !" 1>&2
exit 1
fi

PACKAGES=`emerge -puD world | cut -c 16- | grep $1 | awk {'print $1'}`
if [ ! "$PACKAGES" ]
then
echo "Rien a mettre à jour" 1>&2
exit 2
fi
EMERGE_LIST=""
for pack in $PACKAGES
do
EMERGE_LIST="$EMERGE_LIST "`packageName $pack`
done
echo $EMERGE_LIST

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...