[PKGBUILD] bonnes pratiques avec sudo (résolu)
-
- Hankyu
- Messages : 32
- Inscription : mer. 25 mars 2015, 10:33
[PKGBUILD] bonnes pratiques avec sudo (résolu)
Bonjour,
J'ai fait un script Python qui nécessite que la base de données de man soit à jour pour fonctionner correctement.
La commande est simple: mandb.
Le truc c'est que cette commande doit être exécutée avec les privilèges root.
Donc la question que je me pose est faut-il inclure la commande suivante dans build()?
sudo mandb
Si oui, faut-il la faire précéder d'un message pour indiquer pourquoi un password est demandé?
Ou alors est-il préférable d'afficher un message pour inviter l'utilisateur à le faire tout seul, comme un grand?
PS:
Si je mets cette commande en dernière ligne de package() j'obtiens le message suivant:
ERROR: ld.so: object 'libfakeroot.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
J'ai fait un script Python qui nécessite que la base de données de man soit à jour pour fonctionner correctement.
La commande est simple: mandb.
Le truc c'est que cette commande doit être exécutée avec les privilèges root.
Donc la question que je me pose est faut-il inclure la commande suivante dans build()?
sudo mandb
Si oui, faut-il la faire précéder d'un message pour indiquer pourquoi un password est demandé?
Ou alors est-il préférable d'afficher un message pour inviter l'utilisateur à le faire tout seul, comme un grand?
PS:
Si je mets cette commande en dernière ligne de package() j'obtiens le message suivant:
ERROR: ld.so: object 'libfakeroot.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Dernière modification par ElMoribond le jeu. 26 mars 2015, 12:17, modifié 1 fois.
- benjarobin
- Maître du Kyudo
- Messages : 17563
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [PKGBUILD] bonnes pratiques avec sudo
Bonjour,
Beaucoup de points ne vont pas dans ton raisonnement :
- sudo n'est pas forcément configuré ou même installé.
- toucher au système depuis un PKGBUILD est juste interdit et n'a pas de sens : si tu donnes le paquet compilé à quelqu'un ces commandes ne seront pas faites sur son ordinateur
- le fichier .install du paquet est fait pour cela
- cette commande est déjà lancé périodiquement par le système que je sache
Beaucoup de points ne vont pas dans ton raisonnement :
- sudo n'est pas forcément configuré ou même installé.
- toucher au système depuis un PKGBUILD est juste interdit et n'a pas de sens : si tu donnes le paquet compilé à quelqu'un ces commandes ne seront pas faites sur son ordinateur
- le fichier .install du paquet est fait pour cela
- cette commande est déjà lancé périodiquement par le système que je sache
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
-
- Hankyu
- Messages : 32
- Inscription : mer. 25 mars 2015, 10:33
Re: [PKGBUILD] bonnes pratiques avec sudo
Merci et bravo pour ta réactivité.
Je me doutais bien que ce n'était pas la bonne façon.
En suivant tes conseils j'ai regardé le proto.install que j'ai sur ma machine.
J'ai donc placé le .install dans le tar.gz de mon paquet.
Mais la commande n'est pas lancée lorsque je teste via:
Dans le proto il est indiquéArgument de qui, de quoi?
Dans la déclaration?, genreJ'ai essayé avec et sans.
Dans l'appel à .install? Il faut donc le copier et l'exécuter dans package()?Bref, je nage sur ce point.
https://wiki.archlinux.fr/PKGBUILD#install
N'est pas beaucoup plus clair/précis sur ce sujet.
Mais le premier réflexe de l'utilisateur suite à l'installation de mon paquet sera de tester.
Par exemple en demandant d'afficher l'aide dudit paquet. Par exemple:
manpagesgui manpagesgui
Et dans ce cas...
Plouf plouf, soit il essaie avec une autre commande. Et se dira que je ne fournit pas de man page, un comble pour ce genre de prog.
Soit il pensera que le prog n'est pas fiable.
Soit...
Bref,
Tout le monde n'est pas au fait concernant mandb, généralement, on ne s'en occupe pas.
Je me doutais bien que ce n'était pas la bonne façon.
En suivant tes conseils j'ai regardé le proto.install que j'ai sur ma machine.
J'ai donc placé le .install dans le tar.gz de mon paquet.
Mais la commande n'est pas lancée lorsque je teste via:
Code : Tout sélectionner
sudo pacman -U progname-1.0-1-any.pkg.tar.xz
Code : Tout sélectionner
## arg 1: the new package version
#post_install() {
# do something here
#}
Dans la déclaration?, genre
Code : Tout sélectionner
post_install("1.0") {
sudo mandb
}
Dans l'appel à .install? Il faut donc le copier et l'exécuter dans package()?
Code : Tout sélectionner
cp .install $pkgdir/usr/share/$pkgname/
chmod +x $pkgdir/usr/share/$pkgname/
$pkgdir/usr/share/$pkgname/.install
rm $pkgdir/usr/share/$pkgname/.install
https://wiki.archlinux.fr/PKGBUILD#install
N'est pas beaucoup plus clair/précis sur ce sujet.
Exacte.benjarobin a écrit : - cette commande est déjà lancé périodiquement par le système que je sache
Mais le premier réflexe de l'utilisateur suite à l'installation de mon paquet sera de tester.
Par exemple en demandant d'afficher l'aide dudit paquet. Par exemple:
manpagesgui manpagesgui
Et dans ce cas...
Plouf plouf, soit il essaie avec une autre commande. Et se dira que je ne fournit pas de man page, un comble pour ce genre de prog.
Soit il pensera que le prog n'est pas fiable.
Soit...
Bref,
Tout le monde n'est pas au fait concernant mandb, généralement, on ne s'en occupe pas.
- benjarobin
- Maître du Kyudo
- Messages : 17563
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [PKGBUILD] bonnes pratiques avec sudo
Oula, je te conseil de te documenter sur bash, au moins comment les fonctions bash fonctionnent.
De plus le mieux est de prendre un exemple : gnome-media-player
Ne pas oublier non plus la ligne dans le PKGBUILD déclarant le .install, souvent cette ligne est celle-ci
De plus le mieux est de prendre un exemple : gnome-media-player
Ne pas oublier non plus la ligne dans le PKGBUILD déclarant le .install, souvent cette ligne est celle-ci
Code : Tout sélectionner
install=$pkgname.install
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [PKGBUILD] bonnes pratiques avec sudo
Tu places juste la commande mandb dans le .install en suivant le modèle (autre possibilité: indiquer à l'utilisateur de lancer la commande ou tout autre chose qui te paraît pertinente sur l'utilisation de ton script) et c'est tout. Ni sudo, ni autre chose. N'hésite pas à poster l'ensemble PKGBUILD ici pour vérification...ElMoribond a écrit : Mais le premier réflexe de l'utilisateur suite à l'installation de mon paquet sera de tester.
Par exemple en demandant d'afficher l'aide dudit paquet. Par exemple:
manpagesgui manpagesgui
Et dans ce cas...
Plouf plouf, soit il essaie avec une autre commande. Et se dira que je ne fournit pas de man page, un comble pour ce genre de prog.
Soit il pensera que le prog n'est pas fiable.
Soit...
Bref,
Tout le monde n'est pas au fait concernant mandb, généralement, on ne s'en occupe pas.

