3. Why use RPM?
Consistency simplifies maintenance
Administrative tasks (rpm)
Repository and update management (yum)
Lots existing tooling
Creating Live or JEOS images (livecd-tools)
Reproducible builds (mock, koji)
Security
Package signing (rpm -k)
File verification (rpm -V)
4. Ruby Gems
Archive of Ruby code
Ruby library metadata specification
A sane and useful standard
Ruby specific
Guarantees consistent build mechanism
Subset of RPM capabilities
Naming and versioning
Dependency resolution
Maps well to RPM
5. Wrapping Gems into RPM
Respecting both OS and Gem customs
FHS, naming and versioning standards, ...
Gem tooling still works
Use wisely
Can be aided with automated tools
gem2rpm
Available in rubygem-gem2rpm package
6. Wrapping Gems into RPM
Respecting both OS and Gem customs
FHS, naming and versioning standards, ...
Gem tooling still works
Use wisely
Can be aided with automated tools
gem2rpm
Available in rubygem-gem2rpm package
Very helpful!
7. RPM basics
Binary package
Installable with rpm -i
Query installed package with rpm -q
Query package file with rpm -q -f
Source package
Wraps source files, patches and build SPEC
Buildable with rpmbuild
rpm -i and rpm -q -p works the same as with
binaries
8. RPM packaging basics
SPEC file
Divided into sections
Starts with header with tags
Metadata: %description, %files, %changelog
Shell scriptlets: %prep, %build, %install, %check,
%pre, %post
Macro expansion occurs first
Defines: %{buildroot}, %{_prefix}, %{?dist}
Conditionals: %if .. %endif, %ifarch i386
9. Ruby Gem RPM anatomy
Guidelines in Wiki
Defines
%{gemname}, %{gemdir}, %{geminstdir}
Name: rubygem-%{gemname}
Usually no rebuild
Source package same as built in Rubygems
Empty %prep and %build sections
13. Fedora infrastructure
Koji – Build System
http://koji.fedoraproject.org/koji/
Packages are built here
Maintains package collections for specific releases
Bodhi – Update system
https://admin.fedoraproject.org/updates/
Tells Koji to include packages in Stable (Beta, RC,
Gold) repositories
14. Fedora infrastructure
Bugzilla – Ticket tracking system
https://bugzilla.redhat.com/
New packages are reviewed here
GIT requests are processed here
FAS2 – Fedora Account System
https://admin.fedoraproject.org/accounts/
Need a packager account
15. Packager setup
Set up a SSH key in FAS
Install required client software
fedpkg, koji client, bodhi client
yum -y install fedora-packager
Get a certificate for Koji client
fedora-packager-setup
Clone your package and start hacking
fedpkg co rubygem-<name>