Construire des RPM pour installer simplement des fichiers
J'ai besoin de construire un RPM, avec le seul but de l'installation de certaines polices. J'ai lu plusieurs tutoriels à ce sujet, mais tout le monde semble suggère quelque chose de différent et je n'ai pas été en mesure de trouver quelque chose comme une configuration de base pour le faire.
Est-il possible de référencer les fichiers à l'intérieur de l' %des fichiers de la section de la spécification? J'ai essayé cependant, rpm essaie toujours de trouver les fichiers dans le répertoire tmp. Ai-je besoin d'ajouter un build spécifique étape qui copie tout ce dont j'ai besoin pour le répertoire tmp?
Si ces fichiers vont dans la SOURCE ou le répertoire de construction lors de la construction du rpm? J'ai été trouver un grand nombre de différentes informations. Certains suggèrent de construire une archive qui contient les fichiers et de les placer sous le répertoire SOURCE, cependant, cela semble faux, comme les fichiers de police ne sont pas des fichiers source pour moi.
Idéalement, je voudrais juste mettre tous les fichiers de polices dans le dossier de génération en vertu d'une structure de répertoire './usr/share/fonts/" et ensuite de référence que dans le %de la section du fichier de la spécification et de laisser RPM faire sa magie. Probablement, je suis absent ou d'un malentendu quelque chose ici.
Ne l' %section fichiers toujours s'attendre à trouver la source des fichiers dans le répertoire tmp, ou est-il quelque chose de mal avec ma configuration? J'ai créé ~/.rpmmacros qui contient
%_topdir /Users/user/rpm
qui est la racine du répertoire de construction et contient de la construction, RPM, les SOURCES, les SPÉCIFICATIONS et les répertoires tmp.
Je serais heureux si quelqu'un pouvait fournir qui sont moins les éléments requis dans le fichier de spec à obtenir que cela fonctionne correctement.
Modifier
Suivantes user3159253 suggestions, je suis en utilisant la spécification suivante du fichier:
Name: test
Version: 1.0.0
Release: 1
Copyright: Copyright info
Group: Applications/System
BuildArch: noarch
%description
Brief description of software package.
%prep
%build
%install
mkdir -p %{buildroot}/usr/share/fonts
cp ./usr/share/fonts/* %buildroot/usr/share/fonts/
%clean
%files
/usr/share/fonts/*
J'ai copié les polices dans le BUILD/usr/share/fonts/. Si j'ai une requête du rpm pour une liste de fichiers, toutes les polices sont là. Cependant, quand j'ai installer le rpm, il se plaint de
/usr/share/fonts is needed by test-1.0.0-1.noarch
Cependant, il n'a pas d'importance si ce répertoire existe ou pas, donc je suppose tr /min, on se plaint que cette ressource n'est pas répertorié dans sa base de données.
J'ai été en mesure de résoudre ce problème en changeant le %de la section du fichier:
/usr/
/usr/share/
/usr/share/fonts/
/usr/share/fonts/*
Cependant, je doute que ce soit une bonne idée. Est-il une meilleure façon de résoudre ce problème?
OriginalL'auteur Steve Hummingbird | 2014-02-04
Vous devez vous connecter pour publier un commentaire.
lorsque vous les fichiers de liste dans
%files
section ces fichiers sont attendus à résider dans les %{buildroot} répertoire. Comme Fedora documentation dit depuis Fedora 10 buildroot ne peut pas être redéfini dans la spec, donc, oui, vous avez pour créer une hiérarchie du système de fichiers dans %buildroot, copie de vos fichiers de police, puis de les mentionner dans%files
:votre distribution a probablement des macros rapides standard des fichiers de police endroits, leur bonne registation dans le système lors de l'installation du rpm, etc, mais la plupart de ces macros sont spécifiques au fournisseur. Aussi, vous devez copier vos fichiers de police dans les SOURCES/sous-répertoire et de les mentionner dans
Source:
(Source<N>:
) dans la balise tr /min spec (juste un exemple, un certain nombre peut être):Alors vous pouvez utiliser quelque chose comme cela dans la
%install
section:au lieu d'un chemin d'accès complet à la MyFont.ttf.
Mise à jour:
Vous avez raison à propos de dépendances manquantes: ce n'est pas des artefacts (fichiers, répertoires, etc) sur le système de fichiers, c'est des enregistrements dans les TR /min db (dans /var/lib/rpm). Donc pour résoudre le problème que vous avez à travailler avec cette DB.
Donc si vous avez unsatisifed des dépendances dans le générés paquet RPM, vous avez deux options:
rpm
automatique de la dépendance des calculs. UtilisationAutoReqProv: no
pour désactiver complètement ce genre de choses.fontconfig
. Malheureusement, les différentes distributions Linux rpm sont légèrement différentes, hein-hm, les coutumes en la matière. En fait, vous avez pour vérifier la façon dont ce processus est organisé dans votre distribution déjà existants paquets de police. Vous pouvez prendre une bonne source de paquetages rpm (vérifier http://rpmfind.net ou http://rpm.pbone.net TR /min moteurs de recherche), extrait de son .les spécifications de fichiers et d'étudier comment%prein
,%postin
,%preun
et%postun
section de la spécification sont organisées. Évidemment, les paquets de police portent habituellement -polices - dans leur nom 🙂Après tout, vous pouvez afficher les dépendances et fournit des d'achat d'un paquet rpm avec
rpm --query --requires --package </path/to/file.rpm>
etrpm --query --provides --package </path/to/file.rpm>
. Les paquets installés' deps sont indiqués avecrpm --query --requires <rpm_name>
et ainsi de suite.Mise à jour de la réponse. Espérons que cela aide.
Merci beaucoup. AutoReqProv: non devrait suffire comme personne ne va en fait utiliser rpm pour installer les polices de caractères. Juste l'utiliser pour distribuer les fichiers au moyen de marionnettes. L'enregistrement de l'polices sera probablement plus facile avec de marionnettes puis.
OriginalL'auteur user3159253
Une réponse à la montée de la question, la suivante peut être la réponse que vous cherchez:
Ici, nous considérons tous les fichiers dans le répertoire de construction pour être une partie de l'emballage. Ceci est fait en plaçant
/*
sous%files
.Espère que cela répond à votre question correctement.
OriginalL'auteur fury.slay