Debian-NYC invites you to the second NYC-area Debian workshop. This workshops follows up to our previous one, however previous attendance is not required and there will be a section which reviews previous topics.
These workshops are designed to introduce Debian, Debian tools and techniques, and the Debian community as well as provide skills to attendees and helping Debian. This workshop is targeted towards technically skilled people, who would like knowledge of basics of Debian packaging and how to contribute back to Debian.
Topics covered: There will be several groups at this workshop, depending on interest.
a) One section will tear apart a package, explaining the component parts of a Debian package. The expected target is users, administrators, and possible future contributors to Debian. This will review key details from the previous workshop.
b) A second section will be a free-form work group, with Debian Developers guiding work on fixing Debian bugs (but not limited to working only on Debian bugs).
This is a free-form workshop, with guidance from DD leaders, attendees are not limited to working on these things. There will probably be a backporting tutorial in one of these groups.
Please bring: A Debian (or other Debian-based distribution such as Ubuntu) computer with your preferred development tools on it. Extra computers may be available for loan, please contact us. If you have GPG keys, bring fingerprints if you would like to trade signatures.
Date/Time/Location: November 12, 2009. 18:30 (tutorial section starts 19:00). Location: 330 Seventh Avenue, corner of West 29th St, 14th Floor.
Registration: Spots are limited, RSVP to (rkd at zgib.net).
Contact: IRC via #debian-nyc on irc.debian.org ; email@example.com ; Richard Darst (rkd at zgib.net)
Debian-NYC would like to thank Meta Health Technologies for providing the space for this workshop.
Group 1 (review of workshop #1):
- Binary packages
- Fields, control information
- Dependency types
- ex: priority, section, architecture (any, all, specific architectures etc.)
- Source packages
- Getting source: dget, apt-get source
- debian/ directory
- rules, control, compat, copyright, README.Debian
- Maintainer scripts
- Build process
- Build dependencies (apt-get build-dep, pbuilder-satisfydepends), Build-Depends and Build-Depends-Indep
- devscripts (notably, debchange/dch and why you would want to bump version before building and working on a package)
- dpkg-buildpackage, debuild
For official Debian packages: Sanity checks -> install, purge, upgrade etc., lintian
- Who controls what is in packages
- Policy, ftpmasters, ...
- Other information from Debian Developer's Reference and Debian Policy
See also: Debian Developers Reference and Debian Policy Manual
Group 2 (new stuff):
- Does stuff on backporting or bug fixing
Actual topics covered
We had no Group 1, as the majority of people had been to workshop #1. Instead, we did a backporting tutorial, which lasted about 30 minutes, and then had free-form work for several hours.
- Name, and one sentence about the most recent bug you have reported or found
- Package has new features on a newer suite (e.g. unstable) and you want to use it on an older suite (stable)
- Why? Newer package features on older, stable base OS
- Can you install the unstable package on stable directly? Not necessarily, for example dynamic linked libraries may have wrong versions in stable.
- 30-minute demonstration on backporting
Example package: less
The "&" command (only display lines matching a pattern) isn't available in stable, but is in unstable
First, check packages.debian.org to see if a packagage is available in lenny-backports (this is backports.org). If one is already avilable, great You can also use rmadison -u bpo less to query backport.org from the command line.
- Edit /etc/apt/sources.list
- Change the "deb-src" to testing instead of unstable. (testing is better since it's a bit less buggy, and now
- Leave the "deb" lines with "stable". This means we get the binary packages from stable, and build the unstable sources against them.
- Don't forget to change this back when you are done.
- Make some working directory, cd there
- Make sure you have these packages installed: build-essential fakeroot devscripts. You may need to do more playing around to get packages required to unpack the source
apt-get source less # This fetches the source code from "unstable", and unpacks it into a subdirectory less-436/
cd less-436 # Go to the new source directory
- Update the changelog entry
dch --bpo # Adds an entry relevant to backports.org
- Update the changelog. If you have to make changes to the source to get it to compile, you should come back to the changelog and document them.
- Note the new version number with "~bpo50+1" listed in it. "~" is a sorting character (sort before anything without ~), "bpo" stands for backports.org, "50"=debian version (5.0), +1 backport version.
Install build dependencies: apt-get build-dep less
- This gets build dependencies from stable. Hopefully, all the dependencies will be in stable, and your life will be easy
- If the build dependencies are not in stable (for example, a newer library version) isn't in stable. Then you need to do more work
- Maybe the dependency isn't needed, or has a version dependency that's newer than needed.
You could try removing the version dependency (in debian/control), maybe the dependency isn't actually needed there.
- This is a mostly trial-and-error portion.
- Try building the packages
debuild -us -uc -v418-1 # Try to build it. Fails due to unmet build dependencies.
- Note that it runs lintian at the end. It has some warnings, but looking over them they aren't too important ().
-v418-1 # Include all changelog entries from version 418-1 up until now. This is a special requirement to get into backports.org, if you want it to be accepted there.
- Make changes and update the changelog, until it properly builds
dch -a "this is a new line" # adds a new bulleted line to the changelog
- Try installing the package (it's in "..")
dpkg -i xxxxxxx.deb
- Test it
- How to get it uploaded to backports.org
- Need to be a DD (maybe Debian-Maintainers can)
- How to get a patch, to send to one of the DDs here so they can upload it.
- Compare the diffs
- install interdiff
interdiff -z <oldversion>.diff.gz <newversion>.diff.gz
or, debdiff the .dsc
Send the interdiff (or debdiff) to a DD, making sure it has good changelog entries, explaining why you made each change to build it.
- Possible problems
- build dependencies not there
- failed build
- built, but doesn't work right
- How to resolve them isn't necessarily straightforward, you need to look around and see.
If you are getting this message, then you have RSVPed to the second Debian Workshop. This contains the directions, reminders on what to bring, etc. Thanks for planning to attend.
The wiki page for this workshop is:
The workshop will be held in the offices of Meta Health Technology, at 330 7th Avenue [corner of 29th street, above staples], on the 14th floor. If you have RSVPed, the security desk in the lobby will have a list with your name on it. If not, just sign in, and tell them you're attending an event at Meta on the 14th floor. After you get to the fourteenth floor, there will be a sign posted with a phone number to call; someone will then come out and let you in.
You should aim to arrive at 18:30 or so (Thursday, November 12th). This should give us time to set up before a start of organized activities at 19:00, so please arrive at the early range if possible. If you cannot make it, please let me know so that your spot may be freed for other attendees.
Most people attending this workshop have attended the previous workshop, so we will be a significant hands-on component to this workshop. The exact topics haven't been decided yet (talk to us in #debian-nyc and let us know what you'd like), but will probably involve bugfixing and backporting. If we have new attendees, there will be a review of the past workshop, too.
If you didn't attend that one you don't need any preparation, besides knowledge of a Debian system and your preferred programming tools. If you would like, you could browse through the Debian Developer's Reference or the Debian New Maintainer's Guide to see what is in there. You don't need to know everything in here, the workshops are a gentle introduction to them. 
You should bring a Debian-based computer you can do development on (unless you have talked with us to make other arrangements). We will have power plugs, wifi, and some ethernet cables. If you have PGP keys you'd like signed, bring the fingerprints and ID.
If you have any questions, please ask us via IRC in #debian-nyc on irc.oftc.net (=irc.debian.org). You should also use this channel after the workshop to keep in touch, get questions answered, learn more, and help contribute back to Debian further.