]> pere.pagekite.me Git - homepage.git/blob - blog/archive/2024/04/index.html
Generated.
[homepage.git] / blog / archive / 2024 / 04 / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: entries from April 2024</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="04.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <!-- XML FEED -->
13 <div class="title">
14 <h1>
15 <a href="http://www.hungry.com/~pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <h3>Entries from April 2024.</h3>
23
24 <div class="entry">
25 <div class="title">
26 <a href="http://www.hungry.com/~pere/blog/45_orphaned_Debian_packages_moved_to_git__391_to_go.html">45 orphaned Debian packages moved to git, 391 to go</a>
27 </div>
28 <div class="date">
29 25th April 2024
30 </div>
31 <div class="body">
32 <p>Nine days ago, I started migrating orphaned Debian packages with no
33 version control system listed in debian/control of the source to git.
34 At the time there were 438 such packages. Now there are 391,
35 according to the UDD. In reality it is slightly less, as there is a
36 delay between uploads and UDD updates. In the nine days since, I have
37 thus been able to work my way through ten percent of the packages. I
38 am starting to run out of steam, and hope someone else will also help
39 brushing some dust of these packages. Here is a recipe how to do it.
40
41 I start by picking a random package by querying the UDD for a list of
42 10 random packages from the set of remaining packages:
43
44 <blockquote><pre>
45 PGPASSWORD="udd-mirror" psql --port=5432 --host=udd-mirror.debian.net \
46 --username=udd-mirror udd -c "select source from sources \
47 where release = 'sid' and (vcs_url ilike '%anonscm.debian.org%' \
48 OR vcs_browser ilike '%anonscm.debian.org%' or vcs_url IS NULL \
49 OR vcs_browser IS NULL) AND maintainer ilike '%packages@qa.debian.org%' \
50 order by random() limit 10;"
51 </pre></blockquote>
52
53 <p>Next, I visit http://salsa.debian.org/debian and search for the
54 package name, to ensure no git repository already exist. If it does,
55 I clone it and try to get it to an uploadable state, and add the Vcs-*
56 entries in d/control to make the repository more widely known. These
57 packages are a minority, so I will not cover that use case here.</p>
58
59 <p>For packages without an existing git repository, I run the
60 following script <tt>debian-snap-to-salsa</tt> to prepare a git
61 repository with the existing packaging.</p>
62
63 <blockquote><pre>
64 #!/bin/sh
65 #
66 # See also https://bugs.debian.org/804722#31
67
68 set -e
69
70 # Move to this Standards-Version.
71 SV_LATEST=4.7.0
72
73 PKG="$1"
74
75 if [ -z "$PKG" ]; then
76 echo "usage: $0 <pkgname>"
77 exit 1
78 fi
79
80 if [ -e "${PKG}-salsa" ]; then
81 echo "error: ${PKG}-salsa already exist, aborting."
82 exit 1
83 fi
84
85 if [ -z "ALLOWFAILURE" ] ; then
86 ALLOWFAILURE=false
87 fi
88
89 # Fetch every snapshotted source package. Manually loop until all
90 # transfers succeed, as 'gbp import-dscs --debsnap' do not fail on
91 # download failures.
92 until debsnap --force -v $PKG || $ALLOWFAILURE ; do sleep 1; done
93 mkdir ${PKG}-salsa; cd ${PKG}-salsa
94 git init
95
96 # Specify branches to override any debian/gbp.conf file present in the
97 # source package.
98 gbp import-dscs --debian-branch=master --upstream-branch=upstream \
99 --pristine-tar ../source-$PKG/*.dsc
100
101 # Add Vcs pointing to Salsa Debian project (must be manually created
102 # and pushed to).
103 if ! grep -q ^Vcs- debian/control ; then
104 awk "BEGIN { s=1 } /^\$/ { if (s==1) { print \"Vcs-Browser: https://salsa.debian.org/debian/$PKG\"; print \"Vcs-Git: https://salsa.debian.org/debian/$PKG.git\" }; s=0 } { print }" < debian/control > debian/control.new && mv debian/control.new debian/control
105 git commit -m "Updated vcs in d/control to Salsa." debian/control
106 fi
107
108 # Tell gbp to enforce the use of pristine-tar.
109 inifile +inifile debian/gbp.conf +create +section DEFAULT +key pristine-tar +value True
110 git add debian/gbp.conf
111 git commit -m "Added d/gbp.conf to enforce the use of pristine-tar." debian/gbp.conf
112
113 # Update to latest Standards-Version.
114 SV="$(grep ^Standards-Version: debian/control|awk '{print $2}')"
115 if [ $SV_LATEST != $SV ]; then
116 sed -i "s/\(Standards-Version: \)\(.*\)/\1$SV_LATEST/" debian/control
117 git commit -m "Updated Standards-Version from $SV to $SV_LATEST." debian/control
118 fi
119
120 if grep -q pkg-config debian/control; then
121 sed -i s/pkg-config/pkgconf/ debian/control
122 git commit -m "Replaced obsolete pkg-config build dependency with pkgconf." debian/control
123 fi
124
125 if grep -q libncurses5-dev debian/control; then
126 sed -i s/libncurses5-dev/libncurses-dev/ debian/control
127 git commit -m "Replaced obsolete libncurses5-dev build dependency with libncurses-dev." debian/control
128 fi
129 </pre></blockquote>
130
131 Some times the debsnap script fail to download some of the versions.
132 In those cases I investigate, and if I decide the failing versions
133 will not be missed, I call it using ALLOWFAILURE=true to ignore the
134 problem and create the git repository anyway.</p>
135
136 <p>With the git repository in place, I do a test build (gbp
137 buildpackage) to ensure the build is actually working. If it does not
138 I pick a different package, or if the build failure is trivial to fix,
139 I fix it before continuing. At this stage I revisit
140 http://salsa.debian.org/debian and create the project under this group
141 for the package. I then follow the instructions to publish the local
142 git repository. Here is from a recent example:</p>
143
144 <blockquote><pre>
145 git remote add origin git@salsa.debian.org:debian/perl-byacc.git
146 git push --set-upstream origin master upstream pristine-tar
147 git push --tags
148 </pre></blockquote>
149
150 <p>With a working build, I have a look at the build rules if I want to
151 remove some more dust. I normally try to move to debhelper compat
152 level 13, which involves removing debian/compat and modifying
153 debian/control to build depend on debhelper-compat (=13). I also test
154 with 'Rules-Requires-Root: no' in debian/control and verify in
155 debian/rules that hardening is enabled, and include all of these if
156 the package still build. If it fail to build with level 13, I try
157 with 12, 11, 10 and so on until I find a level where it build, as I do
158 not want to spend a lot of time fixing build issues.</p>
159
160 <p>Some times, when I feel inspired, I make sure debian/copyright is
161 converted to the machine readable format, often by starting with
162 'debhelper -cc' and then cleaning up the autogenerated content until
163 it matches realities. If I feel like it, I might also clean up
164 non-dh-based debian/rules files to use the short style dh build
165 rules.</p>
166
167 <p>Once I have removed all the dust I care to process for the package,
168 I run 'gbp dch' to generate a debian/changelog entry based on the
169 commits done so far, run 'dch -r' to switch from 'UNRELEASED' to
170 'unstable' and get an editor to make sure the 'QA upload' marker is in
171 place and that all long commit descriptions are wrapped into sensible
172 lengths, run 'debcommit --release -a' to commit and tag the new
173 debian/changelog entry, run 'debuild -S' to build a source only
174 package, and 'dput ../perl-byacc_2.0-10_source.changes' to do the
175 upload. During the entire process, and many times per step, I run
176 'debuild' to verify the changes done still work. I also some times
177 verify the set of built files using 'find debian' to see if I can spot
178 any problems (like no file in usr/bin any more or empty package). I
179 also try to fix all lintian issues reported at the end of each
180 'debuild' run.</p>
181
182 <p>If I find Debian specific patches, I try to ensure their metadata
183 is fairly up to date and some times I even try to reach out to
184 upstream, to make the upstream project aware of the patches. Most of
185 my emails bounce, so the success rate is low. For projects with no
186 Homepage entry in debian/control I try to track down one, and for
187 packages with no debian/watch file I try to create one. But at least
188 for some of the packages I have been unable to find a functioning
189 upstream, and must skip both of these.</p>
190
191 <p>If I could handle ten percent in nine days, twenty people could
192 complete the rest in less then five days. I use approximately twenty
193 minutes per package, when I have twenty minutes spare time to spend.
194 Perhaps you got twenty minutes to spare too?</p>
195
196 <p>As usual, if you use Bitcoin and want to show your support of my
197 activities, please send Bitcoin donations to my address
198 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
199
200 <p><strong>Update 2024-05-04:</strong> There is
201 <a href="http://www.hungry.com/~pere/blog/images/2024-05-04-debian-snap-to-salsa.sh">an
202 updated edition of my migration script</a>, last updated
203 2024-05-04.</p>
204
205 </div>
206 <div class="tags">
207
208
209 Tags: <a href="http://www.hungry.com/~pere/blog/tags/debian">debian</a>, <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>.
210
211
212 </div>
213 </div>
214 <div class="padding"></div>
215
216 <div class="entry">
217 <div class="title">
218 <a href="http://www.hungry.com/~pere/blog/RAID_status_from_LSI_Megaraid_controllers_in_Debian.html">RAID status from LSI Megaraid controllers in Debian</a>
219 </div>
220 <div class="date">
221 17th April 2024
222 </div>
223 <div class="body">
224 <p>I am happy to report that
225 <a href="https://github.com/namiltd/megactl">the megactl package</a>,
226 useful to fetch RAID status when using the LSI Megaraid controller,
227 now is available in Debian. It passed NEW a few days ago, and is now
228 <a href="https://tracker.debian.org/pkg/megactl">available in
229 unstable</a>, and probably showing up in testing in a weeks time. The
230 new version should provide Appstream hardware mapping and should
231 integrate nicely with isenkram.</p>
232
233 <p>As usual, if you use Bitcoin and want to show your support of my
234 activities, please send Bitcoin donations to my address
235 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
236
237
238 </div>
239 <div class="tags">
240
241
242 Tags: <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>, <a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram</a>, <a href="http://www.hungry.com/~pere/blog/tags/raid">raid</a>.
243
244
245 </div>
246 </div>
247 <div class="padding"></div>
248
249 <div class="entry">
250 <div class="title">
251 <a href="http://www.hungry.com/~pere/blog/Time_to_move_orphaned_Debian_packages_to_git.html">Time to move orphaned Debian packages to git</a>
252 </div>
253 <div class="date">
254 14th April 2024
255 </div>
256 <div class="body">
257 <p>There are several packages in Debian without a associated git
258 repository with the packaging history. This is unfortunate and it
259 would be nice if more of these would do so. Quote a lot of these are
260 without a maintainer, ie listed as maintained by the
261 '<a href="https://qa.debian.org/developer.php?email=packages%40qa.debian.org">Debian
262 QA Group</a>' place holder. In fact, 438 packages have this property
263 according to UDD (<tt>SELECT source FROM sources WHERE release = 'sid'
264 AND (vcs_url ilike '%anonscm.debian.org%' OR vcs_browser ilike
265 '%anonscm.debian.org%' or vcs_url IS NULL OR vcs_browser IS NULL) AND
266 maintainer ilike '%packages@qa.debian.org%';</tt>). Such packages can
267 be updated without much coordination by any Debian developer, as they
268 are considered orphaned.</p>
269
270 <p>To try to improve the situation and reduce the number of packages
271 without associated git repository, I started a few days ago to search
272 out candiates and provide them with a git repository under the
273 'debian' collaborative Salsa project. I started with the packages
274 pointing to obsolete Alioth git repositories, and am now working my
275 way across the ones completely without git references. In addition to
276 updating the Vcs-* debian/control fields, I try to update
277 Standards-Version, debhelper compat level, simplify d/rules, switch to
278 Rules-Requires-Root: no and fix lintian issues reported. I only
279 implement those that are trivial to fix, to avoid spending too much
280 time on each orphaned package. So far my experience is that it take
281 aproximately 20 minutes to convert a package without any git
282 references, and a lot more for packages with existing git repositories
283 incompatible with git-buildpackages.</p>
284
285 <p>So far I have converted 10 packages, and I will keep going until I
286 run out of steam. As should be clear from the numbers, there is
287 enough packages remaining for more people to do the same without
288 stepping on each others toes. I find it useful to start by searching
289 for a git repo already on salsa, as I find that some times a git repo
290 has already been created, but no new version is uploaded to Debian
291 yet. In those cases I start with the existing git repository. I
292 convert to the git-buildpackage+pristine-tar workflow, and ensure a
293 debian/gbp.conf file with "pristine-tar=True" is added early, to avoid
294 uploading a orig.tar.gz with the wrong checksum by mistake. Did that
295 three times in the begin before I remembered my mistake.</p>
296
297 <p>So, if you are a Debian Developer and got some spare time, perhaps
298 considering migrating some orphaned packages to git?</p>
299
300 <p>As usual, if you use Bitcoin and want to show your support of my
301 activities, please send Bitcoin donations to my address
302 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
303
304 </div>
305 <div class="tags">
306
307
308 Tags: <a href="http://www.hungry.com/~pere/blog/tags/debian">debian</a>, <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>.
309
310
311 </div>
312 </div>
313 <div class="padding"></div>
314
315 <p style="text-align: right;"><a href="04.rss"><img src="http://www.hungry.com/~pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
316 <div id="sidebar">
317
318
319
320 <h2>Archive</h2>
321 <ul>
322
323 <li>2025
324 <ul>
325
326 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/01/">January (4)</a></li>
327
328 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/02/">February (3)</a></li>
329
330 </ul></li>
331
332 <li>2024
333 <ul>
334
335 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/01/">January (1)</a></li>
336
337 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/02/">February (1)</a></li>
338
339 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/03/">March (2)</a></li>
340
341 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/04/">April (3)</a></li>
342
343 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/05/">May (1)</a></li>
344
345 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/06/">June (1)</a></li>
346
347 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/07/">July (2)</a></li>
348
349 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/12/">December (1)</a></li>
350
351 </ul></li>
352
353 <li>2023
354 <ul>
355
356 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/01/">January (3)</a></li>
357
358 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/02/">February (1)</a></li>
359
360 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/04/">April (2)</a></li>
361
362 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/05/">May (3)</a></li>
363
364 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/06/">June (1)</a></li>
365
366 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/08/">August (1)</a></li>
367
368 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/09/">September (1)</a></li>
369
370 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/10/">October (1)</a></li>
371
372 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/11/">November (4)</a></li>
373
374 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/12/">December (1)</a></li>
375
376 </ul></li>
377
378 <li>2022
379 <ul>
380
381 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/02/">February (1)</a></li>
382
383 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/03/">March (3)</a></li>
384
385 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/04/">April (2)</a></li>
386
387 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/06/">June (2)</a></li>
388
389 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/07/">July (1)</a></li>
390
391 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/09/">September (1)</a></li>
392
393 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/10/">October (1)</a></li>
394
395 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/12/">December (1)</a></li>
396
397 </ul></li>
398
399 <li>2021
400 <ul>
401
402 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/01/">January (2)</a></li>
403
404 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/02/">February (1)</a></li>
405
406 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/05/">May (1)</a></li>
407
408 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/06/">June (1)</a></li>
409
410 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/07/">July (3)</a></li>
411
412 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/08/">August (1)</a></li>
413
414 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/09/">September (1)</a></li>
415
416 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/10/">October (1)</a></li>
417
418 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/12/">December (1)</a></li>
419
420 </ul></li>
421
422 <li>2020
423 <ul>
424
425 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/02/">February (2)</a></li>
426
427 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/03/">March (2)</a></li>
428
429 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/04/">April (2)</a></li>
430
431 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/05/">May (3)</a></li>
432
433 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/06/">June (2)</a></li>
434
435 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/07/">July (1)</a></li>
436
437 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/09/">September (1)</a></li>
438
439 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/10/">October (1)</a></li>
440
441 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/11/">November (1)</a></li>
442
443 </ul></li>
444
445 <li>2019
446 <ul>
447
448 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/01/">January (4)</a></li>
449
450 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/02/">February (3)</a></li>
451
452 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/03/">March (3)</a></li>
453
454 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/05/">May (2)</a></li>
455
456 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/06/">June (5)</a></li>
457
458 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/07/">July (2)</a></li>
459
460 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/08/">August (1)</a></li>
461
462 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/09/">September (1)</a></li>
463
464 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/11/">November (1)</a></li>
465
466 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/12/">December (4)</a></li>
467
468 </ul></li>
469
470 <li>2018
471 <ul>
472
473 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/01/">January (1)</a></li>
474
475 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/02/">February (5)</a></li>
476
477 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/03/">March (5)</a></li>
478
479 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/04/">April (3)</a></li>
480
481 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/06/">June (2)</a></li>
482
483 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/07/">July (5)</a></li>
484
485 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/08/">August (3)</a></li>
486
487 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/09/">September (3)</a></li>
488
489 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/10/">October (5)</a></li>
490
491 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/11/">November (2)</a></li>
492
493 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/12/">December (4)</a></li>
494
495 </ul></li>
496
497 <li>2017
498 <ul>
499
500 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/01/">January (4)</a></li>
501
502 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/02/">February (3)</a></li>
503
504 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/03/">March (5)</a></li>
505
506 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/04/">April (2)</a></li>
507
508 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/06/">June (5)</a></li>
509
510 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/07/">July (1)</a></li>
511
512 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/08/">August (1)</a></li>
513
514 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/09/">September (3)</a></li>
515
516 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/10/">October (5)</a></li>
517
518 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/11/">November (3)</a></li>
519
520 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/12/">December (4)</a></li>
521
522 </ul></li>
523
524 <li>2016
525 <ul>
526
527 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/01/">January (3)</a></li>
528
529 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/02/">February (2)</a></li>
530
531 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/03/">March (3)</a></li>
532
533 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/04/">April (8)</a></li>
534
535 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/05/">May (8)</a></li>
536
537 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/06/">June (2)</a></li>
538
539 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/07/">July (2)</a></li>
540
541 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/08/">August (5)</a></li>
542
543 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/09/">September (2)</a></li>
544
545 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/10/">October (3)</a></li>
546
547 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/11/">November (8)</a></li>
548
549 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/12/">December (5)</a></li>
550
551 </ul></li>
552
553 <li>2015
554 <ul>
555
556 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/01/">January (7)</a></li>
557
558 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/02/">February (6)</a></li>
559
560 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/03/">March (1)</a></li>
561
562 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/04/">April (4)</a></li>
563
564 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/05/">May (3)</a></li>
565
566 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/06/">June (4)</a></li>
567
568 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/07/">July (6)</a></li>
569
570 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/08/">August (2)</a></li>
571
572 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/09/">September (2)</a></li>
573
574 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/10/">October (9)</a></li>
575
576 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/11/">November (6)</a></li>
577
578 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/12/">December (3)</a></li>
579
580 </ul></li>
581
582 <li>2014
583 <ul>
584
585 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/01/">January (2)</a></li>
586
587 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/02/">February (3)</a></li>
588
589 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/03/">March (8)</a></li>
590
591 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/04/">April (7)</a></li>
592
593 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/05/">May (1)</a></li>
594
595 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/06/">June (2)</a></li>
596
597 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/07/">July (2)</a></li>
598
599 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/08/">August (2)</a></li>
600
601 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/09/">September (5)</a></li>
602
603 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/10/">October (6)</a></li>
604
605 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/11/">November (3)</a></li>
606
607 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/12/">December (5)</a></li>
608
609 </ul></li>
610
611 <li>2013
612 <ul>
613
614 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/01/">January (11)</a></li>
615
616 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/02/">February (9)</a></li>
617
618 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/03/">March (9)</a></li>
619
620 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/04/">April (6)</a></li>
621
622 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/05/">May (9)</a></li>
623
624 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/06/">June (10)</a></li>
625
626 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/07/">July (7)</a></li>
627
628 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/08/">August (3)</a></li>
629
630 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/09/">September (5)</a></li>
631
632 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/10/">October (7)</a></li>
633
634 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/11/">November (9)</a></li>
635
636 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/12/">December (3)</a></li>
637
638 </ul></li>
639
640 <li>2012
641 <ul>
642
643 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/01/">January (7)</a></li>
644
645 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/02/">February (10)</a></li>
646
647 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/03/">March (17)</a></li>
648
649 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/04/">April (12)</a></li>
650
651 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/05/">May (12)</a></li>
652
653 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/06/">June (20)</a></li>
654
655 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/07/">July (17)</a></li>
656
657 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/08/">August (6)</a></li>
658
659 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/09/">September (9)</a></li>
660
661 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/10/">October (17)</a></li>
662
663 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/11/">November (10)</a></li>
664
665 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/12/">December (7)</a></li>
666
667 </ul></li>
668
669 <li>2011
670 <ul>
671
672 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/01/">January (16)</a></li>
673
674 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/02/">February (6)</a></li>
675
676 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/03/">March (6)</a></li>
677
678 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/04/">April (7)</a></li>
679
680 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/05/">May (3)</a></li>
681
682 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/06/">June (2)</a></li>
683
684 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/07/">July (7)</a></li>
685
686 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/08/">August (6)</a></li>
687
688 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/09/">September (4)</a></li>
689
690 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/10/">October (2)</a></li>
691
692 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/11/">November (3)</a></li>
693
694 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/12/">December (1)</a></li>
695
696 </ul></li>
697
698 <li>2010
699 <ul>
700
701 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/01/">January (2)</a></li>
702
703 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/02/">February (1)</a></li>
704
705 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/03/">March (3)</a></li>
706
707 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/04/">April (3)</a></li>
708
709 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/05/">May (9)</a></li>
710
711 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/06/">June (14)</a></li>
712
713 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/07/">July (12)</a></li>
714
715 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/08/">August (13)</a></li>
716
717 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/09/">September (7)</a></li>
718
719 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/10/">October (9)</a></li>
720
721 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/11/">November (13)</a></li>
722
723 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/12/">December (12)</a></li>
724
725 </ul></li>
726
727 <li>2009
728 <ul>
729
730 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/01/">January (8)</a></li>
731
732 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/02/">February (8)</a></li>
733
734 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/03/">March (12)</a></li>
735
736 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/04/">April (10)</a></li>
737
738 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/05/">May (9)</a></li>
739
740 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/06/">June (3)</a></li>
741
742 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/07/">July (4)</a></li>
743
744 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/08/">August (3)</a></li>
745
746 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/09/">September (1)</a></li>
747
748 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/10/">October (2)</a></li>
749
750 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/11/">November (3)</a></li>
751
752 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/12/">December (3)</a></li>
753
754 </ul></li>
755
756 <li>2008
757 <ul>
758
759 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/11/">November (5)</a></li>
760
761 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/12/">December (7)</a></li>
762
763 </ul></li>
764
765 </ul>
766
767
768
769 <h2>Tags</h2>
770 <ul>
771
772 <li><a href="http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (19)</a></li>
773
774 <li><a href="http://www.hungry.com/~pere/blog/tags/amiga">amiga (1)</a></li>
775
776 <li><a href="http://www.hungry.com/~pere/blog/tags/aros">aros (1)</a></li>
777
778 <li><a href="http://www.hungry.com/~pere/blog/tags/bankid">bankid (4)</a></li>
779
780 <li><a href="http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (9)</a></li>
781
782 <li><a href="http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (13)</a></li>
783
784 <li><a href="http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (17)</a></li>
785
786 <li><a href="http://www.hungry.com/~pere/blog/tags/bsa">bsa (2)</a></li>
787
788 <li><a href="http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (3)</a></li>
789
790 <li><a href="http://www.hungry.com/~pere/blog/tags/debian">debian (209)</a></li>
791
792 <li><a href="http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (159)</a></li>
793
794 <li><a href="http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
795
796 <li><a href="http://www.hungry.com/~pere/blog/tags/digistan">digistan (11)</a></li>
797
798 <li><a href="http://www.hungry.com/~pere/blog/tags/dld">dld (18)</a></li>
799
800 <li><a href="http://www.hungry.com/~pere/blog/tags/docbook">docbook (33)</a></li>
801
802 <li><a href="http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
803
804 <li><a href="http://www.hungry.com/~pere/blog/tags/english">english (471)</a></li>
805
806 <li><a href="http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
807
808 <li><a href="http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (14)</a></li>
809
810 <li><a href="http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (34)</a></li>
811
812 <li><a href="http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (9)</a></li>
813
814 <li><a href="http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (20)</a></li>
815
816 <li><a href="http://www.hungry.com/~pere/blog/tags/h264">h264 (20)</a></li>
817
818 <li><a href="http://www.hungry.com/~pere/blog/tags/intervju">intervju (43)</a></li>
819
820 <li><a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (21)</a></li>
821
822 <li><a href="http://www.hungry.com/~pere/blog/tags/kart">kart (23)</a></li>
823
824 <li><a href="http://www.hungry.com/~pere/blog/tags/kodi">kodi (6)</a></li>
825
826 <li><a href="http://www.hungry.com/~pere/blog/tags/ldap">ldap (9)</a></li>
827
828 <li><a href="http://www.hungry.com/~pere/blog/tags/lego">lego (5)</a></li>
829
830 <li><a href="http://www.hungry.com/~pere/blog/tags/lenker">lenker (8)</a></li>
831
832 <li><a href="http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (8)</a></li>
833
834 <li><a href="http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (3)</a></li>
835
836 <li><a href="http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (1)</a></li>
837
838 <li><a href="http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (3)</a></li>
839
840 <li><a href="http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (8)</a></li>
841
842 <li><a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (48)</a></li>
843
844 <li><a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (15)</a></li>
845
846 <li><a href="http://www.hungry.com/~pere/blog/tags/noark5">noark5 (27)</a></li>
847
848 <li><a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk (326)</a></li>
849
850 <li><a href="http://www.hungry.com/~pere/blog/tags/nuug">nuug (200)</a></li>
851
852 <li><a href="http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (42)</a></li>
853
854 <li><a href="http://www.hungry.com/~pere/blog/tags/open311">open311 (2)</a></li>
855
856 <li><a href="http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (4)</a></li>
857
858 <li><a href="http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
859
860 <li><a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern (114)</a></li>
861
862 <li><a href="http://www.hungry.com/~pere/blog/tags/raid">raid (4)</a></li>
863
864 <li><a href="http://www.hungry.com/~pere/blog/tags/reactos">reactos (1)</a></li>
865
866 <li><a href="http://www.hungry.com/~pere/blog/tags/reprap">reprap (11)</a></li>
867
868 <li><a href="http://www.hungry.com/~pere/blog/tags/rfid">rfid (3)</a></li>
869
870 <li><a href="http://www.hungry.com/~pere/blog/tags/robot">robot (17)</a></li>
871
872 <li><a href="http://www.hungry.com/~pere/blog/tags/rss">rss (1)</a></li>
873
874 <li><a href="http://www.hungry.com/~pere/blog/tags/ruter">ruter (7)</a></li>
875
876 <li><a href="http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
877
878 <li><a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
879
880 <li><a href="http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (4)</a></li>
881
882 <li><a href="http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (5)</a></li>
883
884 <li><a href="http://www.hungry.com/~pere/blog/tags/standard">standard (80)</a></li>
885
886 <li><a href="http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
887
888 <li><a href="http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (14)</a></li>
889
890 <li><a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (65)</a></li>
891
892 <li><a href="http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (6)</a></li>
893
894 <li><a href="http://www.hungry.com/~pere/blog/tags/usenix">usenix (2)</a></li>
895
896 <li><a href="http://www.hungry.com/~pere/blog/tags/valg">valg (9)</a></li>
897
898 <li><a href="http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (23)</a></li>
899
900 <li><a href="http://www.hungry.com/~pere/blog/tags/video">video (82)</a></li>
901
902 <li><a href="http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (4)</a></li>
903
904 <li><a href="http://www.hungry.com/~pere/blog/tags/web">web (42)</a></li>
905
906 </ul>
907
908
909 </div>
910 <p style="text-align: right">
911 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
912 </p>
913
914 </body>
915 </html>