[Yaourt] Fonction regexp dans abs.sh

Annonces, dépannage, évolution du projet yaourt
earendil_fr
newbie
Messages : 8
Inscription : mar. 21 juil. 2009, 22:47

[Yaourt] Fonction regexp dans abs.sh

Message par earendil_fr »

Bonjour,

J'avais depuis quelques temps une erreur étrange sur yaourt : il m'affichait la liste des paquets à mettre à jour avec l'option -Suy mais il ne cherchait pas à les mettre à jour

Code : Tout sélectionner

:: Début de la mise à jour complète du système...                
Résolution des dépendances...                                    
http://mir.archlinux.fr/testing/os/x86_64/dnsutils-9.6.1-2-x86_64.pkg.tar.gz
http://mir.archlinux.fr/testing/os/x86_64/udev-141-5-x86_64.pkg.tar.gz      
http://mir.archlinux.fr/testing/os/x86_64/initscripts-2009.07-3-x86_64.pkg.tar.gz
http://mir.archlinux.fr/testing/os/x86_64/mkinitcpio-0.5.26-1-any.pkg.tar.gz     
http://mir.archlinux.fr/testing/os/x86_64/kernel26-2.6.30.2-1-x86_64.pkg.tar.gz  
http://mir.archlinux.fr/testing/os/x86_64/vi-050325-1-x86_64.pkg.tar.gz          
http://mir.archlinux.fr/testing/os/x86_64/vim-7.2.234-1-x86_64.pkg.tar.gz        
http://mir.archlinux.fr/core/os/x86_64/perl-5.10.0-6-x86_64.pkg.tar.gz           
http://mir.archlinux.fr/extra/os/x86_64/gstreamer0.10-base-plugins-0.10.23-2-x86_64.pkg.tar.gz
http://mir.archlinux.fr/extra/os/x86_64/libpng-1.2.38-1-x86_64.pkg.tar.gz                     
http://mir.archlinux.fr/extra/os/x86_64/pango-1.24.5-1-x86_64.pkg.tar.gz                      
http://mir.archlinux.fr/extra/os/x86_64/python-2.6.2-5-x86_64.pkg.tar.gz                      
grep: /tmp/yaourt-tmp-ambroise/sysupgrade: Aucun fichier ou dossier de ce type                
Vérification des mises à jour disponibles...                                                  
grep: /tmp/yaourt-tmp-ambroise/sysupgrade: Aucun fichier ou dossier de ce type
Hors, en prenant mon fichier sudoers, j'étais bien indiqué comme ayant les droits sudo sur /usr/bin/pacman

Code : Tout sélectionner

Matching Defaults entries for ambroise on this host:
    syslog=auth                                     

Runas and Command-specific defaults for ambroise:
    Defaults!/usr/bin/more, /usr/bin/pg, /usr/bin/less noexec

User ambroise may run the following commands on this host:
    (root) NOPASSWD: /usr/sbin/halt, (root) /usr/sbin/shutdown, (root) /usr/sbin/reboot
    (root) /usr/bin/pacman, /usr/bin/pacman-color, /usr/bin/pacdiffviewer,             
    /usr/bin/pacman-optimize, (root) /usr/bin/more, /usr/bin/pg, /usr/bin/less         
    (root) NOPASSWD: /bin/ls, /usr/bin/find, /bin/cat
En cherchant un peu, je suis arrivé à la ligne qui réagissait bizarrement dans abs.sh : sudo -l | grep "\(pacman\ *$\|ALL\)"
En effet, quand on n'indique pas le (ALL) dans les lignes du sudoers, il retourne une erreur.

Par contre, si on fait sudo -l | grep "\(pacman\|ALL\)", tout marche bien.

Donc, ma question : à quoi sert ce « \ *$ » dans la REGEXP ?

Pour info, en faisant la REGEXP suivante : sudo -l | grep "\(toto\ *$\|ALL\)", il me sort comme même toutes les lignes de mon sudoers avec un (ALL) dedans...

Merci d'avance :chinois:
Avatar de l’utilisateur
catwell
archer de cavalerie
Messages : 175
Inscription : lun. 13 juil. 2009, 19:00

Re: [Yaourt] Fonction regexp dans abs.sh

Message par catwell »

Je ne peux pas t'expliquer pourquoi c'est comme ça dans Yaourt (que je ne connais pas), mais je peux t'expliquer pourquoi celui qui a écrit cette regexp a mis "pacman\ *$" et pas "pacman$" : il veut matcher les lignes qui se terminent par pacman suivi éventuellement d'espaces, et avec un moteur de regexp assez intelligent c'est ce que ça devrait faire.
earendil_fr
newbie
Messages : 8
Inscription : mar. 21 juil. 2009, 22:47

Re: [Yaourt] Fonction regexp dans abs.sh

Message par earendil_fr »

catwell a écrit :Je ne peux pas t'expliquer pourquoi c'est comme ça dans Yaourt (que je ne connais pas), mais je peux t'expliquer pourquoi celui qui a écrit cette regexp a mis "pacman\ *$" et pas "pacman$" : il veut matcher les lignes qui se terminent par pacman suivi éventuellement d'espaces, et avec un moteur de regexp assez intelligent c'est ce que ça devrait faire.
OK. Je pensais bien à un truc avec l'espace, mais je n'avais pas pensé qu'il fallait que ce soit en fin de ligne.
Et donc, après vérification : ça ne match que si on met le /usr/bin/pacman en fin de ligne dans le sudoers et non en début ou au milieu...

