1,885
edits
Changes
no edit summary
** Examples
* Building software from a source tarball using a makefile
=== 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*** yum-utils** 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 -- takes a source RPM (SRPM) as input, produces binary and source RPMs as output*** <code>rpmbuild --rebuild <i>nameofpackage</i>.src.rpm</code>** Building from the spec file -- takes a specfile and source code as input, produces binary and source RPMs as output*** <code>cd ~/rpmbuild/SPECS; rpmbuild -ba <i>nameofpackage</i>.spec</code> === Writing a specfile === Readings * 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''</Resourcescode>** 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 === Demo: Creating a Simple Package === * 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). == Readings/Resources ==
* Two simple [http://matrix.senecac.on.ca/~chris.tyler/osd600/makefile-examples.tgz makefile examples]