Bonjour,

souhaitant évoluer un peux dans mon utilisation de FEDORA, j'ai eu envie de me mettre à la création de paquet à titre personnel (et éventuellement créer un dépôt pour des amis que j'ai converti à FEDORA) et aussi parce que je peut en avoir besoin au boulot puisqu'un service travail sur centos 6.4 (les dépôts sont figés à la demande de ce service). Le cas qui m’intéresse aujourd’hui est un projet perso et je souhaiterais packager le logiciel keepassx 2.0 alpha6. Pour commencer j'ai regardé les tutos sur ce site et aussi sur d'autre mais il y a un problème que je n'arrive pas a résoudre. Le tar que je place dans le répertoire sources s’appelle keepassx-2.0-alpha6.tar.gz et lorsqu'il est décompressé par la commande setup -q cela donne un répertoire nommé keepassx-2.0-alpha6, le problème est que lors de la construction rpmbuild fait un cd sur un répertoire qui s’appelle keepassx-2.0 qu'il ne le trouve pas et sort en erreur. En faisant quelque recherche j'ai vu que l'on pouvait renommer le répertoire en remplaçant setup -n par setup -n suivie du nom du répertoire que l'on souhaite mais cela ne fonctionne pas. Si je modifie le numéro de version du fichier spec en remplaçant 2.0 par 2.0-beta6, j'ai une erreur qui me dit que le signe "-" est un signe illégal. Si quelqu’un à une critique constructive a faire sur mon fichier spec ci dessous je suis preneur.

Name:           keepassx
Version:        2.0
Release:        alpha6%{?dist}
Summary:        Logiciel de gestion de mots de passe

group:          Applications/System
License:        BSD GPL-2 GPL-3 LGPL-2.1 LGPL-3
URL:            https://www.keepassx.org
Source0:        keepassx-2.0-alpha6.tar.gz
Source1:        %{name}.desktop
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArchitectures: x86_64

BuildRequires:  cmake libgcrypt-devel qt-devel zlib-devel
BuildRequires:  desktop-file-utils
Requires:       libgcrypt qt-x11 zlib


%description
Keepass est un logiciel de gestion de mot de passe qui
permet de geré des mots de passe stoquées dans une
base de données chiffré à l'aide d'un chiffrage
AES 256 bits

%prep
%setup -n keepassx-2.0


%build
#mv keepassx-2.0-alpha6 keepassx-2.0
cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=/opt/keepassx2
make

%install
rm -rf $RPM_BUILD_ROOT
%make_install
make install DESTDIR=$RPM_BUILD_ROOT

%clean
rpm -fr /var/tmp/rpm*

