2017-02-26 1 views
0

Je suis relativement nouveau dans la construction et la distribution de paquets avec RPM.Spécifier installdir/builddir avec RPM

Je suis en train de réaliser les fonctionnalités suivantes, et je suis un peu confus sur la façon de gérer que:

  1. Sur la machine de construction, le paquetage RPM doit être construit sous mon compte, par exemple sous/home/nom d'utilisateur/rpmbuild. Ce dossier a la structure appropriée (par exemple contient SPECS, RPMS, SOURCES, etc.). Le fichier que je veux empaqueter est essentiellement les binaires d'un fichier .tgz situé dans le répertoire SOURCES. J'ai aussi un accès root, donc ça ne devrait pas poser de problème.
  2. Sur les machines '' client '', le logiciel doit être installé sous un répertoire spécifique, par ex./specific_mountpoint/nom_programme. Cela devrait arriver même si les utilisateurs doivent exécuter une simple commande rpm -ivh nom_rpm.rpm sans paramètre supplémentaire.

J'ai les questions suivantes:

  • Ma compréhension actuelle du processus RPM est que la machine de construction doit refléter la machine client au cours du processus rpmbuild. Si c'est correct, alors je dois avoir/specific_mountpoint/nom_programme créé par le processus rpmbuild sur la machine de construction, n'est-ce pas? Est-ce que cela signifie que je dois copier des fichiers de RPM_BUILD_ROOT dans ce répertoire ou existe-t-il un moyen de surcharger RPM_BUILD_ROOT dans le fichier spec? Mon problème est alors que sous% fichiers dans le fichier spec, je ne peux pas être capable de pointer rpmbuild pour prendre les fichiers de/specific_mountpoint/nom_programme (comme il va actuellement dans le dossier/home/username/rpmbuild/BUILDROOT). J'ai essayé de contourner ce comportement sans succès.

Toutes les idées et les fichiers de spécifications concrètes sont plus que bienvenus. J'utilise RPM version 4.8. Je mentionne ceci puisque les drapeaux spécifiques ont été dépréciés de ce que je lis.

Merci beaucoup!

Répondre

2

Non, vous êtes proche mais légèrement éteint. Ce que vous construisez en buildroot est l'équivalent de la racine sur la machine cible. Alors ayez vos affaires dans /home/username/rpmbuild/BUILDROOT/packagename-version/specific_mountpoint/program_name AKA %{buildroot}/specific_mountpoint/program_name. Ensuite, dans %files, vous répertoriez l'emplacement de destination, par ex. %doc /specific_mountpoint/program_name/README.

+0

Merci beaucoup! Cela a fonctionné parfaitement. –