QA Uploads Primer This is a quick guide for preparing QA uploads. A QA upload is a one-off maintenance act of an orphaned package (as opposed to an upload that declares one's adoption of the package). QA uploads are a good way to build up one's packaging skills without making a long-term commitment. They're also very well received by Debian developers, because there's a large number of orphaned packages. Please consider if just removing the package would not be a better idea. assumptions * you are familiar with shell scripting * you have access to an up-to-date debian unstable installation * you have a gpg private/public key pair * you know how to look up man pages, docs, and find and install packages, and generally get things done despite underspecified instructions ;) preparation * read or skim through the table of contents of the Debian new maintainer's guide (so that you know where to lookup things you might need) * install (and become aware of the purpose of) the packages listed in section 1.1 of the above guide (Overview of Debian Maintainer Tools) * read section 6 of the debian developer's reference (Best Packaging Practices); this is NOT optional * you must also become familiar with the debian policy (and read below about lintian, which checks for policy violations) getting started with a package * find a reasonably healthy orphaned package (henceforth called $PACKAGE) + choose one that has at least a few tens of installations and no severe/critical/grave bugs in [29]http://bugs.debian.org/$PACKAGE) + an orphaned package typically has its Maintainer set to Debian QA Group <[30]packages@qa.debian.org> + conveniently, you can find all orphaned packages along with their popcon (popularity stats) at o [31]http://qa.debian.org/developer.php?login=packages@qa. debian.org (and those that haven't yet been set to Debian QA group at [32]http://qa.debian.org/orphaned.html) * consider the [33]criteria for which packages NOT to bother with * look up the package's open bugs and lintian warnings ([34]http://lintian.debian.org/full/packages%40qa.debian.org.html#$ PACKAGE) * assess whether you can make a valuable contribution (if not, look for another package) * get its source (apt-get source $PACKAGE) * cd ${PACKAGE}-x.y.z carrying out the actual update * in the simplest case, you'll just have to bump up the Standards-Version in the control file to the current debian-policy version + the current policy version is in /usr/share/doc/debian-policy/policy.txt.gz + to see the changes between consecutive versions of the policy, lookup o /usr/share/doc/debian-policy/upgrading-checklist.txt.gz) * you might have to do a change to fix a lintian warning (see lintian url above for descriptions of lintian tags) * it's okay to edit directly anything under debian/* to fix things * typically, it's NOT okay to edit any upstream file; for that, you'll have to use a patch management system (such as quilt [2]) * set the Maintainer field in debian/control to Debian QA Group <[35]packages@qa.debian.org>, if that's not the case already * once you're done, run dch -i (sets the first entry in debian/changelog to QA upload and opens up the file with $EDITOR where you describe what changes you've made (you DID read section 6.3 of the developer's reference, right?)) building the new upload files (.dsc and .diff.gz) * in ${PACKAGE}-x.y.z, run dpkg-buildpackage * while still testing the package build with dpkg-buildpackage -us -uc to avoid having to sign the package every time, but DO sign the final build * repeat the steps from the previoous section until the build works; to cleanup intermediate files run fakeroot make -f debian/rules clean test the new package for policy violations * when you build successfully, you should have a .dsc and a .diff.gz at the parent directory of ${PACKAGE}-x.y.z, and one or more .deb files * check the .deb files with lintian -Ivi *changes; do any required changes to fix any reported issues (you may ignore messages up to warning level, but fix them if you can) * did I mention lintian? it's a great way to check for policy violations! read /usr/share/doc/lintian/lintian.html/index.html * check that your newly-built .deb installs, uninstalls, and re-installs without problems * use pbuilder to confirm that the package builds successfully (ie, pulls all required dependencies) in a minimal debian installation: + prepare a pbuilder installation with sudo pbduilder --create + in the ${PACKAGE}-x.y.z directory, run pdebuild (which basically runs dpkg-buildpackage in a minimal debian installation) * double-check that the produced .diff.gz doesn't modify anything outside the debian directory (lsdiff -z *diff.gz | grep -v /debian/ should yield no matches) get your package into the unstable archive * you need a DD to sponsor your package * please don't even bother if you haven't checked it with lintian, and fixed any reported errors, or else you'll just waste people's time * sign up to [36]http://mentors.debian.net and upload you package there (you'll have to find out how to use dput) * Request For Sponsoring in [37]debian-mentors@lists.debian.org; set the email's subject to RFS: $PACKAGE (QA upload) (do ask to be CC'ed if you're not subscribed in the list) * follow up on any comments people might give * well done, you've made a contribution to debian :) References * [0] [38]http://wiki.debian.org/HowToPackageForDebian * [1] [39]http://people.debian.org/~mpalmer/debian-mentors_FAQ.html * [2] [40]http://wiki.debian.org/UsingQuilt