Difference between revisions of "Winter 2010 SBR600 Weekly Schedule"
Chris Tyler (talk | contribs) |
Chris Tyler (talk | contribs) (→Week 2 (January 18) - Overview of the Build and Release Processs) |
||
Line 51: | Line 51: | ||
** Any package that uses a configure script -- SourceForge might be a good place to look for such packages. | ** Any package that uses a configure script -- SourceForge might be a good place to look for such packages. | ||
* Blog about the experience. | * 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 2 (January 18) - Overview of the Build and Release Processs = | ||
+ | |||
= Week 3 (January 25) - Creating RPM Packages I = | = Week 3 (January 25) - Creating RPM Packages I = | ||
= Week 4 (February 1) - Creating RPM Packages II= | = Week 4 (February 1) - Creating RPM Packages II= |
Revision as of 12:57, 20 January 2010
Please note:
- The schedule here is tentative.
- Week-by-week details will be filled in as the course progresses.
Contents
- 1 Week 1 (January 11) - Introduction
- 2 Week 2 (September 15) - RPM Packages I
- 3 Week 2 (January 18) - Overview of the Build and Release Processs
- 4 Week 3 (January 25) - Creating RPM Packages I
- 5 Week 4 (February 1) - Creating RPM Packages II
- 6 Week 5 (February 8) - Repositories/Distributing
- 7 Week 6 (February 15) - Compositing
- 8 Week 7 (February 22) - Server Farms I
- 9 Study Week (March 1)
- 10 Week 8 (March 8) - Server Farms II
- 11 Week 9 (March 15) - Distributed Processing
- 12 Week 10 (March 22) - Virtualization
- 13 Week 11 (March 29) - Monitoring & Management
- 14 Week 12 (April 5) - Presentations
- 15 Week 13 (April 12) - Wrap-Up
- 16 Exam Week (April 19)
Week 1 (January 11) - Introduction
Tuesday
- Welcome
- Introductions
- Intro to Build & Release
- Brief overview of the process
- Versioning & repository systems
- Compilation
- Testing
- Packaging
- Compositing
- Release
- Distribution
- Mirroring
- These steps vary according to the particular project/product. For example, when distributing software physically, "Release" means performing a RTM, where the final "gold disk" is sent to the duplicating house to be mass-produced; but when distributing software electronically, "Release" means sending the software to the online distribution system. The sequence of steps also varies between projects/products.
- Brief overview of the process
- Course Layout
- Project-based course
- Working with Open Source
- Working with the Fedora Project
- Communication Tools
- Course Outline
- Visit the CDOT Area
Friday
- Make
- Makefile Basics
- Targets, Dependencies, and Commands
- Implied rules (e.g., .o files)
- Examples
- Building software from a source tarball using a makefile
Readings/Resources
- Two simple makefile examples
ToDo
Communication Lab: By Friday, January 15, Set up your accounts (wiki, IRC, FAS2).
- Create a blog post which will appear on the OpenSource@Seneca Planet, containing:
- A portion of an IRC conversation you've had with someone on a Fedora or Seneca IRC channel.
- A link to your User page on the Seneca wikis
- A link to your User page on the Fedora wiki
- Note: don't just dump this stuff in a blog post, add some introductory text as well!
- Add an entry to the Winter 2010 SBR600 Participants page
Lab 1: By Tuesday, January 19:
- Build 2 packages from Source
- The NLED editor from http://cdot.senecac.on.ca
- 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.
-
-jX
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
- Metadata
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
rpmdev-setuptree
- run
- Needed packages
- Taking a look at existing source RPMS (useful as examples)
- Installing
-
yumdownloader --source nameofpackage
-
rpm -i nameofpackage.src.rpm
- Source will be in ~/rpmbuild/SOURCES and specfile will be in ~/rpmbuild/SPECS
-
- Examine the specfile
- Rebuild on the local machine
-
rpmbuild --rebuild nameofpackage.src.rpm
-
- Building from the spec file
-
cd ~/rpmbuild/SPECS; rpmbuild -ba nameofpackage.spec
-
- Installing
Writing a specfile
- Run
rpmdev-newspec packagename
in ~/rpmbuild/SPECS - Edit the skeleton specfile.
- Test it:
rpmbuild -ba packagename.spec
- If successful, output will be binary RPM(s) in ~/rpmbuild/RPMS and source RPM in ~/rpmbuild/SRPMS
- Can install binary RPM with:
rpm -i rpmname
- Can install binary RPM with:
- If unsuccessful, read the error messages carefully.
- If successful, output will be binary RPM(s) in ~/rpmbuild/RPMS and source RPM in ~/rpmbuild/SRPMS
- Check it with rpmlint:
rpmlint packagename*
- 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
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
-j
value results in the fastest build time for the software you have chosen. Blog about your results.
- Listen to the audio recording of last semester's conference call with Jesse Keating, Fedora Release Engin