En plus, je pense que ça eut poser problème avec les <truc dans le ligne>/usr/bin/pacman, <truc dans le ligne>
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [Yaourt] Fonction regexp dans abs.sh

Message par tuxce »

pour la regexp, tu peux ouvrir un ticket dans http://bugs.archlinux.fr

sinon, la regexp n'explique pas l'échec de mise à jour, si sudo n'est pas bien détecté, yaourt bascule sur "su".
par contre, l'affichage que tu donnes dans le premier post indique une erreur avec le fichier
/tmp/yaourt-tmp-$USER/sysupgrade
faut voir s'il n'y a pas un problème de permissions ou de place sur le tmp.
earendil_fr
newbie
Messages : 8
Inscription : mar. 21 juil. 2009, 22:47

Re: [Yaourt] Fonction regexp dans abs.sh

Message par earendil_fr »

Nécessaire fait ici : http://bugs.archlinux.fr/task/148
(je ne savais pas trop quoi mettre d'autre pour être plus précis...)

Pour l'autre problème, j'avais vu aussi mais il me semblait moins génant pour mon cas.
Je ne pense pas manquer de place (étant donner que je n'ai pas séparer mon / et le /tmp et que mon / n'est pas rempli à 50%)
Pour les droits : actuellement, j'ai un fichier avec les rw pour moi et r pour le groupe users...

Mais il ne m'affiche plus le message d'erreur :|

Je pourrais essayer dans voir plus quand j'aurais de nouveau des mises à jour à faire...
earendil_fr
newbie
Messages : 8
Inscription : mar. 21 juil. 2009, 22:47

Re: [Yaourt] Fonction regexp dans abs.sh

Message par earendil_fr »

tuxce a écrit :pour la regexp, tu peux ouvrir un ticket dans http://bugs.archlinux.fr

sinon, la regexp n'explique pas l'échec de mise à jour, si sudo n'est pas bien détecté, yaourt bascule sur "su".
par contre, l'affichage que tu donnes dans le premier post indique une erreur avec le fichier
/tmp/yaourt-tmp-$USER/sysupgrade
faut voir s'il n'y a pas un problème de permissions ou de place sur le tmp.
Ok, j'ai trouvé la ligne à mettre et, en plus, pourquoi il ne me propose pas su ! :D

Si la recherche de sudo échoue, il va chercher la fonction lauch_with_su (elle est dans le fichier yaourt).
Or, cette fonction lance sudo si elle trouve sudo, puis su si le sudo n'est pas configuré.

Et, là, la regexp pour trouver pacman n'est pas la même :

Code : Tout sélectionner

sudo -l | sed 's/\,/\n/g' | grep "\(\ $command$\|ALL\)"
Donc, comme il trouve pacman, il execute la commande en temps que root.

Par contre, je ne comprends pas pourquoi, mais au lieu de mettre les paquets à mettre à jour dans yaourt-tmp-$USER/sysupgrade, il les met dans yaourt-tmp-root/sysupgrade
earendil_fr
newbie
Messages : 8
Inscription : mar. 21 juil. 2009, 22:47

Re: [Yaourt] Fonction regexp dans abs.sh

Message par earendil_fr »

OK : dernier poste avant un petit moment.. :mrgreen:

J'ai trouvé pourquoi il voulait pas installer de paquet : je n'utilise pas bash comme shell !!

J'utilise zsh (reste de mes début sur debian : j'aime trop zsh pour réussir à m'en débarrasser...)
Par contre, zsh a un comportement différent (peut-être du à ma config) sur les pipes :
si l'on fait

Code : Tout sélectionner

$echo "toto" > tmp.txt
$echo "tata" > tmp.txt
il gueule sur le 2ème pipe car le fichier exite déjà.

pour forcer l'écriture par dessus un fichier existant, il faut faire la commande suivante

Code : Tout sélectionner

$echo "toto" > tmp.txt
$echo "tata" >| tmp.txt

Or, dans le script yaourt, la commande launch_with_su fait un sudo <ma_commande> avec une redirection de la sortie de pacman en simple 1>.
Cela va donc lancé la commande non pas en bash (comme le fait le script), mais dans un shell zsh.

Donc, si c'est la première fois que vous lancez une mise à jour, nos problème. Après, il ne veut plus...
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Re: [Yaourt] Fonction regexp dans abs.sh

Message par wain »

Salut,

Je reprend la tâche FS#148. Ok pour le regexp, je vais le modifier de manière à accepter la commande "pacman" soit en bout de ligne, soit entre d'autres commandes séparées par une virgule.

Concernant la compatibilité zsh, je suis plus embêté. yaourt est fait pour bash et il n'est pas question pour l'instant de porter yaourt sur d'autres shells comme zsh ou dash etc... Yaourt utilise forcément /bin/bash, je pense que tu l'as écrasé par un lien symbolique vers zsh. non ?
Répondre