Une place pour une véritable innovation. Partagez vos propres utilitaires créés avec la communauté Manjaro.
Questions et discussions sur la programmation et le codage.
Répondre

Utilisation de "install" dans lesPKGBUILD

#1Messageil y a 10 ans

Bonjour,

Je m'intéresse depuis quelques temps à la fabrication de packages, et pour voir de bonnes pratiques, je fouille un peu dans les pkgbuilds officiels. Mais ils contiennent régulièrement une commande "install -Dm755". Un petit tour du côté de la doc m'a indiqué le fonctionnement du "m755", mais je n'ai pas compris le fonctionnement du "D", ni même l'utilité de cette commande par rapport à un bête "cp".
Quelqu'un pourrait-il m'éclairer ?

Utilisation de "install" dans lesPKGBUILD

#2Messageil y a 10 ans

Bonjour,

Je n'utilise pas -D, parce que je n'en ai pas eu besoin. Mais ça permet de créer automatiquement les répertoires du chemin destination, si besoin est.

Sans que ce soit un rtfm :clindoeil: , fais un man install pour plus de détails.

(edit)
Un mkdir -p + cp + chmod

Utilisation de "install" dans lesPKGBUILD

#3Messageil y a 10 ans

J'ai regardé le manuel, mais je ne l'ai pas trouvé très explicite. Et puis quant au "D", quand je l'avais utilisé sans avoir créé de dossier auparavant, makepkg n'était pas d'accord.
Et donc en gros, c'est juste un raccourci.
Sinon, est-il possible de s'en servir pour copier des répertoires ? Il n'a pas l'air d'en vouloir.

Et une autre petite question, un peu hors sujet, mais je suis en plein dedans : est-il possible en utilisant l'ensemble PKGBUILD, makepkp, pacman, etc. d'installer des fichiers dans un dossier utilisateur, et pas seulement dans un dossier système ?

Utilisation de "install" dans lesPKGBUILD

#4Messageil y a 10 ans

Salut,
Ytterbium a écrit :Sinon, est-il possible de s'en servir pour copier des répertoires ? Il n'a pas l'air d'en vouloir.

Et une autre petite question, un peu hors sujet, mais je suis en plein dedans : est-il possible en utilisant l'ensemble PKGBUILD, makepkp, pacman, etc. d'installer des fichiers dans un dossier utilisateur, et pas seulement dans un dossier système ?

Arffff ! Deux questions pour une réponse: Oui

   cd $srcdir/$pkgname-$pkgver
   mkdir -p $pkgdir/$HOME
   cp fichier.txt $pkgdir/$HOME
   cp -a dossier/ $pkgdir/$HOME

MAIS ! Attention ! La variable $HOME représente à l'instant de la création par makepkg ton lieu de travail donc le fichier d'installation produit ne sera viable que sur ton système !

[Edit]
Donc:
Le souci dans cette question en fait est l'instant T de la création du fichier [ tar.xz ]

Utilisation de "install" dans lesPKGBUILD

#5Messageil y a 10 ans

tu peux aussi faire un paquet normal, et au moment de l'installation, demander à Pacman d'utiliser une autre racine:

sudo pacman -r /home/toto -U ton-paquet.tar.xz

mais précise un peu mieux ce que tu veux faire et il y aura peut-être d'autres idées...

Utilisation de "install" dans lesPKGBUILD

#6Messageil y a 10 ans

Ce que j'essaye de faire, c'est un petit installateur personnel pour dwarf fortress avec quelques petits utilitaires. J'avais trouvé ce script d'installation https://github.com/andrewd18/df-lnp-installer, et je me suis dit que je pourrais en faire un PKGBUILD, ce qui faciliterait grandement l'installation et la mise à jour.
Seulement, dwarf fortress a des besoins un peu particuliers d'utilisation : je crois qu'il a besoin qu'on soit propriétaire de son dossier pour pouvoir le lancer. D'ailleurs, le paquet officiel est galère a utilisé, puisqu'il l'installe dans /opt, et qu'il faut alors lancer dwarf fortress en su, ou se rajouter à un groupe particulier. C'est pourquoi je pense qu'il est plus simple de l'installer dans l'espace utilisateur de telle sorte qu'on ait les droits dessus.

xcfaudio a écrit :MAIS ! Attention ! La variable $HOME représente à l'instant de la création par makepkg ton lieu de travail donc le fichier d'installation produit ne sera viable que sur ton système !

[Edit]
Donc:
Le souci dans cette question en fait est l'instant T de la création du fichier [ tar.xz ]

Je l'avais remarqué en regardant l'intérieur du package créé. Mais dans mon cas, c'est pas trop grave.

Loubrix a écrit :tu peux aussi faire un paquet normal, et au moment de l'installation, demander à Pacman d'utiliser une autre racine:

sudo pacman -r /home/toto -U ton-paquet.tar.xz

mais précise un peu mieux ce que tu veux faire et il y aura peut-être d'autres idées...

Merci beaucoup pour l'astuce, ça peut m'être très utile. Il faudrait vraiment que je plonge dans les options de pacman.

Seulement, lorsque j'installe mon paquet, tous les fichiers appartienne à root (logique). Mais le problème, comme explique plus haut, c'est qu'il faudrait que ce soit l'utilisateur qui ait les droits dessus. Donc comment pourrait-on faire pour contourner cela, à part un chown massif post-installation ?

Utilisation de "install" dans lesPKGBUILD

#7Messageil y a 10 ans

pas un chown massif, juste sur les fichiers du jeu...
je ne sais pas trop dans ce cas, mais je sais que Pacman sait fonctionner en simple utilisateur quand c'est suffisant, du coup je me demande si ma commande a besoin de Sudo...

edit: j'ai testé, Pacman a aussi besoin d'écrire dans sa base de données quand il installe, donc il faut être root.

Utilisation de "install" dans lesPKGBUILD

#8Messageil y a 10 ans

Je crois que je vais donc devoir utiliser un script de post-install. Mais est-il possible de faire passer une variable du PKGBUILD aux scripts d'install ?

Sinon, j'ai un problème avec

sudo pacman -r /home/toto -U ton-paquet.tar.xz
, pacman me renvoie une erreur :

Erreur: l'initialisation de la librairie alpm a échoué (trouver ou lire le répertoire a échoué)
Répondre