«The following statement is not true. The previous statement is true.» 

-
- Hankyu
- Messages : 32
- Inscription : mer. 25 mars 2015, 10:33
Re: [PKGBUILD] bonnes pratiques avec sudo
Merci FoolEcho,
J'y suis arrivé et le paquet est dispo sur AUR.
Voici le PKGBUILDet manpagesgui.installSi vous avez des remarques et/ou corrections n'hésitez pas.
J'y suis arrivé et le paquet est dispo sur AUR.
Voici le PKGBUILD
Code : Tout sélectionner
# Maintainer: ElMoribond <elmoribond@gmail.com>
pkgname=manpagesgui
pkgver=1.0
pkgrel=1
pkgdesc="GUI manual pager"
arch=(any)
url="https://github.com/ElMoribond/manpagesgui"
license=("GPL3")
depends=("python>=3.4", "pyqt5-common>=5.4", "man-db>=2.7", "man-pages>=3.78")
source=("$pkgname-$pkgver.tar.gz")
md5sums=("21fba58c8d605cae6b9bcf39b9200746")
install=$pkgname.install
package() {
cd $srcdir/$pkgname-$pkgver
mkdir -p $pkgdir/usr/share/$pkgname
mkdir -p $pkgdir/usr/share/man
mkdir -p $pkgdir/usr/bin
mkdir -p $pkgdir/usr/share/applications
cp LICENSE $pkgdir/usr/share/$pkgname/
cp README.md $pkgdir/usr/share/$pkgname/
cp __init__.py $pkgdir/usr/share/$pkgname/
cp $pkgname.py $pkgdir/usr/share/$pkgname/
cp -r i18n $pkgdir/usr/share/$pkgname/
cp -r png $pkgdir/usr/share/$pkgname/
cp -r man/* $pkgdir/usr/share/man/
cp $pkgname.desktop $pkgdir/usr/share/applications/
chmod +x $pkgdir/usr/share/$pkgname/$pkgname.py
ln -s /usr/share/$pkgname/$pkgname.py $pkgdir/usr/bin/$pkgname
}
Code : Tout sélectionner
post_install() {
if [ ${LANG:0:2} == "fr" ]; then
_NAME="Pages du manuel"
_DESC="Naviguer dans les pages du manuel Linux"
else
_NAME="Manuel pages"
_DESC="Navigate through the Linux manual pages"
fi
sed -i -- "s/Name=manPagesGui/Name=$_NAME/g" /usr/share/applications/manpagesgui.desktop
sed -i -- "s/Comment=/Comment=$_DESC/g" /usr/share/applications/manpagesgui.desktop
mandb --quiet
}
post_upgrade() {
post_install $1
}
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [PKGBUILD] bonnes pratiques avec sudo
Ceci doit être fait au niveau de la fonction prepare dans le PKGBUILD si tu y tiens. Mais en aucun cas en post installation sur des fichiers du système (même ceux issus du paquet en cours d'installation).ElMoribond a écrit :Code : Tout sélectionner
if [ ${LANG:0:2} == "fr" ]; then _NAME="Pages du manuel" _DESC="Naviguer dans les pages du manuel Linux" else _NAME="Manuel pages" _DESC="Navigate through the Linux manual pages" fi sed -i -- "s/Name=manPagesGui/Name=$_NAME/g" /usr/share/applications/manpagesgui.desktop sed -i -- "s/Comment=/Comment=$_DESC/g" /usr/share/applications/manpagesgui.desktop
«The following statement is not true. The previous statement is true.» 

- benjarobin
- Maître du Kyudo
- Messages : 17563
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [PKGBUILD] bonnes pratiques avec sudo
C'est quoi cette horreur de patcher le fichier desktop depuis le .install ? Comme le dit FoolEcho c'est en plus une très mauvaise pratique !
Le format .desktop fournit déjà un moyen de fournir des descriptions associées à la locale courante. Il suffit de prendre n'importe quel .desktop d'une grosse application populaire comme exemple
Le format .desktop fournit déjà un moyen de fournir des descriptions associées à la locale courante. Il suffit de prendre n'importe quel .desktop d'une grosse application populaire comme exemple
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [PKGBUILD] bonnes pratiques avec sudo
+1.
(je ne m'étais pas attardé sur la modification en elle-même
)

(je ne m'étais pas attardé sur la modification en elle-même

«The following statement is not true. The previous statement is true.» 

-
- Hankyu
- Messages : 32
- Inscription : mer. 25 mars 2015, 10:33
Re: [PKGBUILD] bonnes pratiques avec sudo
Tout a fait exact, je ne sais pas ce qu'il m'a pris
Je vais corriger ça de suite.



Je vais corriger ça de suite.
Re: [PKGBUILD] bonnes pratiques avec sudo (résolu)
ah… sed… c'est addictif 

dwm — BÉPO — vim — “more is less !”