]> pere.pagekite.me Git - homepage.git/blob - blog/archive/2018/07/index.html
Generated.
[homepage.git] / blog / archive / 2018 / 07 / 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 July 2018</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="07.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <!-- XML FEED -->
13 <div class="title">
14 <h1>
15 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <h3>Entries from July 2018.</h3>
23
24 <div class="entry">
25 <div class="title">
26 <a href="http://people.skolelinux.org/pere/blog/Sharing_images_with_friends_and_family_using_RSS_and_EXIF_XMP_metadata.html">Sharing images with friends and family using RSS and EXIF/XMP metadata</a>
27 </div>
28 <div class="date">
29 31st July 2018
30 </div>
31 <div class="body">
32 <p>For a while now, I have looked for a sensible way to share images
33 with my family using a self hosted solution, as it is unacceptable to
34 place images from my personal life under the control of strangers
35 working for data hoarders like Google or Dropbox. The last few days I
36 have drafted an approach that might work out, and I would like to
37 share it with you. I would like to publish images on a server under
38 my control, and point some Internet connected display units using some
39 free and open standard to the images I published. As my primary
40 language is not limited to ASCII, I need to store metadata using
41 UTF-8. Many years ago, I hoped to find a digital photo frame capable
42 of reading a RSS feed with image references (aka using the
43 &lt;enclosure&gt; RSS tag), but was unable to find a current supplier
44 of such frames. In the end I gave up that approach.</p>
45
46 <p>Some months ago, I discovered that
47 <a href="https://www.jwz.org/xscreensaver/">XScreensaver</a> is able to
48 read images from a RSS feed, and used it to set up a screen saver on
49 my home info screen, showing images from the Daily images feed from
50 NASA. This proved to work well. More recently I discovered that
51 <a href="https://kodi.tv">Kodi</a> (both using
52 <a href="https://www.openelec.tv/">OpenELEC</a> and
53 <a href="https://libreelec.tv">LibreELEC</a>) provide the
54 <a href="https://github.com/grinsted/script.screensaver.feedreader">Feedreader</a>
55 screen saver capable of reading a RSS feed with images and news. For
56 fun, I used it this summer to test Kodi on my parents TV by hooking up
57 a Raspberry PI unit with LibreELEC, and wanted to provide them with a
58 screen saver showing selected pictures from my selection.</p>
59
60 <p>Armed with motivation and a test photo frame, I set out to generate
61 a RSS feed for the Kodi instance. I adjusted my <a
62 href="https://freedombox.org/">Freedombox</a> instance, created
63 /var/www/html/privatepictures/, wrote a small Perl script to extract
64 title and description metadata from the photo files and generate the
65 RSS file. I ended up using Perl instead of python, as the
66 libimage-exiftool-perl Debian package seemed to handle the EXIF/XMP
67 tags I ended up using, while python3-exif did not. The relevant EXIF
68 tags only support ASCII, so I had to find better alternatives. XMP
69 seem to have the support I need.</p>
70
71 <p>I am a bit unsure which EXIF/XMP tags to use, as I would like to
72 use tags that can be easily added/updated using normal free software
73 photo managing software. I ended up using the tags set using this
74 exiftool command, as these tags can also be set using digiKam:</p>
75
76 <blockquote><pre>
77 exiftool -headline='The RSS image title' \
78 -description='The RSS image description.' \
79 -subject+=for-family photo.jpeg
80 </pre></blockquote>
81
82 <p>I initially tried the "-title" and "keyword" tags, but they were
83 invisible in digiKam, so I changed to "-headline" and "-subject". I
84 use the keyword/subject 'for-family' to flag that the photo should be
85 shared with my family. Images with this keyword set are located and
86 copied into my Freedombox for the RSS generating script to find.</p>
87
88 <p>Are there better ways to do this? Get in touch if you have better
89 suggestions.</p>
90
91 <p>As usual, if you use Bitcoin and want to show your support of my
92 activities, please send Bitcoin donations to my address
93 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
94
95 </div>
96 <div class="tags">
97
98
99 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
100
101
102 </div>
103 </div>
104 <div class="padding"></div>
105
106 <div class="entry">
107 <div class="title">
108 <a href="http://people.skolelinux.org/pere/blog/Simple_streaming_the_Linux_desktop_to_Kodi_using_GStreamer_and_RTP.html">Simple streaming the Linux desktop to Kodi using GStreamer and RTP</a>
109 </div>
110 <div class="date">
111 12th July 2018
112 </div>
113 <div class="body">
114 <p>Last night, I wrote
115 <a href="http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html">a
116 recipe to stream a Linux desktop using VLC to a instance of Kodi</a>.
117 During the day I received valuable feedback, and thanks to the
118 suggestions I have been able to rewrite the recipe into a much simpler
119 approach requiring no setup at all. It is a single script that take
120 care of it all.</p>
121
122 <p>This new script uses GStreamer instead of VLC to capture the
123 desktop and stream it to Kodi. This fixed the video quality issue I
124 saw initially. It further removes the need to add a m3u file on the
125 Kodi machine, as it instead connects to
126 <a href="https://kodi.wiki/view/JSON-RPC_API/v8">the JSON-RPC API in
127 Kodi</a> and simply ask Kodi to play from the stream created using
128 GStreamer. Streaming the desktop to Kodi now become trivial. Copy
129 the script below, run it with the DNS name or IP address of the kodi
130 server to stream to as the only argument, and watch your screen show
131 up on the Kodi screen. Note, it depend on multicast on the local
132 network, so if you need to stream outside the local network, the
133 script must be modified. Also note, I have no idea if audio work, as
134 I only care about the picture part.</p>
135
136 <blockquote><pre>
137 #!/bin/sh
138 #
139 # Stream the Linux desktop view to Kodi. See
140 # http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html
141 # for backgorund information.
142
143 # Make sure the stream is stopped in Kodi and the gstreamer process is
144 # killed if something go wrong (for example if curl is unable to find the
145 # kodi server). Do the same when interrupting this script.
146 kodicmd() {
147 host="$1"
148 cmd="$2"
149 params="$3"
150 curl --silent --header 'Content-Type: application/json' \
151 --data-binary "{ \"id\": 1, \"jsonrpc\": \"2.0\", \"method\": \"$cmd\", \"params\": $params }" \
152 "http://$host/jsonrpc"
153 }
154 cleanup() {
155 if [ -n "$kodihost" ] ; then
156 # Stop the playing when we end
157 playerid=$(kodicmd "$kodihost" Player.GetActivePlayers "{}" |
158 jq .result[].playerid)
159 kodicmd "$kodihost" Player.Stop "{ \"playerid\" : $playerid }" > /dev/null
160 fi
161 if [ "$gstpid" ] && kill -0 "$gstpid" >/dev/null 2>&1; then
162 kill "$gstpid"
163 fi
164 }
165 trap cleanup EXIT INT
166
167 if [ -n "$1" ]; then
168 kodihost=$1
169 shift
170 else
171 kodihost=kodi.local
172 fi
173
174 mcast=239.255.0.1
175 mcastport=1234
176 mcastttl=1
177
178 pasrc=$(pactl list | grep -A2 'Source #' | grep 'Name: .*\.monitor$' | \
179 cut -d" " -f2|head -1)
180 gst-launch-1.0 ximagesrc use-damage=0 ! video/x-raw,framerate=30/1 ! \
181 videoconvert ! queue2 ! \
182 x264enc bitrate=8000 speed-preset=superfast tune=zerolatency qp-min=30 \
183 key-int-max=15 bframes=2 ! video/x-h264,profile=high ! queue2 ! \
184 mpegtsmux alignment=7 name=mux ! rndbuffersize max=1316 min=1316 ! \
185 udpsink host=$mcast port=$mcastport ttl-mc=$mcastttl auto-multicast=1 sync=0 \
186 pulsesrc device=$pasrc ! audioconvert ! queue2 ! avenc_aac ! queue2 ! mux. \
187 > /dev/null 2>&1 &
188 gstpid=$!
189
190 # Give stream a second to get going
191 sleep 1
192
193 # Ask kodi to start streaming using its JSON-RPC API
194 kodicmd "$kodihost" Player.Open \
195 "{\"item\": { \"file\": \"udp://@$mcast:$mcastport\" } }" > /dev/null
196
197 # wait for gst to end
198 wait "$gstpid"
199 </pre></blockquote>
200
201 <p>I hope you find the approach useful. I know I do.</p>
202
203 <p>As usual, if you use Bitcoin and want to show your support of my
204 activities, please send Bitcoin donations to my address
205 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
206
207 </div>
208 <div class="tags">
209
210
211 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/kodi">kodi</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>.
212
213
214 </div>
215 </div>
216 <div class="padding"></div>
217
218 <div class="entry">
219 <div class="title">
220 <a href="http://people.skolelinux.org/pere/blog/Streaming_the_Linux_desktop_to_Kodi_using_VLC_and_RTSP.html">Streaming the Linux desktop to Kodi using VLC and RTSP</a>
221 </div>
222 <div class="date">
223 12th July 2018
224 </div>
225 <div class="body">
226 <p>PS: See
227 <ahref="http://people.skolelinux.org/pere/blog/Simple_streaming_the_Linux_desktop_to_Kodi_using_GStreamer_and_RTP.html">the
228 followup post</a> for a even better approach.</p>
229
230 <p>A while back, I was asked by a friend how to stream the desktop to
231 my projector connected to Kodi. I sadly had to admit that I had no
232 idea, as it was a task I never had tried. Since then, I have been
233 looking for a way to do so, preferable without much extra software to
234 install on either side. Today I found a way that seem to kind of
235 work. Not great, but it is a start.</p>
236
237 <p>I had a look at several approaches, for example
238 <a href="https://github.com/mfoetsch/dlna_live_streaming">using uPnP
239 DLNA as described in 2011</a>, but it required a uPnP server, fuse and
240 local storage enough to store the stream locally. This is not going
241 to work well for me, lacking enough free space, and it would
242 impossible for my friend to get working.</p>
243
244 <p>Next, it occurred to me that perhaps I could use VLC to create a
245 video stream that Kodi could play. Preferably using
246 broadcast/multicast, to avoid having to change any setup on the Kodi
247 side when starting such stream. Unfortunately, the only recipe I
248 could find using multicast used the rtp protocol, and this protocol
249 seem to not be supported by Kodi.</p>
250
251 <p>On the other hand, the rtsp protocol is working! Unfortunately I
252 have to specify the IP address of the streaming machine in both the
253 sending command and the file on the Kodi server. But it is showing my
254 desktop, and thus allow us to have a shared look on the big screen at
255 the programs I work on.</p>
256
257 <p>I did not spend much time investigating codeces. I combined the
258 rtp and rtsp recipes from
259 <a href="https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/">the
260 VLC Streaming HowTo/Command Line Examples</a>, and was able to get
261 this working on the desktop/streaming end.</p>
262
263 <blockquote><pre>
264 vlc screen:// --sout \
265 '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{dst=projector.local,port=1234,sdp=rtsp://192.168.11.4:8080/test.sdp}'
266 </pre></blockquote>
267
268 <p>I ssh-ed into my Kodi box and created a file like this with the
269 same IP address:</p>
270
271 <blockquote><pre>
272 echo rtsp://192.168.11.4:8080/test.sdp \
273 > /storage/videos/screenstream.m3u
274 </pre></blockquote>
275
276 <p>Note the 192.168.11.4 IP address is my desktops IP address. As far
277 as I can tell the IP must be hardcoded for this to work. In other
278 words, if someone elses machine is going to do the steaming, you have
279 to update screenstream.m3u on the Kodi machine and adjust the vlc
280 recipe. To get started, locate the file in Kodi and select the m3u
281 file while the VLC stream is running. The desktop then show up in my
282 big screen. :)</p>
283
284 <p>When using the same technique to stream a video file with audio,
285 the audio quality is really bad. No idea if the problem is package
286 loss or bad parameters for the transcode. I do not know VLC nor Kodi
287 enough to tell.</p>
288
289 <p><strong>Update 2018-07-12</strong>: Johannes Schauer send me a few
290 succestions and reminded me about an important step. The "screen:"
291 input source is only available once the vlc-plugin-access-extra
292 package is installed on Debian. Without it, you will see this error
293 message: "VLC is unable to open the MRL 'screen://'. Check the log
294 for details." He further found that it is possible to drop some parts
295 of the VLC command line to reduce the amount of hardcoded information.
296 It is also useful to consider using cvlc to avoid having the VLC
297 window in the desktop view. In sum, this give us this command line on
298 the source end
299
300 <blockquote><pre>
301 cvlc screen:// --sout \
302 '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{sdp=rtsp://:8080/}'
303 </pre></blockquote>
304
305 <p>and this on the Kodi end<p>
306
307 <blockquote><pre>
308 echo rtsp://192.168.11.4:8080/ \
309 > /storage/videos/screenstream.m3u
310 </pre></blockquote>
311
312 <p>Still bad image quality, though. But I did discover that streaming
313 a DVD using dvdsimple:///dev/dvd as the source had excellent video and
314 audio quality, so I guess the issue is in the input or transcoding
315 parts, not the rtsp part. I've tried to change the vb and ab
316 parameters to use more bandwidth, but it did not make a
317 difference.</p>
318
319 <p>I further received a suggestion from Einar Haraldseid to try using
320 gstreamer instead of VLC, and this proved to work great! He also
321 provided me with the trick to get Kodi to use a multicast stream as
322 its source. By using this monstrous oneliner, I can stream my desktop
323 with good video quality in reasonable framerate to the 239.255.0.1
324 multicast address on port 1234:
325
326 <blockquote><pre>
327 gst-launch-1.0 ximagesrc use-damage=0 ! video/x-raw,framerate=30/1 ! \
328 videoconvert ! queue2 ! \
329 x264enc bitrate=8000 speed-preset=superfast tune=zerolatency qp-min=30 \
330 key-int-max=15 bframes=2 ! video/x-h264,profile=high ! queue2 ! \
331 mpegtsmux alignment=7 name=mux ! rndbuffersize max=1316 min=1316 ! \
332 udpsink host=239.255.0.1 port=1234 ttl-mc=1 auto-multicast=1 sync=0 \
333 pulsesrc device=$(pactl list | grep -A2 'Source #' | \
334 grep 'Name: .*\.monitor$' | cut -d" " -f2|head -1) ! \
335 audioconvert ! queue2 ! avenc_aac ! queue2 ! mux.
336 </pre></blockquote>
337
338 <p>and this on the Kodi end<p>
339
340 <blockquote><pre>
341 echo udp://@239.255.0.1:1234 \
342 > /storage/videos/screenstream.m3u
343 </pre></blockquote>
344
345 <p>Note the trick to pick a valid pulseaudio source. It might not
346 pick the one you need. This approach will of course lead to trouble
347 if more than one source uses the same multicast port and address.
348 Note the ttl-mc=1 setting, which limit the multicast packages to the
349 local network. If the value is increased, your screen will be
350 broadcasted further, one network "hop" for each increase (read up on
351 multicast to learn more. :)!</p>
352
353 <p>Having cracked how to get Kodi to receive multicast streams, I
354 could use this VLC command to stream to the same multicast address.
355 The image quality is way better than the rtsp approach, but gstreamer
356 seem to be doing a better job.</p>
357
358 <blockquote><pre>
359 cvlc screen:// --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:rtp{mux=ts,dst=239.255.0.1,port=1234,sdp=sap}'
360 </pre></blockquote>
361
362 <p>As usual, if you use Bitcoin and want to show your support of my
363 activities, please send Bitcoin donations to my address
364 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
365
366 </div>
367 <div class="tags">
368
369
370 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/kodi">kodi</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>.
371
372
373 </div>
374 </div>
375 <div class="padding"></div>
376
377 <div class="entry">
378 <div class="title">
379 <a href="http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_in_2018_.html">What is the most supported MIME type in Debian in 2018?</a>
380 </div>
381 <div class="date">
382 9th July 2018
383 </div>
384 <div class="body">
385 <p>Five years ago,
386 <a href="http://people.skolelinux.org/pere/blog/What_is_the_most_supported_MIME_type_in_Debian_.html">I
387 measured what the most supported MIME type in Debian was</a>, by
388 analysing the desktop files in all packages in the archive. Since
389 then, the DEP-11 AppStream system has been put into production, making
390 the task a lot easier. This made me want to repeat the measurement,
391 to see how much things changed. Here are the new numbers, for
392 unstable only this time:
393
394 <p><strong>Debian Unstable:</strong></p>
395
396 <pre>
397 count MIME type
398 ----- -----------------------
399 56 image/jpeg
400 55 image/png
401 49 image/tiff
402 48 image/gif
403 39 image/bmp
404 38 text/plain
405 37 audio/mpeg
406 34 application/ogg
407 33 audio/x-flac
408 32 audio/x-mp3
409 30 audio/x-wav
410 30 audio/x-vorbis+ogg
411 29 image/x-portable-pixmap
412 27 inode/directory
413 27 image/x-portable-bitmap
414 27 audio/x-mpeg
415 26 application/x-ogg
416 25 audio/x-mpegurl
417 25 audio/ogg
418 24 text/html
419 </pre>
420
421 <p>The list was created like this using a sid chroot: "cat
422 /var/lib/apt/lists/*sid*_dep11_Components-amd64.yml.gz| zcat | awk '/^
423 - \S+\/\S+$/ {print $2 }' | sort | uniq -c | sort -nr | head -20"</p>
424
425 <p>It is interesting to see how image formats have passed text/plain
426 as the most announced supported MIME type. These days, thanks to the
427 AppStream system, if you run into a file format you do not know, and
428 want to figure out which packages support the format, you can find the
429 MIME type of the file using "file --mime &lt;filename&gt;", and then
430 look up all packages announcing support for this format in their
431 AppStream metadata (XML or .desktop file) using "appstreamcli
432 what-provides mimetype &lt;mime-type&gt;. For example if you, like
433 me, want to know which packages support inode/directory, you can get a
434 list like this:</p>
435
436 <p><blockquote><pre>
437 % appstreamcli what-provides mimetype inode/directory | grep Package: | sort
438 Package: anjuta
439 Package: audacious
440 Package: baobab
441 Package: cervisia
442 Package: chirp
443 Package: dolphin
444 Package: doublecmd-common
445 Package: easytag
446 Package: enlightenment
447 Package: ephoto
448 Package: filelight
449 Package: gwenview
450 Package: k4dirstat
451 Package: kaffeine
452 Package: kdesvn
453 Package: kid3
454 Package: kid3-qt
455 Package: nautilus
456 Package: nemo
457 Package: pcmanfm
458 Package: pcmanfm-qt
459 Package: qweborf
460 Package: ranger
461 Package: sirikali
462 Package: spacefm
463 Package: spacefm
464 Package: vifm
465 %
466 </pre></blockquote></p>
467
468 <p>Using the same method, I can quickly discover that the Sketchup file
469 format is not yet supported by any package in Debian:</p>
470
471 <p><blockquote><pre>
472 % appstreamcli what-provides mimetype application/vnd.sketchup.skp
473 Could not find component providing 'mimetype::application/vnd.sketchup.skp'.
474 %
475 </pre></blockquote></p>
476
477 <p>Yesterday I used it to figure out which packages support the STL 3D
478 format:</p>
479
480 <p><blockquote><pre>
481 % appstreamcli what-provides mimetype application/sla|grep Package
482 Package: cura
483 Package: meshlab
484 Package: printrun
485 %
486 </pre></blockquote></p>
487
488 <p>PS: A new version of Cura was uploaded to Debian yesterday.</p>
489
490 <p>As usual, if you use Bitcoin and want to show your support of my
491 activities, please send Bitcoin donations to my address
492 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
493
494 </div>
495 <div class="tags">
496
497
498 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>.
499
500
501 </div>
502 </div>
503 <div class="padding"></div>
504
505 <div class="entry">
506 <div class="title">
507 <a href="http://people.skolelinux.org/pere/blog/Debian_APT_upgrade_without_enough_free_space_on_the_disk___.html">Debian APT upgrade without enough free space on the disk...</a>
508 </div>
509 <div class="date">
510 8th July 2018
511 </div>
512 <div class="body">
513 <p>Quite regularly, I let my Debian Sid/Unstable chroot stay untouch
514 for a while, and when I need to update it there is not enough free
515 space on the disk for apt to do a normal 'apt upgrade'. I normally
516 would resolve the issue by doing 'apt install &lt;somepackages&gt;' to
517 upgrade only some of the packages in one batch, until the amount of
518 packages to download fall below the amount of free space available.
519 Today, I had about 500 packages to upgrade, and after a while I got
520 tired of trying to install chunks of packages manually. I concluded
521 that I did not have the spare hours required to complete the task, and
522 decided to see if I could automate it. I came up with this small
523 script which I call 'apt-in-chunks':</p>
524
525 <p><blockquote><pre>
526 #!/bin/sh
527 #
528 # Upgrade packages when the disk is too full to upgrade every
529 # upgradable package in one lump. Fetching packages to upgrade using
530 # apt, and then installing using dpkg, to avoid changing the package
531 # flag for manual/automatic.
532
533 set -e
534
535 ignore() {
536 if [ "$1" ]; then
537 grep -v "$1"
538 else
539 cat
540 fi
541 }
542
543 for p in $(apt list --upgradable | ignore "$@" |cut -d/ -f1 | grep -v '^Listing...'); do
544 echo "Upgrading $p"
545 apt clean
546 apt install --download-only -y $p
547 for f in /var/cache/apt/archives/*.deb; do
548 if [ -e "$f" ]; then
549 dpkg -i /var/cache/apt/archives/*.deb
550 break
551 fi
552 done
553 done
554 </pre></blockquote></p>
555
556 <p>The script will extract the list of packages to upgrade, try to
557 download the packages needed to upgrade one package, install the
558 downloaded packages using dpkg. The idea is to upgrade packages
559 without changing the APT mark for the package (ie the one recording of
560 the package was manually requested or pulled in as a dependency). To
561 use it, simply run it as root from the command line. If it fail, try
562 'apt install -f' to clean up the mess and run the script again. This
563 might happen if the new packages conflict with one of the old
564 packages. dpkg is unable to remove, while apt can do this.</p>
565
566 <p>It take one option, a package to ignore in the list of packages to
567 upgrade. The option to ignore a package is there to be able to skip
568 the packages that are simply too large to unpack. Today this was
569 'ghc', but I have run into other large packages causing similar
570 problems earlier (like TeX).</p>
571
572 <p>Update 2018-07-08: Thanks to Paul Wise, I am aware of two
573 alternative ways to handle this. The "unattended-upgrades
574 --minimal-upgrade-steps" option will try to calculate upgrade sets for
575 each package to upgrade, and then upgrade them in order, smallest set
576 first. It might be a better option than my above mentioned script.
577 Also, "aptutude upgrade" can upgrade single packages, thus avoiding
578 the need for using "dpkg -i" in the script above.</p>
579
580 <p>As usual, if you use Bitcoin and want to show your support of my
581 activities, please send Bitcoin donations to my address
582 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
583
584 </div>
585 <div class="tags">
586
587
588 Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
589
590
591 </div>
592 </div>
593 <div class="padding"></div>
594
595 <p style="text-align: right;"><a href="07.rss"><img src="http://people.skolelinux.org/pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
596 <div id="sidebar">
597
598
599
600 <h2>Archive</h2>
601 <ul>
602
603 <li>2020
604 <ul>
605
606 <li><a href="http://people.skolelinux.org/pere/blog/archive/2020/02/">February (1)</a></li>
607
608 </ul></li>
609
610 <li>2019
611 <ul>
612
613 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
614
615 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
616
617 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
618
619 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
620
621 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
622
623 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
624
625 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
626
627 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
628
629 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
630
631 <li><a href="http://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
632
633 </ul></li>
634
635 <li>2018
636 <ul>
637
638 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
639
640 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
641
642 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
643
644 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
645
646 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
647
648 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
649
650 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
651
652 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
653
654 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
655
656 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
657
658 <li><a href="http://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
659
660 </ul></li>
661
662 <li>2017
663 <ul>
664
665 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
666
667 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
668
669 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
670
671 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
672
673 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
674
675 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
676
677 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
678
679 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
680
681 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
682
683 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
684
685 <li><a href="http://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
686
687 </ul></li>
688
689 <li>2016
690 <ul>
691
692 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
693
694 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
695
696 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
697
698 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
699
700 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
701
702 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
703
704 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
705
706 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
707
708 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
709
710 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
711
712 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
713
714 <li><a href="http://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
715
716 </ul></li>
717
718 <li>2015
719 <ul>
720
721 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
722
723 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
724
725 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
726
727 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
728
729 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
730
731 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
732
733 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
734
735 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
736
737 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
738
739 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
740
741 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
742
743 <li><a href="http://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
744
745 </ul></li>
746
747 <li>2014
748 <ul>
749
750 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
751
752 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
753
754 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
755
756 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
757
758 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
759
760 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
761
762 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
763
764 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
765
766 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
767
768 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
769
770 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
771
772 <li><a href="http://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
773
774 </ul></li>
775
776 <li>2013
777 <ul>
778
779 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
780
781 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
782
783 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
784
785 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
786
787 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
788
789 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
790
791 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
792
793 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
794
795 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
796
797 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
798
799 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
800
801 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
802
803 </ul></li>
804
805 <li>2012
806 <ul>
807
808 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
809
810 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
811
812 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
813
814 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
815
816 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
817
818 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
819
820 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
821
822 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
823
824 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
825
826 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
827
828 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
829
830 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
831
832 </ul></li>
833
834 <li>2011
835 <ul>
836
837 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
838
839 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
840
841 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
842
843 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
844
845 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
846
847 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
848
849 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
850
851 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
852
853 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
854
855 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
856
857 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
858
859 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
860
861 </ul></li>
862
863 <li>2010
864 <ul>
865
866 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
867
868 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
869
870 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
871
872 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
873
874 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
875
876 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
877
878 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
879
880 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
881
882 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
883
884 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
885
886 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
887
888 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
889
890 </ul></li>
891
892 <li>2009
893 <ul>
894
895 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
896
897 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
898
899 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
900
901 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
902
903 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
904
905 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
906
907 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
908
909 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
910
911 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
912
913 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
914
915 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
916
917 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
918
919 </ul></li>
920
921 <li>2008
922 <ul>
923
924 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
925
926 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
927
928 </ul></li>
929
930 </ul>
931
932
933
934 <h2>Tags</h2>
935 <ul>
936
937 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (16)</a></li>
938
939 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
940
941 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
942
943 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
944
945 <li><a href="http://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (8)</a></li>
946
947 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (11)</a></li>
948
949 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
950
951 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
952
953 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (2)</a></li>
954
955 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (168)</a></li>
956
957 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (158)</a></li>
958
959 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (4)</a></li>
960
961 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
962
963 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld">dld (17)</a></li>
964
965 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (26)</a></li>
966
967 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
968
969 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (411)</a></li>
970
971 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
972
973 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
974
975 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
976
977 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
978
979 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
980
981 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
982
983 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (42)</a></li>
984
985 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
986
987 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (22)</a></li>
988
989 <li><a href="http://people.skolelinux.org/pere/blog/tags/kodi">kodi (4)</a></li>
990
991 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
992
993 <li><a href="http://people.skolelinux.org/pere/blog/tags/lego">lego (4)</a></li>
994
995 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
996
997 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
998
999 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1000
1001 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1002
1003 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (42)</a></li>
1004
1005 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (12)</a></li>
1006
1007 <li><a href="http://people.skolelinux.org/pere/blog/tags/noark5">noark5 (20)</a></li>
1008
1009 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (311)</a></li>
1010
1011 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (196)</a></li>
1012
1013 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (37)</a></li>
1014
1015 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1016
1017 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (75)</a></li>
1018
1019 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (111)</a></li>
1020
1021 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
1022
1023 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1024
1025 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1026
1027 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1028
1029 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (12)</a></li>
1030
1031 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1032
1033 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
1034
1035 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1036
1037 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (56)</a></li>
1038
1039 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1040
1041 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
1042
1043 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (69)</a></li>
1044
1045 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (6)</a></li>
1046
1047 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (12)</a></li>
1048
1049 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (57)</a></li>
1050
1051 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (4)</a></li>
1052
1053 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1054
1055 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
1056
1057 <li><a href="http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (17)</a></li>
1058
1059 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (73)</a></li>
1060
1061 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1062
1063 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
1064
1065 </ul>
1066
1067
1068 </div>
1069 <p style="text-align: right">
1070 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1071 </p>
1072
1073 </body>
1074 </html>