1,885
edits
Changes
→Week 2 (January 18) - Overview of the Build and Release Processs
** Any package that uses a configure script -- SourceForge might be a good place to look for such packages.
* Blog about the experience.
= Week 2 (September 15) - RPM Packages I =
== Wednesday ==
* Discussion of issues related to building
** Finding dependencies.
** <code>-j''X''</code> flag to enable multiple jobs
=== RPM Packages ===
* Purpose
* What's in an RPM package file
** Metadata
*** What the package provides
*** Dependencies
*** Packager, date, license, summary, description, ...
** Digital signature
** Software
** Data
*** Fonts
*** Icons
*** Sample data
** Documentation
** Configuration files
** Setup scripts
*** Pre-install
*** Post-install
*** Pre-uninstall
*** Post-uninstall
*** Triggers
=== The RPM Database ===
* Purpose of the database
* Querying the RPM database
** rpm -q
== Friday ==
=== Creating Packages ===
* Packaging scenarios
* Setting up a Packaging Environment
** Needed packages
*** rpm-build
*** rpmdevtools
*** rpmlint
** Setting up the RPM tree
*** run <code>rpmdev-setuptree</code>
* Taking a look at existing source RPMS (useful as examples)
** Installing
*** <code>yumdownloader --source <i>nameofpackage</i></code>
*** <code>rpm -i <i>nameofpackage</i>.src.rpm</code>
*** Source will be in ~/rpmbuild/SOURCES and specfile will be in ~/rpmbuild/SPECS
** Examine the specfile
** Rebuild on the local machine
*** <code>rpmbuild --rebuild <i>nameofpackage</i>.src.rpm</code>
** Building from the spec file
*** <code>cd ~/rpmbuild/SPECS; rpmbuild -ba <i>nameofpackage</i>.spec</code>
=== Writing a specfile ===
* Run <code>rpmdev-newspec ''packagename''</code> in ~/rpmbuild/SPECS
* Edit the skeleton specfile.
* Test it: <code>rpmbuild -ba ''packagename''.spec</code>
** If successful, output will be binary RPM(s) in ~/rpmbuild/RPMS and source RPM in ~/rpmbuild/SRPMS
*** Can install binary RPM with: <code>rpm -i ''rpmname''</code>
** If unsuccessful, read the error messages carefully.
* Check it with rpmlint: <code>rpmlint ''packagename''*</code>
** Remember to check the spec file as well as the binary and source RPMs.
** Correct any errors found.
=== Layout of a specfile ===
* Basic Sections
# preamble - basic metadata
# %prep - commands to prepare the package for building
# %build - commands to build the package
# %install - commands to install the built files
# %check - commands to check/test the built files (optional, often not included)
# %clean - commands to clean up the disk space
# %files - list of files to be included in the pacakge
# %changelog - record of the package's change-history
* Scriptlets
** %pre -- run before installation
** %post -- run after installation
** %preun -- run before uninstallation
** %postun -- run after uninstallation
*** Note that during upgrade, the installation of the new package is considered to happen before the removal of the old package.
* Macros
** %{_tmppath}
** %{buildroot}
** %{_bindir}
** %{_datadir}
** %{_mandir}
** %{_smp_flags}
** %setup
** %configure
** %makeinstall
=== Creating a Simple Package ===
* NLED
* Writing the specfile
* Testing the specfile
* Using rpmlint
=== Resources ===
* [[:fedora:PackageMaintainers|Fedora Package Maintainers page]]
** [[:fedora:PackageMaintainers/CreatingPackageHowTo|Packaging How-To]]
See also "Fedora Linux" chapter 5 (see Seneca Library website > eBooks > View All > Safari > Fedora Linux).
== ToDo ==
* Take the software you compiled last week and package it (not Nled!). Blog about the experience. Include a link to your source RPM (and optionally your binary RPM) from your blog. '''Please complete this by Monday, September 28.'''
== ToDo ==
* Finish tasks from week 1 if not already completed.
** Remember, marking in this course is done on the basis of blog posts which appear on the planet.
** You should have two blog posts on the planet by now: One with a link to your Seneca and Fedora user pages plus a snippet of IRC conversation, and one with a reflection on your experience compiling software from source code.
* Find out what <code>-j</code> value results in the fastest build time for the software you have chosen. Blog about your results.
* Listen to the [http://cdot.senecac.on.ca/audio/sbr600/ audio recording] of last semester's conference call with Jesse Keating, Fedora Release Engin
= Week 2 (January 18) - Overview of the Build and Release Processs =
= Week 3 (January 25) - Creating RPM Packages I =
= Week 4 (February 1) - Creating RPM Packages II=