[PKGBUILD] bonnes pratiques avec sudo (résolu)

Mise à jour / Création /debug de paquetages
Répondre
ElMoribond
Hankyu
Messages : 32
Inscription : mer. 25 mars 2015, 10:33

[PKGBUILD] bonnes pratiques avec sudo (résolu)

Message par ElMoribond »

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.
Dernière modification par ElMoribond le jeu. 26 mars 2015, 12:17, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17563
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PKGBUILD] bonnes pratiques avec sudo

Message par benjarobin »

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
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
ElMoribond
Hankyu
Messages : 32
Inscription : mer. 25 mars 2015, 10:33

Re: [PKGBUILD] bonnes pratiques avec sudo

Message par ElMoribond »

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:

Code : Tout sélectionner

sudo pacman -U progname-1.0-1-any.pkg.tar.xz
Dans le proto il est indiqué

Code : Tout sélectionner

## arg 1:  the new package version
#post_install() {
        # do something here
#}
Argument de qui, de quoi?
Dans la déclaration?, genre

Code : Tout sélectionner

post_install("1.0") {
  sudo mandb
}
J'ai essayé avec et sans.

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
Bref, je nage sur ce point.

https://wiki.archlinux.fr/PKGBUILD#install
N'est pas beaucoup plus clair/précis sur ce sujet.
benjarobin a écrit : - cette commande est déjà lancé périodiquement par le système que je sache
Exacte.
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.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17563
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PKGBUILD] bonnes pratiques avec sudo

Message par benjarobin »

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

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
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [PKGBUILD] bonnes pratiques avec sudo

Message par FoolEcho »

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.
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... :chinois:
«The following statement is not true. The previous statement is true.» :nage:
ElMoribond
Hankyu
Messages : 32
Inscription : mer. 25 mars 2015, 10:33

Re: [PKGBUILD] bonnes pratiques avec sudo

Message par ElMoribond »

Merci FoolEcho,

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
}
et manpagesgui.install

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
}
Si vous avez des remarques et/ou corrections n'hésitez pas.
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [PKGBUILD] bonnes pratiques avec sudo

Message par FoolEcho »

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
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).
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17563
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PKGBUILD] bonnes pratiques avec sudo

Message par benjarobin »

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
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [PKGBUILD] bonnes pratiques avec sudo

Message par FoolEcho »

+1. :chinois:
(je ne m'étais pas attardé sur la modification en elle-même :wink: )
«The following statement is not true. The previous statement is true.» :nage:
ElMoribond
Hankyu
Messages : 32
Inscription : mer. 25 mars 2015, 10:33

Re: [PKGBUILD] bonnes pratiques avec sudo

Message par ElMoribond »

Tout a fait exact, je ne sais pas ce qu'il m'a pris :oops: :oops: :oops:
Je vais corriger ça de suite.
bobo
Elfe
Messages : 593
Inscription : mar. 08 avr. 2014, 22:47

Re: [PKGBUILD] bonnes pratiques avec sudo (résolu)

Message par bobo »

ah… sed… c'est addictif :rasta2:
dwm — BÉPO — vim — “more is less !”
Répondre