<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>John&#039;s Tidbits &#187; debian</title>
	<atom:link href="http://inodes.org/tag/debian/feed/" rel="self" type="application/rss+xml" />
	<link>http://inodes.org</link>
	<description>Moo - Development, Trouble-shooting and Random thoughts...</description>
	<lastBuildDate>Thu, 07 Apr 2011 11:38:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Building a Private PPA on Ubuntu</title>
		<link>http://inodes.org/2009/09/14/building-a-private-ppa-on-ubuntu/</link>
		<comments>http://inodes.org/2009/09/14/building-a-private-ppa-on-ubuntu/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 06:59:12 +0000</pubDate>
		<dc:creator>johnf</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ppa]]></category>
		<category><![CDATA[rebuildd]]></category>
		<category><![CDATA[reprepro]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://inodes.org/blog/?p=189</guid>
		<description><![CDATA[One of the things I love about the Ubuntu project and launchpad is the Personal Package Archive. PPAs make it so simple and easy to backport packages. The only problem with PPAs is that they are public. I had a need to be able to host some private internal packages as well as squid with [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things I love about the Ubuntu project and launchpad is the Personal Package Archive. PPAs make it so simple and easy to backport packages. The only problem with PPAs is that they are public. I had a need to be able to host some private internal packages as well as squid with SSL support, which you can&#8217;t distribute in binary form due to licensing restrictions.</p>
<p>Basically I wanted to create the equivalent of an Ubuntu PPA service running on our own servers so we could place it behind our firewall. This post is basically the process I followed to integrate <a href="http://julien.danjou.info/rebuildd/">rebuilld</a> and <a href="http://mirrorer.alioth.debian.org/">reprepro</a> to replicate a PPA setup.</p>
<p>So first up install reprepro</p>
<pre>
aptitude install reprepro
</pre>
<p>next we need do create a reprepro repository</p>
<pre>
mkdir -p /srv/reprepro/{conf,incoming,incomingtmp}
</pre>
<p>Now we need to tell reprepro which distributions we care about. Create /srv/reprepro/conf/distributions with the following contents</p>
<pre>
Suite: hardy
Version: 8.04
Codename: hardy
Architectures: i386 amd64 source
Components: main
Description: Local Hardy
SignWith: repository@inodes.org
DebIndices: Packages Release . .gz .bz2
DscIndices: Sources Release .gz .bz2
Tracking: all includechanges keepsources
Log: logfile
  --changes /srv/reprepro/bin/build_sources

Suite: intrepid
Version: 8.10
Codename: intrepid
Architectures: i386 amd64 source
Components: main
Description: Local Intrepid
SignWith: repository@inodes.org
DebIndices: Packages Release . .gz .bz2
DscIndices: Sources Release .gz .bz2
Tracking: all includechanges keepsources
Log: logfile
  --changes /srv/reprepro/bin/build_sources

Suite: jaunty
Version: 9.04
Codename: jaunty
Architectures: i386 amd64 source
Components: main
Description: Local Jaunty
SignWith: repository@inodes.org
DebIndices: Packages Release . .gz .bz2
DscIndices: Sources Release .gz .bz2
Tracking: all includechanges keepsources
Log: logfile
  --changes /srv/reprepro/bin/build_sources
</pre>
<p>I also like to create reprepro options file to setup some defaults, edit /srv/reprepro/conf/options</p>
<pre>
verbose
verbose
verbose
verbose
verbose
</pre>
<p>Next we need to setup an incoming queue so that we can use dput to get the source packages into reprepro,<br />
vi /srv/reprepro/conf/incoming</p>
<pre>
Name: incoming
IncomingDir: incoming
Allow: hardy intrepid jaunty
Cleanup: on_deny on_error
Tempdir: incomingtmp
</pre>
<p>The repository is now ready to go. So now we can setup apache. Edit /etc/apache/sites-enabled/pppa</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">&lt;<span style="color: #000000; font-weight:bold;">virtualhost</span> *:<span style="color: #ff0000;">80</span>&gt;
    <span style="color: #00007f;">ServerName</span> packages.inodes.org
    <span style="color: #00007f;">DocumentRoot</span> /srv/reprepro
&lt;/<span style="color: #000000; font-weight:bold;">virtualhost</span>&gt;</pre></div></div>

<p>and we should also configure our sources.list to use these repositories, edit /etc/apt/sources.list</p>
<pre>
# Sources for rebuildd
deb-src http://packages.inodes.org hardy main
deb-src http://packages.inodes.org intrepid main
deb-src http://packages.inodes.org jaunty main
</pre>
<p>Next we want to setup our dput.cf to make the magic happen to get the source packages into the archive, edit ~/.dput.cf</p>
<pre>
[DEFAULT]
default_host_main = notspecified

[local]
fqdn = localhost
method = local
incoming = /srv/reprepro/incoming
allow_unsigned_uploads = 0
run_dinstall = 0
post_upload_command = reprepro -V -b /srv/reprepro processincoming incoming
</pre>
<p>So now we can do the following</p>
<pre>
apt-get source squid3
cd squid3*
dch -i # increment version number
dpkg-buildpackage -sa -S
cd ..
dput local *changes
aptitude update
apt-get source squid3
</pre>
<p>So when you run dput, first it copies the source package files to /srv/reprepro/incoming and then it gets reprepro to process it&#8217;s incoming queue. This means that the source package is now sitting in the repository.<br />
So the second apt-get source should have downloaded the source package from our local repository which is exactly what rebuildd will do before it tries to build it.</p>
<p>Next step is to setup rebuildd so that it builds the binary packages and installs them into the repository.</p>
<pre>
aptitude install rebuildd
</pre>
<p>Setup so it runs out of init.d and the releases we care about, edit /etc/default/rebuildd</p>
<pre>
START_REBUILDD=1
START_REBUILDD_HTTPD=1
DISTS="hardy intrepid jaunty"
</pre>
<p>Now when a source package is uploaded into the repository we want to kick off rebuildd to build the package. We can do this through the reprepro log hooks. You&#8217;ll notice in the conf/distributions above the following lines.</p>
<pre>
Log: logfile
  --changes /srv/reprepro/bin/build_sources
</pre>
<p>This script will be run any time a .changes file is added to the repository. Create /srv/reprepro/bin/build_sources</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">action</span>=<span style="color: #007800;">$1</span>
<span style="color: #007800;">release</span>=<span style="color: #007800;">$2</span>
<span style="color: #007800;">package</span>=<span style="color: #007800;">$3</span>
<span style="color: #007800;">version</span>=<span style="color: #007800;">$4</span>
<span style="color: #007800;">changes_file</span>=<span style="color: #007800;">$5</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Only care about packages being added</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$action</span>&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;accepted&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Only care about source packages</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$changes_file</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-q</span> _source.changes
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$?</span> = <span style="color: #000000;">1</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Kick off the job</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$package</span> <span style="color: #007800;">$version</span> 1 <span style="color: #007800;">$release</span>&quot;</span>  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> rebuildd-job add</pre></div></div>

<p>This script basically checks the right type of package is being added. Then it calls <strong>rebuildd-job</strong> to ask for that specific package and version to be built for that Ubuntu release.</p>
<p>Now the first thing that rebuildd does is download the source for the package. However we need to update the sources first since our server doesn&#8217;t know there are new files in the repository yet. So edit /etc/rebuildd/rebuilddrv an change</p>
<pre>
apt-get -q --download-only -t ${d} source ${p}=${v}
</pre>
<p>to</p>
<pre>
source_cmd = /srv/reprepro/bin/get_sources ${d} ${p} ${v}
</pre>
<p>and create /srv/reprepro/bin/get_sources with</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">d</span>=<span style="color: #007800;">$1</span>
<span style="color: #007800;">p</span>=<span style="color: #007800;">$2</span>
<span style="color: #007800;">v</span>=<span style="color: #007800;">$3</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> update <span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #660033;">-q</span> <span style="color: #660033;">--download-only</span> <span style="color: #660033;">-t</span> <span style="color: #800000;">${d}</span> <span style="color: #7a0874; font-weight: bold;">source</span> <span style="color: #800000;">${p}</span>=<span style="color: #800000;">${v}</span></pre></div></div>

<p>By this stage we have rebuildd building packages but we need to make sure they get re-injected back into the repository. We can do this with a post script. Edit /etc/rebuildd/rebuilddrc</p>
<pre>
post_build_cmd = /srv/reprepro/bin/upload_binaries ${d} ${p} ${v} ${a}
</pre>
<p>and create /srv/reprepro/bin/upload_binaries</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">d</span>=<span style="color: #007800;">$1</span>
<span style="color: #007800;">p</span>=<span style="color: #007800;">$2</span>
<span style="color: #007800;">v</span>=<span style="color: #007800;">$3</span>
<span style="color: #007800;">a</span>=<span style="color: #007800;">$4</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">su</span> <span style="color: #660033;">-l</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;">&quot;reprepro -V -b /srv/reprepro include <span style="color: #007800;">${d}</span> /var/cache/pbuilder/result/<span style="color: #007800;">${p}</span>_<span style="color: #007800;">${v}</span>_<span style="color: #007800;">${a}</span>.changes&quot;</span> johnf</pre></div></div>

<p>Now the su is in there because rebuildd needs to be able to access the GPG passphrase to sign the repository with. So rather than have a passphrase-less key we make sure that gpg-agent is running by adding the following to your .profile.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>.gpg-agent-info <span style="color: #000000; font-weight: bold;">&amp;&amp;</span>    <span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #660033;">-0</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cut</span> -d: <span style="color: #660033;">-f</span> <span style="color: #000000;">2</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>.gpg-agent-info<span style="color: #000000; font-weight: bold;">`</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #007800;">GPG_AGENT_INFO</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>.gpg-agent-info<span style="color: #000000; font-weight: bold;">`</span>
	<span style="color: #7a0874; font-weight: bold;">export</span> GPG_AGENT_INFO
<span style="color: #000000; font-weight: bold;">else</span>
	<span style="color: #7a0874; font-weight: bold;">eval</span> <span style="color: #000000; font-weight: bold;">`</span>gpg-agent --daemon<span style="color: #000000; font-weight: bold;">`</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$GPG_AGENT_INFO</span> <span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>.gpg-agent-info
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #007800;">GPG_TTY</span>=<span style="color: #000000; font-weight: bold;">`</span>tty<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">export</span> GPG_TTY</pre></div></div>

<p>So that&#8217;s it you now have your own personal PPA. Just in case you had fallen asleep. Here is a little script I wrote so you can auto build the source packages for each release you care about in one go.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-e</span>
&nbsp;
<span style="color: #007800;">RELEASES</span>=<span style="color: #ff0000;">&quot;hardy intrepid jaunty&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-f</span> debian<span style="color: #000000; font-weight: bold;">/</span>changelog <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;This isn't a debian repo&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Check for changes</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">`</span>bzr st <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">wc</span> -l<span style="color: #000000; font-weight: bold;">`</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;You have uncommitted changes!&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-d</span> ..<span style="color: #000000; font-weight: bold;">/</span>tmpbuild <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;The tmpbuild dir exists&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
bzr <span style="color: #7a0874; font-weight: bold;">export</span> ..<span style="color: #000000; font-weight: bold;">/</span>tmpbuild
<span style="color: #c20cb9; font-weight: bold;">cp</span> debian<span style="color: #000000; font-weight: bold;">/</span>changelog ..<span style="color: #000000; font-weight: bold;">/</span>tmpbuild.changelog
<span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>tmpbuild
&nbsp;
<span style="color: #007800;">PACKAGE</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-1</span> debian<span style="color: #000000; font-weight: bold;">/</span>changelog <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">VERSION</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-1</span> debian<span style="color: #000000; font-weight: bold;">/</span>changelog <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-r</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/^\(//;s/\)$//'</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> release <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$RELEASES</span>
<span style="color: #000000; font-weight: bold;">do</span>
&nbsp;
	<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-r</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;1s/\) [^;]+; /~<span style="color: #007800;">${release}</span>) <span style="color: #007800;">${release}</span>; /&quot;</span> ..<span style="color: #000000; font-weight: bold;">/</span>tmpbuild.changelog <span style="color: #000000; font-weight: bold;">&gt;</span> debian<span style="color: #000000; font-weight: bold;">/</span>changelog 
	<span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-1</span> debian<span style="color: #000000; font-weight: bold;">/</span>changelog
	dpkg-buildpackage <span style="color: #660033;">-S</span> <span style="color: #660033;">-sa</span>
	dput <span style="color: #7a0874; font-weight: bold;">local</span> ..<span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${PACKAGE}</span>_<span style="color: #800000;">${VERSION}</span>~<span style="color: #800000;">${release}</span>_source.changes
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> ..
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> tmpbuild</pre></div></div>

<p>So the above documentation is a bit of a brain dump on what I&#8217;ve been working on for the past 2 days and I&#8217;m sure I&#8217;ve left some bits out. So please give me any feedback you have in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://inodes.org/2009/09/14/building-a-private-ppa-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Getting your key into debian-maintainers using jetring</title>
		<link>http://inodes.org/2008/07/05/getting-your-key-into-debian-maintainers-using-jetring/</link>
		<comments>http://inodes.org/2008/07/05/getting-your-key-into-debian-maintainers-using-jetring/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 05:05:41 +0000</pubDate>
		<dc:creator>johnf</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[jetring]]></category>
		<category><![CDATA[maintainer]]></category>

		<guid isPermaLink="false">http://inodes.org/blog/?p=76</guid>
		<description><![CDATA[I&#8217;m currently going through the process of becoming a Debian Maintainer so that I can upload Annodex packages without bugging one of the DDs I know. Thanks to horms and jaq for their help thus far. As part of this process you need to file a bug against the debian-maintainers package to get your key [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently going through the <a href="http://wiki.debian.org/Maintainers">process</a> of becoming a Debian Maintainer so that I can upload <a href="http://annodex.net">Annodex</a> packages without bugging one of the DDs I know. Thanks to <a href="http://www.vergenet.net/~horms">horms</a> and <a href="http://spacepants.org/blog">jaq</a> for their help thus far.</p>
<p>As part of this process you need to file a bug against the <a href="http://packages.debian.org/sid/debian-maintainers">debian-maintainers</a> package to get your key added. You need to do this using a piece of software called jetring. jetring allows you to create changesets for a gpg keyring, a binary format, to make it easy for the maintainers to add and remove keys and know exactly whats being added and removed. I couldn&#8217;t find very much information on how you actually do this and hence the reason for this post.</p>
<p>To start with you need to grab the latest copy of the debian-maintainers keyring and extract the actual keyring from it. You can find the link to the latest version at <a href="http://packages.debian.org/sid/debian-maintainers">debian-maintainers</a>, just click on <strong>all</strong> to download it.</p>
<p>Here is the process I followed with comments along the way</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">&nbsp;
<span style="color: #666666; font-style: italic;"># Download the latest debian-maintainers keyring</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>http.us.debian.org<span style="color: #000000; font-weight: bold;">/</span>debian<span style="color: #000000; font-weight: bold;">/</span>pool<span style="color: #000000; font-weight: bold;">/</span>main<span style="color: #000000; font-weight: bold;">/</span>d<span style="color: #000000; font-weight: bold;">/</span>\
debian-maintainers<span style="color: #000000; font-weight: bold;">/</span>debian-maintainers_1.38_all.deb
dpkg-deb <span style="color: #660033;">-x</span> <span style="color: #000000; font-weight: bold;">*</span>.deb keyring
<span style="color: #c20cb9; font-weight: bold;">mv</span> keyring<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>keyrings<span style="color: #000000; font-weight: bold;">/</span>debian-maintainers.gpg .
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> keyring <span style="color: #000000; font-weight: bold;">*</span>.deb
&nbsp;
<span style="color: #666666; font-style: italic;"># Create a copy of it and add your key to it</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> debian-maintainers.gpg debian-maintainers.gpg.orig
gpg <span style="color: #660033;">--export</span> johnf<span style="color: #000000; font-weight: bold;">@</span>inodes.org <span style="color: #000000; font-weight: bold;">|</span> \
    gpg <span style="color: #660033;">--import</span> <span style="color: #660033;">--no-default-keyring</span> <span style="color: #660033;">--keyring</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">pwd</span><span style="color: #000000; font-weight: bold;">`/</span>debian-maintainers.gpg
&nbsp;
<span style="color: #666666; font-style: italic;"># Create the changset with jetring</span>
jetring-gen debian-maintainers.gpg.orig debian-maintainers.gpg \
    <span style="color: #ff0000;">&quot;Add John Ferlito &amp;lt;johnf @inodes.org&amp;gt; as a Debian Maintainer&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Check the changeset</span>
jetring-review <span style="color: #660033;">-d</span> debian-maintainers.gpg.orig add-<span style="color: #000000; font-weight: bold;">*</span></pre></div></div>

<p>Once you have completed the above you should have a file with something like the following contents</p>

<div class="wp_syntax"><div class="code"><pre class="email" style="font-family:monospace;"><span style="color: #000040;">Comment<span style="color: #66cc66;">:</span> Add John Ferlito &amp;lt<span style="color: #66cc66;">;</span>johnf @inodes.org&amp;gt<span style="color: #66cc66;">;</span> as a Debian Maintainer</span>
<span style="color: #000040;"><span style="color: #800000; font-weight: bold;">Date</span><span style="color: #66cc66;">:</span> <span style="color: #008000;">Sat, 05 Jul 2008 14:26:31 +1000</span></span>
<span style="color: #000040;">Action<span style="color: #66cc66;">:</span> import</span>
<span style="color: #000040;">Data<span style="color: #66cc66;">:</span> </span>
<span style="color: #000040;">  -----BEGIN PGP PUBLIC KEY BLOCK-----</span>
<span style="color: #000040;">  Version<span style="color: #66cc66;">:</span> GnuPG v1.4.6 (GNU/Linux)</span>
&nbsp;
<span style="color: #000040;">  mQGiBEd6MmQRBADF+BLVChN/AqKVXkrJFU2LtJoiCdYJ</span>
<span style="color: #000040;">  &amp;lt<span style="color: #66cc66;">;</span>snip&amp;gt<span style="color: #66cc66;">;</span></span>
<span style="color: #000040;">  =SSNk</span>
<span style="color: #000040;">  -----END PGP PUBLIC KEY BLOCK-----</span></pre></div></div>

<p>You should now add something along the lines of the below to the top of the file.</p>

<div class="wp_syntax"><div class="code"><pre class="email" style="font-family:monospace;"><span style="color: #000040;">Recommended-By<span style="color: #66cc66;">:</span></span>
<span style="color: #000040;">  Simon Horman &amp;lt<span style="color: #66cc66;">;</span>horms @verge,net.au&amp;gt<span style="color: #66cc66;">;</span>,</span>
<span style="color: #000040;">  Jamie Wilkinson &amp;lt<span style="color: #66cc66;">;</span>jaq @spacepants.org&amp;gt<span style="color: #66cc66;">;</span></span>
<span style="color: #000040;">Agreement<span style="color: #66cc66;">:</span> http<span style="color: #66cc66;">:</span>//lists.debian.org/debian-newmaint/2008/07/msg00010.html</span>
<span style="color: #000040;">Advocates<span style="color: #66cc66;">:</span></span>
<span style="color: #000040;">  http<span style="color: #66cc66;">:</span>//lists.debian.org/debian-newmaint/2008/07/msg00011.html,</span>
<span style="color: #000040;">  http<span style="color: #66cc66;">:</span>//lists.debian.org/debian-newmaint/2008/07/msg00012.html</span></pre></div></div>

<p>The agreement line should be a URL to your signed email applying to become a DM and the advocates should be the URLs for the signed emails from your advocates.</p>
<p>Once you&#8217;ve done that, submit a bug with the file attached and hopefully sometime later you will have become a DM.</p>
]]></content:encoded>
			<wfw:commentRss>http://inodes.org/2008/07/05/getting-your-key-into-debian-maintainers-using-jetring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

