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">
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=
"https://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"https://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"04.rss" type=
"application/rss+xml" />
15 <a href=
"https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
22 <h3>Entries from April
2024.
</h3>
26 <a href=
"https://people.skolelinux.org/pere/blog/45_orphaned_Debian_packages_moved_to_git__391_to_go.html">45 orphaned Debian packages moved to git,
391 to go
</a>
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.
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:
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;"
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>
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>
66 # See also https://bugs.debian.org/
804722#
31
70 # Move to this Standards-Version.
75 if [ -z "$PKG" ]; then
76 echo "usage: $
0 <pkgname>"
80 if [ -e "${PKG}-salsa
" ]; then
81 echo "error: ${PKG}-salsa already exist, aborting.
"
85 if [ -z "ALLOWFAILURE
" ] ; then
89 # Fetch every snapshotted source package. Manually loop until all
90 # transfers succeed, as 'gbp import-dscs --debsnap' do not fail on
92 until debsnap --force -v $PKG || $ALLOWFAILURE ; do sleep 1; done
93 mkdir ${PKG}-salsa; cd ${PKG}-salsa
96 # Specify branches to override any debian/gbp.conf file present in the
98 gbp import-dscs --debian-branch=master --upstream-branch=upstream \
99 --pristine-tar ../source-$PKG/*.dsc
101 # Add Vcs pointing to Salsa Debian project (must be manually created
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
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
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
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
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
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>
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>
145 git remote add origin git@salsa.debian.org:debian/perl-byacc.git
146 git push --set-upstream origin master upstream pristine-tar
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>
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
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
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>
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>
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>
204 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>.
209 <div class=
"padding"></div>
213 <a href=
"https://people.skolelinux.org/pere/blog/RAID_status_from_LSI_Megaraid_controllers_in_Debian.html">RAID status from LSI Megaraid controllers in Debian
</a>
219 <p>I am happy to report that
220 <a href=
"https://github.com/namiltd/megactl">the megactl package
</a>,
221 useful to fetch RAID status when using the LSI Megaraid controller,
222 now is available in Debian. It passed NEW a few days ago, and is now
223 <a href=
"https://tracker.debian.org/pkg/megactl">available in
224 unstable
</a>, and probably showing up in testing in a weeks time. The
225 new version should provide Appstream hardware mapping and should
226 integrate nicely with isenkram.
</p>
228 <p>As usual, if you use Bitcoin and want to show your support of my
229 activities, please send Bitcoin donations to my address
230 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
237 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/raid">raid
</a>.
242 <div class=
"padding"></div>
246 <a href=
"https://people.skolelinux.org/pere/blog/Time_to_move_orphaned_Debian_packages_to_git.html">Time to move orphaned Debian packages to git
</a>
252 <p>There are several packages in Debian without a associated git
253 repository with the packaging history. This is unfortunate and it
254 would be nice if more of these would do so. Quote a lot of these are
255 without a maintainer, ie listed as maintained by the
256 '
<a href=
"https://qa.debian.org/developer.php?email=packages%40qa.debian.org">Debian
257 QA Group
</a>' place holder. In fact,
438 packages have this property
258 according to UDD (
<tt>SELECT source FROM sources WHERE release = 'sid'
259 AND (vcs_url ilike '%anonscm.debian.org%' OR vcs_browser ilike
260 '%anonscm.debian.org%' or vcs_url IS NULL OR vcs_browser IS NULL) AND
261 maintainer ilike '%packages@qa.debian.org%';
</tt>). Such packages can
262 be updated without much coordination by any Debian developer, as they
263 are considered orphaned.
</p>
265 <p>To try to improve the situation and reduce the number of packages
266 without associated git repository, I started a few days ago to search
267 out candiates and provide them with a git repository under the
268 'debian' collaborative Salsa project. I started with the packages
269 pointing to obsolete Alioth git repositories, and am now working my
270 way across the ones completely without git references. In addition to
271 updating the Vcs-* debian/control fields, I try to update
272 Standards-Version, debhelper compat level, simplify d/rules, switch to
273 Rules-Requires-Root: no and fix lintian issues reported. I only
274 implement those that are trivial to fix, to avoid spending too much
275 time on each orphaned package. So far my experience is that it take
276 aproximately
20 minutes to convert a package without any git
277 references, and a lot more for packages with existing git repositories
278 incompatible with git-buildpackages.
</p>
280 <p>So far I have converted
10 packages, and I will keep going until I
281 run out of steam. As should be clear from the numbers, there is
282 enough packages remaining for more people to do the same without
283 stepping on each others toes. I find it useful to start by searching
284 for a git repo already on salsa, as I find that some times a git repo
285 has already been created, but no new version is uploaded to Debian
286 yet. In those cases I start with the existing git repository. I
287 convert to the git-buildpackage+pristine-tar workflow, and ensure a
288 debian/gbp.conf file with "pristine-tar=True" is added early, to avoid
289 uploading a orig.tar.gz with the wrong checksum by mistake. Did that
290 three times in the begin before I remembered my mistake.
</p>
292 <p>So, if you are a Debian Developer and got some spare time, perhaps
293 considering migrating some orphaned packages to git?
</p>
295 <p>As usual, if you use Bitcoin and want to show your support of my
296 activities, please send Bitcoin donations to my address
297 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
303 Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>.
308 <div class=
"padding"></div>
310 <p style=
"text-align: right;"><a href=
"04.rss"><img src=
"https://people.skolelinux.org/pere/blog/xml.gif" alt=
"RSS Feed" width=
"36" height=
"14" /></a></p>
321 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2024/01/">January (
1)
</a></li>
323 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2024/02/">February (
1)
</a></li>
325 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2024/03/">March (
2)
</a></li>
327 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2024/04/">April (
3)
</a></li>
334 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/01/">January (
3)
</a></li>
336 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/02/">February (
1)
</a></li>
338 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/04/">April (
2)
</a></li>
340 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/05/">May (
3)
</a></li>
342 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/06/">June (
1)
</a></li>
344 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/08/">August (
1)
</a></li>
346 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/09/">September (
1)
</a></li>
348 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/10/">October (
1)
</a></li>
350 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/11/">November (
4)
</a></li>
352 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/12/">December (
1)
</a></li>
359 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/02/">February (
1)
</a></li>
361 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/03/">March (
3)
</a></li>
363 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/04/">April (
2)
</a></li>
365 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/06/">June (
2)
</a></li>
367 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/07/">July (
1)
</a></li>
369 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/09/">September (
1)
</a></li>
371 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/10/">October (
1)
</a></li>
373 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/12/">December (
1)
</a></li>
380 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/01/">January (
2)
</a></li>
382 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/02/">February (
1)
</a></li>
384 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/05/">May (
1)
</a></li>
386 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/06/">June (
1)
</a></li>
388 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/07/">July (
3)
</a></li>
390 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/08/">August (
1)
</a></li>
392 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/09/">September (
1)
</a></li>
394 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/10/">October (
1)
</a></li>
396 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/12/">December (
1)
</a></li>
403 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/02/">February (
2)
</a></li>
405 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/03/">March (
2)
</a></li>
407 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/04/">April (
2)
</a></li>
409 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/05/">May (
3)
</a></li>
411 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/06/">June (
2)
</a></li>
413 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/07/">July (
1)
</a></li>
415 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/09/">September (
1)
</a></li>
417 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/10/">October (
1)
</a></li>
419 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/11/">November (
1)
</a></li>
426 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/01/">January (
4)
</a></li>
428 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/02/">February (
3)
</a></li>
430 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/03/">March (
3)
</a></li>
432 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/05/">May (
2)
</a></li>
434 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/06/">June (
5)
</a></li>
436 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/07/">July (
2)
</a></li>
438 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/08/">August (
1)
</a></li>
440 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/09/">September (
1)
</a></li>
442 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/11/">November (
1)
</a></li>
444 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/12/">December (
4)
</a></li>
451 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/01/">January (
1)
</a></li>
453 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/02/">February (
5)
</a></li>
455 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/03/">March (
5)
</a></li>
457 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/04/">April (
3)
</a></li>
459 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/06/">June (
2)
</a></li>
461 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/07/">July (
5)
</a></li>
463 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/08/">August (
3)
</a></li>
465 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/09/">September (
3)
</a></li>
467 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/10/">October (
5)
</a></li>
469 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/11/">November (
2)
</a></li>
471 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/12/">December (
4)
</a></li>
478 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
480 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
482 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
484 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
486 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/06/">June (
5)
</a></li>
488 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/07/">July (
1)
</a></li>
490 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/08/">August (
1)
</a></li>
492 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/09/">September (
3)
</a></li>
494 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/10/">October (
5)
</a></li>
496 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/11/">November (
3)
</a></li>
498 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/12/">December (
4)
</a></li>
505 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
507 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
509 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
511 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
513 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
515 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
517 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
519 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
521 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
523 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
525 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
527 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
534 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
536 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
538 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
540 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
542 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
544 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
546 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
548 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
550 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
552 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
554 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
556 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
563 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
565 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
567 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
569 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
571 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
573 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
575 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
577 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
579 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
581 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
583 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
585 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
592 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
594 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
596 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
598 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
600 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
602 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
604 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
606 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
608 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
610 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
612 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
614 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
621 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
623 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
625 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
627 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
629 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
631 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
633 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
635 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
637 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
639 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
641 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
643 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
650 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
652 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
654 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
656 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
658 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
660 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
662 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
664 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
666 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
668 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
670 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
672 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
679 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
681 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
683 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
685 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
687 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
689 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
691 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
693 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
695 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
697 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
699 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
701 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
708 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
710 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
712 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
714 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
716 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
718 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
720 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
722 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
724 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
726 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
728 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
730 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
737 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
739 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
750 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
19)
</a></li>
752 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
754 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
756 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
758 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (
9)
</a></li>
760 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
13)
</a></li>
762 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
764 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
766 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
3)
</a></li>
768 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian (
199)
</a></li>
770 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
159)
</a></li>
772 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
9)
</a></li>
774 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/digistan">digistan (
11)
</a></li>
776 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/dld">dld (
18)
</a></li>
778 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/docbook">docbook (
32)
</a></li>
780 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
782 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/english">english (
461)
</a></li>
784 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
786 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
14)
</a></li>
788 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
34)
</a></li>
790 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
792 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
794 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
796 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/intervju">intervju (
43)
</a></li>
798 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
18)
</a></li>
800 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/kart">kart (
23)
</a></li>
802 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/kodi">kodi (
6)
</a></li>
804 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
806 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lego">lego (
5)
</a></li>
808 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
810 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (
5)
</a></li>
812 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
814 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
816 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (
3)
</a></li>
818 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
820 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
46)
</a></li>
822 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
15)
</a></li>
824 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (
25)
</a></li>
826 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/norsk">norsk (
324)
</a></li>
828 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/nuug">nuug (
199)
</a></li>
830 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
41)
</a></li>
832 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
834 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (
4)
</a></li>
836 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
76)
</a></li>
838 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/personvern">personvern (
114)
</a></li>
840 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/raid">raid (
4)
</a></li>
842 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
844 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
846 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
848 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/robot">robot (
17)
</a></li>
850 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
852 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ruter">ruter (
7)
</a></li>
854 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
856 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
60)
</a></li>
858 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
860 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
862 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/standard">standard (
76)
</a></li>
864 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
7)
</a></li>
866 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
14)
</a></li>
868 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
65)
</a></li>
870 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
5)
</a></li>
872 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
874 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/valg">valg (
9)
</a></li>
876 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (
22)
</a></li>
878 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/video">video (
80)
</a></li>
880 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
882 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/web">web (
42)
</a></li>
888 <p style=
"text-align: right">
889 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>