%files
%defattr(-,root,root,-)
%doc CHANGELOG COPYING
/opt/keepassx2/bin/keepassx
/opt/keepassx2/lib64/keepassx/libkeepassx-autotype-x11.so
/opt/keepassx2/share/applications/keepassx.desktop
/opt/keepassx2/share/icons/hicolor/128x128/apps/keepassx.png
/opt/keepassx2/share/icons/hicolor/128x128/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/icons/hicolor/16x16/apps/keepassx.png
/opt/keepassx2/share/icons/hicolor/16x16/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/icons/hicolor/22x22/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/icons/hicolor/24x24/apps/keepassx.png
/opt/keepassx2/share/icons/hicolor/256x256/apps/keepassx.png
/opt/keepassx2/share/icons/hicolor/32x32/apps/keepassx.png
/opt/keepassx2/share/icons/hicolor/32x32/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/icons/hicolor/48x48/apps/keepassx.png
/opt/keepassx2/share/icons/hicolor/64x64/apps/keepassx.png
/opt/keepassx2/share/icons/hicolor/64x64/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/icons/hicolor/scalable/apps/keepassx.svgz
/opt/keepassx2/share/keepassx/icons/application/128x128/apps/keepassx.png
/opt/keepassx2/share/keepassx/icons/application/128x128/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/application-exit.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/auto-type.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/configure.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/database-change-key.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/document-close.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/document-edit.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/document-encrypt.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/document-new.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/document-open.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/document-save-as.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/document-save.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/edit-clear-locationbar-ltr.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/edit-clear-locationbar-rtl.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/entry-clone.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/entry-delete.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/entry-edit.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/entry-new.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/group-delete.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/group-edit.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/group-new.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/help-about.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/password-copy.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/password-generate.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/password-show-off.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/password-show-on.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/system-search.png
/opt/keepassx2/share/keepassx/icons/application/16x16/actions/username-copy.png
/opt/keepassx2/share/keepassx/icons/application/16x16/apps/keepassx.png
/opt/keepassx2/share/keepassx/icons/application/16x16/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/dialog-close.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/dialog-ok.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/document-encrypt.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/document-open.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/document-save.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/entry-delete.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/entry-edit.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/entry-new.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/password-copy.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/system-search.png
/opt/keepassx2/share/keepassx/icons/application/22x22/actions/username-copy.png
/opt/keepassx2/share/keepassx/icons/application/22x22/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/keepassx/icons/application/22x22/status/dialog-error.png
/opt/keepassx2/share/keepassx/icons/application/22x22/status/dialog-information.png
/opt/keepassx2/share/keepassx/icons/application/22x22/status/dialog-warning.png
/opt/keepassx2/share/keepassx/icons/application/24x24/apps/keepassx.png
/opt/keepassx2/share/keepassx/icons/application/256x256/apps/keepassx.png
/opt/keepassx2/share/keepassx/icons/application/32x32/apps/keepassx.png
/opt/keepassx2/share/keepassx/icons/application/32x32/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/keepassx/icons/application/48x48/apps/keepassx.png
/opt/keepassx2/share/keepassx/icons/application/64x64/apps/keepassx.png
/opt/keepassx2/share/keepassx/icons/application/64x64/mimetypes/application-x-keepassx.png
/opt/keepassx2/share/keepassx/icons/application/scalable/apps/keepassx.svgz
/opt/keepassx2/share/keepassx/icons/database/C00_Password.png
/opt/keepassx2/share/keepassx/icons/database/C01_Package_Network.png
/opt/keepassx2/share/keepassx/icons/database/C02_MessageBox_Warning.png
/opt/keepassx2/share/keepassx/icons/database/C03_Server.png
/opt/keepassx2/share/keepassx/icons/database/C04_Klipper.png
/opt/keepassx2/share/keepassx/icons/database/C05_Edu_Languages.png
/opt/keepassx2/share/keepassx/icons/database/C06_KCMDF.png
/opt/keepassx2/share/keepassx/icons/database/C07_Kate.png
/opt/keepassx2/share/keepassx/icons/database/C08_Socket.png
/opt/keepassx2/share/keepassx/icons/database/C09_Identity.png
/opt/keepassx2/share/keepassx/icons/database/C10_Kontact.png
/opt/keepassx2/share/keepassx/icons/database/C11_Camera.png
/opt/keepassx2/share/keepassx/icons/database/C12_IRKickFlash.png
/opt/keepassx2/share/keepassx/icons/database/C13_KGPG_Key3.png
/opt/keepassx2/share/keepassx/icons/database/C14_Laptop_Power.png
/opt/keepassx2/share/keepassx/icons/database/C15_Scanner.png
/opt/keepassx2/share/keepassx/icons/database/C16_Mozilla_Firebird.png
/opt/keepassx2/share/keepassx/icons/database/C17_CDROM_Unmount.png
/opt/keepassx2/share/keepassx/icons/database/C18_Display.png
/opt/keepassx2/share/keepassx/icons/database/C19_Mail_Generic.png
/opt/keepassx2/share/keepassx/icons/database/C20_Misc.png
/opt/keepassx2/share/keepassx/icons/database/C21_KOrganizer.png
/opt/keepassx2/share/keepassx/icons/database/C22_ASCII.png
/opt/keepassx2/share/keepassx/icons/database/C23_Icons.png
/opt/keepassx2/share/keepassx/icons/database/C24_Connect_Established.png
/opt/keepassx2/share/keepassx/icons/database/C25_Folder_Mail.png
/opt/keepassx2/share/keepassx/icons/database/C26_FileSave.png
/opt/keepassx2/share/keepassx/icons/database/C27_NFS_Unmount.png
/opt/keepassx2/share/keepassx/icons/database/C28_QuickTime.png
/opt/keepassx2/share/keepassx/icons/database/C29_KGPG_Term.png
/opt/keepassx2/share/keepassx/icons/database/C30_Konsole.png
/opt/keepassx2/share/keepassx/icons/database/C31_FilePrint.png
/opt/keepassx2/share/keepassx/icons/database/C32_FSView.png
/opt/keepassx2/share/keepassx/icons/database/C33_Run.png
/opt/keepassx2/share/keepassx/icons/database/C34_Configure.png
/opt/keepassx2/share/keepassx/icons/database/C35_KRFB.png
/opt/keepassx2/share/keepassx/icons/database/C36_Ark.png
/opt/keepassx2/share/keepassx/icons/database/C37_KPercentage.png
/opt/keepassx2/share/keepassx/icons/database/C38_Samba_Unmount.png
/opt/keepassx2/share/keepassx/icons/database/C39_History.png
/opt/keepassx2/share/keepassx/icons/database/C40_Mail_Find.png
/opt/keepassx2/share/keepassx/icons/database/C41_VectorGfx.png
/opt/keepassx2/share/keepassx/icons/database/C42_KCMMemory.png
/opt/keepassx2/share/keepassx/icons/database/C43_EditTrash.png
/opt/keepassx2/share/keepassx/icons/database/C44_KNotes.png
/opt/keepassx2/share/keepassx/icons/database/C45_Cancel.png
/opt/keepassx2/share/keepassx/icons/database/C46_Help.png
/opt/keepassx2/share/keepassx/icons/database/C47_KPackage.png
/opt/keepassx2/share/keepassx/icons/database/C48_Folder.png
/opt/keepassx2/share/keepassx/icons/database/C49_Folder_Blue_Open.png
/opt/keepassx2/share/keepassx/icons/database/C50_Folder_Tar.png
/opt/keepassx2/share/keepassx/icons/database/C51_Decrypted.png
/opt/keepassx2/share/keepassx/icons/database/C52_Encrypted.png
/opt/keepassx2/share/keepassx/icons/database/C53_Apply.png
/opt/keepassx2/share/keepassx/icons/database/C54_Signature.png
/opt/keepassx2/share/keepassx/icons/database/C55_Thumbnail.png
/opt/keepassx2/share/keepassx/icons/database/C56_KAddressBook.png
/opt/keepassx2/share/keepassx/icons/database/C57_View_Text.png
/opt/keepassx2/share/keepassx/icons/database/C58_KGPG.png
/opt/keepassx2/share/keepassx/icons/database/C59_Package_Development.png
/opt/keepassx2/share/keepassx/icons/database/C60_KFM_Home.png
/opt/keepassx2/share/keepassx/icons/database/C61_Services.png
/opt/keepassx2/share/keepassx/icons/database/C62_Tux.png
/opt/keepassx2/share/keepassx/icons/database/C63_Feather.png
/opt/keepassx2/share/keepassx/icons/database/C64_Apple.png
/opt/keepassx2/share/keepassx/icons/database/C65_W.png
/opt/keepassx2/share/keepassx/icons/database/C66_Money.png
/opt/keepassx2/share/keepassx/icons/database/C67_Certificate.png
/opt/keepassx2/share/keepassx/icons/database/C68_BlackBerry.png
/opt/keepassx2/share/mime/packages/keepassx.xml

