Sous Mandriva, je souhaite exécuter la commande "tlmgr -gui" avec un sudo
(il faudrait même kdesu).
Mais cette commande n'est pas reconnue car elle ne se trouve pas dans le
PATH de root.
Comment faire ?
L'idée serait d'avoir un script bash qui me lance "tlmgr -gui",
tout en sachant que /usr/local/texlive/bin/i386-linux qui est dans le PATH
de l'utilisateur doit aussi être dans le PATH qui sera celui de sudo.
Ceci fonctionne, mais sans sudo je n'arrive pas à en faire un script :
[meloli@fixe Téléchargement]$ su
Mot de passe :
[root@fixe Téléchargement]# export PATH=/usr/local/texlive/bin/i386-linux
$PATH
[root@fixe Téléchargement]# tlmgr -gui
[ ~]$ su Mot de passe : [ meloli]# PATH=/usr/local/texlive/bin/i386-linux/:$PATH [ meloli]# export PATH [ meloli]# tlmgr -gui
fonctionne très bien.
Ne reste plus qu'à automomatiser ...
Olivier V
Encore une précision :
[meloli@fixe ~]$ su
Mot de passe :
[root@fixe meloli]# PATH=/usr/local/texlive/bin/i386-linux/:$PATH
[root@fixe meloli]# export PATH
[root@fixe meloli]# tlmgr -gui
[ ~]$ su Mot de passe : [ meloli]# PATH=/usr/local/texlive/bin/i386-linux/:$PATH [ meloli]# export PATH [ meloli]# tlmgr -gui
fonctionne très bien.
Ne reste plus qu'à automomatiser ...
Olivier V
Cumbalero
Olivier V a écrit :
et tu le lances par ./commande.sh
J'ai essayé, et sudo ne le trouve pas ... car il est dans /home/meloli/bin/binperso qui n'est pas dans le PATH de sudo ... m ême en plaçant ma console dans le bon répertoire !
Avec le ./ devant?
Celle ci ne peut pas fonctionner, car comme dit précédemment, il fa ut aussi que le système accède aux autres exécutables du même répertoi re
Ca, c'est pas un problème de PATH mais de PERL5LIB.
J'ai fait une petit demande à mon pote Google, il semble que tu n'es pa s le seul à avoir ce problème...
Mais juste une question: pourquoi as-tu besoin des droits du superutilisateur?
A+ JF
Olivier V a écrit :
et tu le lances par ./commande.sh
J'ai essayé, et sudo ne le trouve pas ... car il est
dans /home/meloli/bin/binperso qui n'est pas dans le PATH de sudo ... m ême
en plaçant ma console dans le bon répertoire !
Avec le ./ devant?
Celle ci ne peut pas fonctionner, car comme dit précédemment, il fa ut aussi
que le système accède aux autres exécutables du même répertoi re
J'ai essayé, et sudo ne le trouve pas ... car il est dans /home/meloli/bin/binperso qui n'est pas dans le PATH de sudo ... m ême en plaçant ma console dans le bon répertoire !
Avec le ./ devant?
Celle ci ne peut pas fonctionner, car comme dit précédemment, il fa ut aussi que le système accède aux autres exécutables du même répertoi re
Ca, c'est pas un problème de PATH mais de PERL5LIB.
J'ai fait une petit demande à mon pote Google, il semble que tu n'es pa s le seul à avoir ce problème...
Mais juste une question: pourquoi as-tu besoin des droits du superutilisateur?
A+ JF
Olivier V
Cumbalero a écrit :
Olivier V a écrit :
et tu le lances par ./commande.sh
J'ai essayé, et sudo ne le trouve pas ... car il est dans /home/meloli/bin/binperso qui n'est pas dans le PATH de sudo ... même en plaçant ma console dans le bon répertoire !
Avec le ./ devant?
Oui :
[ binperso]$ sudo ./tlmgr_perso Mot de passe : Can't locate TeXLive/TLPOBJ.pm in @INC (@INC contains: //tlpkg /usr/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at /usr/local/texlive/bin/i386-linux/tlmgr line 59. BEGIN failed--compilation aborted at /usr/local/texlive/bin/i386-linux/tlmgr line 59.
Celle ci ne peut pas fonctionner, car comme dit précédemment, il faut aussi que le système accède aux autres exécutables du même répertoire
Ca, c'est pas un problème de PATH mais de PERL5LIB.
Bizarre, car avec une console en root et le bon PATH, ça marche :
[ ~]$ su Mot de passe : [ meloli]# PATH=/usr/local/texlive/bin/i386-linux/:$PATH [ meloli]# export PATH [ meloli]# tlmgr -gui
ne donne aucune erreur, pourtant c'est la même commande !
J'ai fait une petit demande à mon pote Google, il semble que tu n'es pas le seul à avoir ce problème...
Mais juste une question: pourquoi as-tu besoin des droits du superutilisateur?
Car ce que j'ai installé est la TeXlive 2008, et que "tlmgr" est la commande de mise à jour (comme apt-get update) qui intervient sur /usr/local/texlive2008/ qui est en droits root.
Olivier V
Cumbalero a écrit :
Olivier V a écrit :
et tu le lances par ./commande.sh
J'ai essayé, et sudo ne le trouve pas ... car il est
dans /home/meloli/bin/binperso qui n'est pas dans le PATH de sudo ...
même en plaçant ma console dans le bon répertoire !
Avec le ./ devant?
Oui :
[meloli@fixe binperso]$ sudo ./tlmgr_perso
Mot de passe :
Can't locate TeXLive/TLPOBJ.pm in @INC (@INC
contains: //tlpkg /usr/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .)
at /usr/local/texlive/bin/i386-linux/tlmgr line 59.
BEGIN failed--compilation aborted at /usr/local/texlive/bin/i386-linux/tlmgr
line 59.
Celle ci ne peut pas fonctionner, car comme dit précédemment, il faut
aussi que le système accède aux autres exécutables du même répertoire
Ca, c'est pas un problème de PATH mais de PERL5LIB.
Bizarre, car avec une console en root et le bon PATH, ça marche :
[meloli@fixe ~]$ su
Mot de passe :
[root@fixe meloli]# PATH=/usr/local/texlive/bin/i386-linux/:$PATH
[root@fixe meloli]# export PATH
[root@fixe meloli]# tlmgr -gui
ne donne aucune erreur, pourtant c'est la même commande !
J'ai fait une petit demande à mon pote Google, il semble que tu n'es pas
le seul à avoir ce problème...
Mais juste une question: pourquoi as-tu besoin des droits du
superutilisateur?
Car ce que j'ai installé est la TeXlive 2008, et que "tlmgr" est la commande
de mise à jour (comme apt-get update) qui intervient
sur /usr/local/texlive2008/ qui est en droits root.
J'ai essayé, et sudo ne le trouve pas ... car il est dans /home/meloli/bin/binperso qui n'est pas dans le PATH de sudo ... même en plaçant ma console dans le bon répertoire !
Avec le ./ devant?
Oui :
[ binperso]$ sudo ./tlmgr_perso Mot de passe : Can't locate TeXLive/TLPOBJ.pm in @INC (@INC contains: //tlpkg /usr/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at /usr/local/texlive/bin/i386-linux/tlmgr line 59. BEGIN failed--compilation aborted at /usr/local/texlive/bin/i386-linux/tlmgr line 59.
Celle ci ne peut pas fonctionner, car comme dit précédemment, il faut aussi que le système accède aux autres exécutables du même répertoire
Ca, c'est pas un problème de PATH mais de PERL5LIB.
Bizarre, car avec une console en root et le bon PATH, ça marche :
[ ~]$ su Mot de passe : [ meloli]# PATH=/usr/local/texlive/bin/i386-linux/:$PATH [ meloli]# export PATH [ meloli]# tlmgr -gui
ne donne aucune erreur, pourtant c'est la même commande !
J'ai fait une petit demande à mon pote Google, il semble que tu n'es pas le seul à avoir ce problème...
Mais juste une question: pourquoi as-tu besoin des droits du superutilisateur?
Car ce que j'ai installé est la TeXlive 2008, et que "tlmgr" est la commande de mise à jour (comme apt-get update) qui intervient sur /usr/local/texlive2008/ qui est en droits root.
Olivier V
Cumbalero
Olivier V a écrit :
Ca, c'est pas un problème de PATH mais de PERL5LIB.
Bizarre, car avec une console en root et le bon PATH, ça marche
Il est tout à fait possible que la variable PERL5LIB soit correctement positionnée après un su - et pas après un sudo, ça dépend dans quel fichier d'initialisation elle est positionnée.
Si c'est dans le .bashrc de root par exemple et si tu es sous bash. Si c'est le cas il faut ajouter la ligne . ~/.bashrc au début du script de lancement. (Le point espace est important!)
A+ JF
Olivier V a écrit :
Ca, c'est pas un problème de PATH mais de PERL5LIB.
Bizarre, car avec une console en root et le bon PATH, ça marche
Il est tout à fait possible que la variable PERL5LIB soit correctement
positionnée après un su - et pas après un sudo, ça dépend dans quel
fichier d'initialisation elle est positionnée.
Si c'est dans le .bashrc de root par exemple et si tu es sous bash. Si
c'est le cas il faut ajouter la ligne
. ~/.bashrc
au début du script de lancement. (Le point espace est important!)
Ca, c'est pas un problème de PATH mais de PERL5LIB.
Bizarre, car avec une console en root et le bon PATH, ça marche
Il est tout à fait possible que la variable PERL5LIB soit correctement positionnée après un su - et pas après un sudo, ça dépend dans quel fichier d'initialisation elle est positionnée.
Si c'est dans le .bashrc de root par exemple et si tu es sous bash. Si c'est le cas il faut ajouter la ligne . ~/.bashrc au début du script de lancement. (Le point espace est important!)
A+ JF
steph
Olivier V :
Encore une précision :
[ ~]$ su Mot de passe : [ meloli]# PATH=/usr/local/texlive/bin/i386-linux/:$PATH [ meloli]# export PATH [ meloli]# tlmgr -gui
fonctionne très bien.
Ne reste plus qu'à automomatiser ...
Olivier V
Et en faisant: ~$ su -c 'PATH=/usr/local/texlive/bin/i386-linux/:$PATH tlmgr -gui'
Si cela fonctionne, tu peux le mettre dans un script...
@+ -- steph
Olivier V <anonyme@free.fr>:
Encore une précision :
[meloli@fixe ~]$ su
Mot de passe :
[root@fixe meloli]# PATH=/usr/local/texlive/bin/i386-linux/:$PATH
[root@fixe meloli]# export PATH
[root@fixe meloli]# tlmgr -gui
fonctionne très bien.
Ne reste plus qu'à automomatiser ...
Olivier V
Et en faisant: ~$ su -c 'PATH=/usr/local/texlive/bin/i386-linux/:$PATH tlmgr -gui'
Si cela fonctionne, tu peux le mettre dans un script...
su -c 'PATH=/usr/local/texlive/bin/i386-linux/:$PATH tlmgr -gui'
Ça fonctionne !
Merci.
Olivier V
Olivier V
Cumbalero a écrit :
Si c'est dans le .bashrc de root par exemple et si tu es sous bash. Si c'est le cas il faut ajouter la ligne . ~/.bashrc au début du script de lancement. (Le point espace est important!)
[ binperso]$ sudo tlmgr_perso Mot de passe : Can't locate TeXLive/TLPOBJ.pm in @INC (@INC contains: //tlpkg /usr/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at /usr/local/texlive/bin/i386-linux/tlmgr line 59. BEGIN failed--compilation aborted at /usr/local/texlive/bin/i386-linux/tlmgr line 59.
Voici les fichiers de root :
# .bash_profile
# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Olivier V
Cumbalero a écrit :
Si c'est dans le .bashrc de root par exemple et si tu es sous bash. Si
c'est le cas il faut ajouter la ligne
. ~/.bashrc
au début du script de lancement. (Le point espace est important!)
[meloli@fixe binperso]$ sudo tlmgr_perso
Mot de passe :
Can't locate TeXLive/TLPOBJ.pm in @INC (@INC
contains: //tlpkg /usr/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .)
at /usr/local/texlive/bin/i386-linux/tlmgr line 59.
BEGIN failed--compilation aborted at /usr/local/texlive/bin/i386-linux/tlmgr
line 59.
Voici les fichiers de root :
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Si c'est dans le .bashrc de root par exemple et si tu es sous bash. Si c'est le cas il faut ajouter la ligne . ~/.bashrc au début du script de lancement. (Le point espace est important!)
[ binperso]$ sudo tlmgr_perso Mot de passe : Can't locate TeXLive/TLPOBJ.pm in @INC (@INC contains: //tlpkg /usr/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/5.10.0/i386-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at /usr/local/texlive/bin/i386-linux/tlmgr line 59. BEGIN failed--compilation aborted at /usr/local/texlive/bin/i386-linux/tlmgr line 59.
Voici les fichiers de root :
# .bash_profile
# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Olivier V
marc
Une suggestion: la commande "sudo" recherche des commandes et des directives dans le fichier "/etc/sudoers". Il serait facile d'oublier ce fichier, soit par etourderie, soit parce que l'on n'en a pas l'habitude. Ce fichier se construit normalement au moyen de la commande "visudo", sinon il est possible (bien qu'assez laid et contre les regles) d'editer directement ce fichier a partir d'un exemple. L'utilite finale est de lancer un script complet avec les droits de root et sans demande de mot de passe. Cela peut permettre par exemple de redemarrer le reseau, ou une imprimante, en cas d'incident, et d'offrir cette possibilite a ma femme a mon domicile (je fonctionne 100% linux) en mon absence.
Si l'option malpropre est prise, je veux bien poster mon fichier "/etc/sudoers" a titre d'exemple (attention, seul root doit etre habilite meme pour une simple lecture de ce fichier).
Bonne chance.
Une suggestion: la commande "sudo" recherche des commandes et des directives dans le fichier "/etc/sudoers". Il serait
facile d'oublier ce fichier, soit par etourderie, soit parce que l'on n'en a pas l'habitude. Ce fichier se construit
normalement au moyen de la commande "visudo", sinon il est possible (bien qu'assez laid et contre les regles)
d'editer directement ce fichier a partir d'un exemple. L'utilite finale est de lancer un script complet avec les
droits de root et sans demande de mot de passe. Cela peut permettre par exemple de redemarrer le reseau, ou une
imprimante, en cas d'incident, et d'offrir cette possibilite a ma femme a mon domicile (je fonctionne 100% linux)
en mon absence.
Si l'option malpropre est prise, je veux bien poster mon fichier "/etc/sudoers" a titre d'exemple (attention, seul root
doit etre habilite meme pour une simple lecture de ce fichier).
Une suggestion: la commande "sudo" recherche des commandes et des directives dans le fichier "/etc/sudoers". Il serait facile d'oublier ce fichier, soit par etourderie, soit parce que l'on n'en a pas l'habitude. Ce fichier se construit normalement au moyen de la commande "visudo", sinon il est possible (bien qu'assez laid et contre les regles) d'editer directement ce fichier a partir d'un exemple. L'utilite finale est de lancer un script complet avec les droits de root et sans demande de mot de passe. Cela peut permettre par exemple de redemarrer le reseau, ou une imprimante, en cas d'incident, et d'offrir cette possibilite a ma femme a mon domicile (je fonctionne 100% linux) en mon absence.
Si l'option malpropre est prise, je veux bien poster mon fichier "/etc/sudoers" a titre d'exemple (attention, seul root doit etre habilite meme pour une simple lecture de ce fichier).
Bonne chance.
Olivier V
Merci pour l'idée,
Mais sudo fonctionne bien autrement, et c'est bien un problème de PATH à l'origine de ça.
Encore un truc amusant ... sous ubuntu il faut que je fasse : sudo su -c 'PATH=/usr/local/texlive/bin/i386-linux/:$PATH tlmgr -gui' pour que ça marche ...
Pour info mon sudoers est :
# sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the sudoers man page for the details on how to write a sudoers file. #
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# User privilege specification root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL
# Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL
Mais sudo fonctionne bien autrement, et c'est bien un problème de PATH à
l'origine de ça.
Encore un truc amusant ... sous ubuntu il faut que je fasse :
sudo su -c 'PATH=/usr/local/texlive/bin/i386-linux/:$PATH tlmgr -gui'
pour que ça marche ...
Pour info mon sudoers est :
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
Mais sudo fonctionne bien autrement, et c'est bien un problème de PATH à l'origine de ça.
Encore un truc amusant ... sous ubuntu il faut que je fasse : sudo su -c 'PATH=/usr/local/texlive/bin/i386-linux/:$PATH tlmgr -gui' pour que ça marche ...
Pour info mon sudoers est :
# sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the sudoers man page for the details on how to write a sudoers file. #
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# User privilege specification root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL
# Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL