Fall 2008 SPR720 Weekly Schedule
Revision as of 14:20, 2 October 2008 by Chris Tyler (talk | contribs) (→Week 5 (Sept 29) - Creating SPEC files and RPMs)
The tentative weekly schedule shown here is subject to change.
Contents
- 1 Week 1 (Sept 1) - Intro to Open Source / Command-line Basics
- 2 Week 2 (Sept 8) - Bash Scripting Basics I
- 3 Week 3 (Sept 15) - Bash Scripting Basics II
- 4 Week 4 (Sept 22) - Makefiles
- 5 Week 5 (Sept 29) - Creating SPEC files and RPMs
- 6 Resources
- 7 Week 6 (Oct 6) - RPM Scripts
- 8 Week 7 (Oct 13) - Creating a Repository
- 9 FSOSS and Break Week (Oct 20)
- 10 Week 8 (Oct 27) - Using Mock
- 11 Week 9 (Nov 3) - Python Scripting Basics I
- 12 Week 10 (Nov 10) - Python Scripting Basics II
- 13 Week 11 (Nov 17) - Using Libvirt
- 14 Week 12 (Nov 24) - Project presentations
- 15 Week 13 (Dec 1) - Exam review
- 16 Exam Week (Dec 8)
Week 1 (Sept 1) - Intro to Open Source / Command-line Basics
- Course introduction
- Introduction to Open Source and Linux
- Introduction to/Review of the command line
- Why use the command line?
- Accessing the command line locally and remotely
- terminal programs
- ssh
- Command recall and editing
- Linux Commands
- Builtin vs. external
- Types of arguments
- Option
- Positional
- Option with value
- Filesystem hierarchy
- Accessing Documentation
- manpages
- info
- Documentation viewers
- TODO
- Set up your accounts as described on the LUX Communication page.
- Complete the SPR720 Command Lab and blog about the experience.
Week 2 (Sept 8) - Bash Scripting Basics I
Announcements/discussion/review:
- Blogging guidelines
-
Louis Suarez-Potts - Thursday Sept 11 2:15 pm - Paul Frields - IRC chat Sept 11 5-6 pm
- Review: shell, commands, arguments
The Fedora Project
- What is a distribution?
- Main functions of a distribution
- Packaging
- Integration
- Testing/QA
- Distributing (mirrors, media)
- The Fedora Distribution
- History
- Community structure
- Participating in the Fedora community
- FAS2, mailing lists, wiki
Bash Scripting Basics
- Filesystem hierarchy
- Absolute paths: start with / indicating the root directory
- Relative-to-home paths: start with ~ indicating a home directory
- Relative paths: start with anything else, relative to "current" directory
- Why script?
TODO
- Create a FAS2 account, subscribe to Fedora mailing lists.
- Narrow down your project search to 2-4 of the Potential Projects
- Make sure you know how to use Vi -- if not, research its use.
IRC Session: Paul Frields
Paul Frields is the Fedora Project Leader. He will be meeting with us in freenode:#seneca from 5-6 pm on Thursday (Sept 11) during the SPR720 lab time.
Week 3 (Sept 15) - Bash Scripting Basics II
- BASH Redirection
- Filter programs
- BASH Variables
- BASH Exit Status
- BASH Flow Control
TODO
- Narrow your project selection to one project by September 22.
- Complete the SPR720 BASH Scripting Lab and blog your reflections on the experience. Include a link to one of your scripts in the blog.
Week 4 (Sept 22) - Makefiles
BASH Scripting -- Conclusion
- Examine solutions to last week's lab
Makefiles
- Purpose
- How they work
- Simple Examples
- Autoconf/configure
- What it is
- How it works
- Real-world examples
- Simple makefile: NLED - Source tarball
- Autoconf/configure: Critical Mass
TODO
- Download at least one software package in source form (sourceforge.net or fedorahosted.org are good sources), unpack it (usually 'tar xvf'), and build it (check the notes included in the tarball; in most cases './configure', 'make', and 'make install'). Make notes on the steps involved, and blog about the process, including any additional software that you had to install to get it to build. Please complete this lab before next Tuesday's class.
- Complete this week's Project blogging assignment.
Week 5 (Sept 29) - Creating SPEC files and RPMs
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
- Metadata
The RPM Database
- Purpose of the database
- Querying the RPM database
- rpm -q
Creating Packages
- Packaging scenarios
- Setting up a Packaging Environment
- Needed packages
- rpm-build
- rpmdevtools
- rpmlint
- Setting up the RPM tree
- rpmdev-setuptree
- Needed packages
- Source RPMS
- Installing
- Examining the contents
- Rebuilding
-
rpmbuild --rebuild *.src.rpm
-
- Building from the spec file
Writing a specfile
-
rpmdev-newspec packagename
- 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
- %post
- %preun
- %postun
- 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]
TODO:
- Take the software you compiled last week and package it. Blog about the experience.
Week 6 (Oct 6) - RPM Scripts
Guest speaker: Andrew Overholt
Andrew Overholt works at Red Hat's Toronto office on Eclipse.