%changelog
* Thu Jun 19 2014 toto 2.0 Alpha 6 (2014-04-06)
- Création du package
- Add option to lock databases after user inactivity [#62]
- Add compatibility with libgcrypt 1.6 [#129]
- Display passwords in monospace font [#51]
- Use an icon for the button that shows/masks passwords [#38]
- Add an option to show passwords by default [#93]
- Improve password generator design [#122]
- On Linux link .kdbx files with KeePassX
- Remember window size [#154]
- Disallow global auto-typing when the database is locked

* Thu Jun 19 2014 toto 2.0 Alpha 5 (2013-12-20)

- Support copying entries and groups using drag'n'drop [#74]
- Open last used databases on startup [#36]
- Made the kdbx file parser more robust
- Only edit entries on doubleclick (not single) or with enter key
- Allow removing multiple entries
- Added option to minimize window when copying data to clipboard
- Save password generator settings
- Fixed auto-type producing wrong chars in some keyboard configurations [#116]
- Added some more actions to the toolbar

* Thu Jun 19 2014 toto 2.0 Alpha 4 (2013-03-29)

- Add random password generator [#52]
- Merge the 'Description' tab into the 'Entry' tab [#59]
- Fix crash when deleting history items [#56]
- Fix crash on Mac OS X Mountain Lion during startup [#50]
- Improved KeePassX application icon [#58]

* Thu Jun 19 2014 toto 2.0 Alpha 3 (2012-10-27)

- Auto-Type on Linux / X11
- Database locking
- Fix database corruption when changing key transformation rounds [#34]
- Verify header data of kdbx files
- Add menu entry to open URLs in the browser
- Add menu entry to copy an entry attribute to clipboard

* Thu Jun 19 2014 toto 2.0 Alpha 2 (2012-07-02)

- Import kdb (KeePass 1) files [#2]
- Display history items [#23]
- Implement history item limits [#16]
- Group and entry icons can be set [#22]
- Add keyboard shortcuts
- Search in databases [#24]
- Sortable entry view
- Support building Mac OS X bundles

* Thu Jun 19 2014 toto 2.0 Alpha 1 (2012-05-07)

- First release.
> %setup -q -n keepassx-2.0-alpha6
Merci pour la réponse mais ca ne fonctionne toujours pas. Voici ce que j'ai en message d'erreur
Exécution_de(%prep) : /bin/sh -e /var/tmp/rpm-tmp.iiTqT8
+ umask 022
+ cd /home/toto/rpmbuild/BUILD
+ cd /home/toto/rpmbuild/BUILD
+ rm -rf keepassx-2.0
+ /usr/bin/gzip -dc /home/toto/rpmbuild/SOURCES/keepassx-2.0-alpha6.tar.gz
+ /usr/bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd keepassx-2.0
/var/tmp/rpm-tmp.iiTqT8: line 37: cd: keepassx-2.0: No such file or directory
erreur : Mauvais statut de sortie pour /var/tmp/rpm-tmp.iiTqT8 (%prep)

Erreur de construction de RPM :
    Mauvais statut de sortie pour /var/tmp/rpm-tmp.iiTqT8 (%prep)
Tu as édité le fichier spec et ensuite tu as fait quoi?
J'ai éditer le fichier spec en mettant %setup -q -n keepassx-2.0 et je viens de réessayer en mettant %setup -q -n keepassx-2.0-alpha6 puis en tapant la commande rpmbuild -ba keepass.spec et maintenant sa fonctionne merci. Il me reste maintenant à régler le probléme du raccourci ainsi que la partie %files qui donne un résultat plutôt étrange. Je souhaiterais en effet que l'applis s'installe dans /opt afin de toucher au système le moins possible et de pouvoir revenir en arrière.
Pour la partie %files, comme tout est sous /opt/keepassx2/, tu peux la simplifier en

%files
%doc CHANGELOG COPYING
/opt/keepassx2/

En gros si tu liste le dossier (avec un / à la fin), tu as pas besoin de lister les fichiers contenu, ça simplifie pas mal 😉
En effet je vais voir sa merci pour l'info. Dans les tutos présent sur le site j'ai vu que l'on pouvait tester la "qualité" du paquet avec rpmlint. Si je lance la commande j'ai des messages d'erreur de ce genre la :
keepassx.x86_64: E: explicit-lib-dependency libgcrypt
keepassx.x86_64: E: explicit-lib-dependency zlib
keepassx.x86_64: W: spelling-error Summary(en_US) Logiciel -> Geologic, Ecologic, Logic
keepassx.x86_64: W: spelling-error Summary(en_US) de -> DE, ed, d
keepassx.x86_64: W: spelling-error Summary(en_US) gestion -> gestation, ingestion, digestion
keepassx.x86_64: W: spelling-error %description -l en_US Keepass -> Keep ass, Keep-ass, Keepsake
keepassx.x86_64: W: spelling-error %description -l en_US un -> UN, nu, in
keepassx.x86_64: W: spelling-error %description -l en_US logiciel -> geologic, ecologic, logic
keepassx.x86_64: W: spelling-error %description -l en_US de -> DE, ed, d
keepassx.x86_64: W: spelling-error %description -l en_US gestion -> gestation, ingestion, digestion
keepassx.x86_64: W: spelling-error %description -l en_US qui -> quin, quit, quid
keepassx.x86_64: W: spelling-error %description -l en_US permet -> permit, pelmet, cermet
keepassx.x86_64: W: spelling-error %description -l en_US geré -> germ, Gere
keepassx.x86_64: W: spelling-error %description -l en_US des -> eds, es, dies
keepassx.x86_64: W: spelling-error %description -l en_US stoquées -> toques
keepassx.x86_64: W: spelling-error %description -l en_US dans -> sand, sans, fans
keepassx.x86_64: W: spelling-error %description -l en_US une -> rune, tune, dune
keepassx.x86_64: W: spelling-error %description -l en_US données -> doyennes
keepassx.x86_64: W: spelling-error %description -l en_US chiffré -> chiffon
keepassx.x86_64: W: spelling-error %description -l en_US à -> e, s, i
keepassx.x86_64: W: spelling-error %description -l en_US l'aide -> Adelaide
keepassx.x86_64: W: spelling-error %description -l en_US d'un -> dun, Dunn
keepassx.x86_64: W: spelling-error %description -l en_US chiffrage -> chiffonier
keepassx.x86_64: W: incoherent-version-in-changelog (2014-04-06) ['2.0-alpha6.fc20', '2.0-alpha6']
keepassx.x86_64: W: invalid-license BSD GPL-2 GPL-3 LGPL-2.1 LGPL-3
..........

keepassx.x86_64: E: dir-or-file-in-opt /opt/keepassx2/share/keepassx/icons/application/16x16/actions/entry-new.png
keepassx.x86_64: E: dir-or-file-in-opt /opt/keepassx2/share/keepassx/icons/application/16x16/actions/document-save.png
keepassx.x86_64: E: dir-or-file-in-opt /opt/keepassx2/share/keepassx/icons/application/22x22/actions/document-save.png
keepassx.x86_64: E: dir-or-file-in-opt /opt/keepassx2/share/keepassx/icons/application/16x16/actions/entry-delete.png
1 packages and 0 specfiles checked; 142 errors, 23 warnings.
J'en ai mis un extrait car il liste tous les fichiers se trouvant dans /opt. Est ce que c'est problématique ou alors est ce que sa va passer à l'installation ? Je vais l'installer sur une VM et voir ce que ça donne. Grace à toi, Je vais aussi pouvoir avance sur mes autres paquet à partir des binaires de Firefox et Thunderbird.
En fait, c'est plus qu'il n'y a pas trop d'intérêt a installé un rpm dans /opt puisque tu peux le retirer facilement...

Sinon, c'est normal que rpmlint râle puisque normalement RPM n'installe rien dans opt, mais ça ne veux pas dire que ça ne marcheras pas (ou que ça marchera d'ailleurs 😉)
Dans ce cas précis c'est pas faut, mais au boulot je bosse sur des machine en centos 5.5 et en mandriva 2010 et comme les dépôts ne sont soit plus maintenus soit inexistants faire des installations dans /opt sa peux aider a revenir en arrière. je pense par exemple à Firefox ou Thunderbird voir meme d'autre logiciel que l'on install dans ce répertoire lors du make install ou de la décompression du tar.gz. A partir de la je testerais mon rpm sur une VM et je modifierais la section files en conséquence en cas de soucis. Merci pour ton aide.
Bah, yum downgrade?
Tant que la version que tu utilises à l'heure actuelle est dans les dépôts et que tu build une version plus récente, ton package manager préféré est là (et c'est bien à ça qu'il sert, entre autre).