]> pere.pagekite.me Git - homepage.git/blob - blog/index.html
Gjør interne lenker mer unike og oppdater publiseringstidspunkt.
[homepage.git] / blog / 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</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="https://people.skolelinux.org/pere/blog/index.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21
22 <div class="entry">
23 <div class="title"><a href="https://people.skolelinux.org/pere/blog/New_and_improved_sqlcipher_in_Debian_for_accessing_Signal_database.html">New and improved sqlcipher in Debian for accessing Signal database</a></div>
24 <div class="date">12th November 2023</div>
25 <div class="body"><p>For a while now I wanted to have direct access to the
26 <a href="https://signal.org/">Signal</a> database of messages and
27 channels of my Desktop edition of Signal. I prefer the enforced end
28 to end encryption of Signal these days for my communication with
29 friends and family, to increase the level of safety and privacy as
30 well as raising the cost of the mass surveillance government and
31 non-government entities practice these days. In August I came across
32 a nice
33 <a href="https://www.yoranbrondsema.com/post/the-guide-to-extracting-statistics-from-your-signal-conversations/">recipe
34 on how to use sqlcipher to extract statistics from the Signal
35 database</a> explaining how to do this. Unfortunately this did not
36 work with the version of sqlcipher in Debian. The
37 <a href="http://tracker.debian.org/sqlcipher/">sqlcipher</a>
38 package is a "fork" of the sqlite package with added support for
39 encrypted databases. Sadly the current Debian maintainer
40 <a href="https://bugs.debian.org/961598">announced more than three
41 years ago that he did not have time to maintain sqlcipher</a>, so it
42 seemed unlikely to be upgraded by the maintainer. I was reluctant to
43 take on the job myself, as I have very limited experience maintaining
44 shared libraries in Debian. After waiting and hoping for a few
45 months, I gave up the last week, and set out to update the package. In
46 the process I orphaned it to make it more obvious for the next person
47 looking at it that the package need proper maintenance.</p>
48
49 <p>The version in Debian was around five years old, and quite a lot of
50 changes had taken place upstream into the Debian maintenance git
51 repository. After spending a few days importing the new upstream
52 versions, realising that upstream did not care much for SONAME
53 versioning as I saw library symbols being both added and removed with
54 minor version number changes to the project, I concluded that I had to
55 do a SONAME bump of the library package to avoid surprising the
56 reverse dependencies. I even added a simple
57 autopkgtest script to ensure the package work as intended. Dug deep
58 into the hole of learning shared library maintenance, I set out a few
59 days ago to upload the new version to Debian experimental to see what
60 the quality assurance framework in Debian had to say about the result.
61 The feedback told me the pacakge was not too shabby, and yesterday I
62 uploaded the latest version to Debian unstable. It should enter
63 testing today or tomorrow, perhaps delayed by
64 <a href="https://bugs.debian.org/1055812">a small library
65 transition</a>.</p>
66
67 <p>Armed with a new version of sqlcipher, I can now have a look at the
68 SQL database in ~/.config/Signal/sql/db.sqlite. First, one need to
69 fetch the encryption key from the Signal configuration using this
70 simple JSON extraction command:</p>
71
72 <pre>/usr/bin/jq -r '."key"' ~/.config/Signal/config.json</pre>
73
74 <p>Assuming the result from that command is 'secretkey', which is a
75 hexadecimal number representing the key used to encrypt the database.
76 Next, one can now connect to the database and inject the encryption
77 key for access via SQL to fetch information from the database. Here
78 is an example dumping the database structure:</p>
79
80 <pre>
81 % sqlcipher ~/.config/Signal/sql/db.sqlite
82 sqlite> PRAGMA key = "x'secretkey'";
83 sqlite> .schema
84 CREATE TABLE sqlite_stat1(tbl,idx,stat);
85 CREATE TABLE conversations(
86 id STRING PRIMARY KEY ASC,
87 json TEXT,
88
89 active_at INTEGER,
90 type STRING,
91 members TEXT,
92 name TEXT,
93 profileName TEXT
94 , profileFamilyName TEXT, profileFullName TEXT, e164 TEXT, serviceId TEXT, groupId TEXT, profileLastFetchedAt INTEGER);
95 CREATE TABLE identityKeys(
96 id STRING PRIMARY KEY ASC,
97 json TEXT
98 );
99 CREATE TABLE items(
100 id STRING PRIMARY KEY ASC,
101 json TEXT
102 );
103 CREATE TABLE sessions(
104 id TEXT PRIMARY KEY,
105 conversationId TEXT,
106 json TEXT
107 , ourServiceId STRING, serviceId STRING);
108 CREATE TABLE attachment_downloads(
109 id STRING primary key,
110 timestamp INTEGER,
111 pending INTEGER,
112 json TEXT
113 );
114 CREATE TABLE sticker_packs(
115 id TEXT PRIMARY KEY,
116 key TEXT NOT NULL,
117
118 author STRING,
119 coverStickerId INTEGER,
120 createdAt INTEGER,
121 downloadAttempts INTEGER,
122 installedAt INTEGER,
123 lastUsed INTEGER,
124 status STRING,
125 stickerCount INTEGER,
126 title STRING
127 , attemptedStatus STRING, position INTEGER DEFAULT 0 NOT NULL, storageID STRING, storageVersion INTEGER, storageUnknownFields BLOB, storageNeedsSync
128 INTEGER DEFAULT 0 NOT NULL);
129 CREATE TABLE stickers(
130 id INTEGER NOT NULL,
131 packId TEXT NOT NULL,
132
133 emoji STRING,
134 height INTEGER,
135 isCoverOnly INTEGER,
136 lastUsed INTEGER,
137 path STRING,
138 width INTEGER,
139
140 PRIMARY KEY (id, packId),
141 CONSTRAINT stickers_fk
142 FOREIGN KEY (packId)
143 REFERENCES sticker_packs(id)
144 ON DELETE CASCADE
145 );
146 CREATE TABLE sticker_references(
147 messageId STRING,
148 packId TEXT,
149 CONSTRAINT sticker_references_fk
150 FOREIGN KEY(packId)
151 REFERENCES sticker_packs(id)
152 ON DELETE CASCADE
153 );
154 CREATE TABLE emojis(
155 shortName TEXT PRIMARY KEY,
156 lastUsage INTEGER
157 );
158 CREATE TABLE messages(
159 rowid INTEGER PRIMARY KEY ASC,
160 id STRING UNIQUE,
161 json TEXT,
162 readStatus INTEGER,
163 expires_at INTEGER,
164 sent_at INTEGER,
165 schemaVersion INTEGER,
166 conversationId STRING,
167 received_at INTEGER,
168 source STRING,
169 hasAttachments INTEGER,
170 hasFileAttachments INTEGER,
171 hasVisualMediaAttachments INTEGER,
172 expireTimer INTEGER,
173 expirationStartTimestamp INTEGER,
174 type STRING,
175 body TEXT,
176 messageTimer INTEGER,
177 messageTimerStart INTEGER,
178 messageTimerExpiresAt INTEGER,
179 isErased INTEGER,
180 isViewOnce INTEGER,
181 sourceServiceId TEXT, serverGuid STRING NULL, sourceDevice INTEGER, storyId STRING, isStory INTEGER
182 GENERATED ALWAYS AS (type IS 'story'), isChangeCreatedByUs INTEGER NOT NULL DEFAULT 0, isTimerChangeFromSync INTEGER
183 GENERATED ALWAYS AS (
184 json_extract(json, '$.expirationTimerUpdate.fromSync') IS 1
185 ), seenStatus NUMBER default 0, storyDistributionListId STRING, expiresAt INT
186 GENERATED ALWAYS
187 AS (ifnull(
188 expirationStartTimestamp + (expireTimer * 1000),
189 9007199254740991
190 )), shouldAffectActivity INTEGER
191 GENERATED ALWAYS AS (
192 type IS NULL
193 OR
194 type NOT IN (
195 'change-number-notification',
196 'contact-removed-notification',
197 'conversation-merge',
198 'group-v1-migration',
199 'keychange',
200 'message-history-unsynced',
201 'profile-change',
202 'story',
203 'universal-timer-notification',
204 'verified-change'
205 )
206 ), shouldAffectPreview INTEGER
207 GENERATED ALWAYS AS (
208 type IS NULL
209 OR
210 type NOT IN (
211 'change-number-notification',
212 'contact-removed-notification',
213 'conversation-merge',
214 'group-v1-migration',
215 'keychange',
216 'message-history-unsynced',
217 'profile-change',
218 'story',
219 'universal-timer-notification',
220 'verified-change'
221 )
222 ), isUserInitiatedMessage INTEGER
223 GENERATED ALWAYS AS (
224 type IS NULL
225 OR
226 type NOT IN (
227 'change-number-notification',
228 'contact-removed-notification',
229 'conversation-merge',
230 'group-v1-migration',
231 'group-v2-change',
232 'keychange',
233 'message-history-unsynced',
234 'profile-change',
235 'story',
236 'universal-timer-notification',
237 'verified-change'
238 )
239 ), mentionsMe INTEGER NOT NULL DEFAULT 0, isGroupLeaveEvent INTEGER
240 GENERATED ALWAYS AS (
241 type IS 'group-v2-change' AND
242 json_array_length(json_extract(json, '$.groupV2Change.details')) IS 1 AND
243 json_extract(json, '$.groupV2Change.details[0].type') IS 'member-remove' AND
244 json_extract(json, '$.groupV2Change.from') IS NOT NULL AND
245 json_extract(json, '$.groupV2Change.from') IS json_extract(json, '$.groupV2Change.details[0].aci')
246 ), isGroupLeaveEventFromOther INTEGER
247 GENERATED ALWAYS AS (
248 isGroupLeaveEvent IS 1
249 AND
250 isChangeCreatedByUs IS 0
251 ), callId TEXT
252 GENERATED ALWAYS AS (
253 json_extract(json, '$.callId')
254 ));
255 CREATE TABLE sqlite_stat4(tbl,idx,neq,nlt,ndlt,sample);
256 CREATE TABLE jobs(
257 id TEXT PRIMARY KEY,
258 queueType TEXT STRING NOT NULL,
259 timestamp INTEGER NOT NULL,
260 data STRING TEXT
261 );
262 CREATE TABLE reactions(
263 conversationId STRING,
264 emoji STRING,
265 fromId STRING,
266 messageReceivedAt INTEGER,
267 targetAuthorAci STRING,
268 targetTimestamp INTEGER,
269 unread INTEGER
270 , messageId STRING);
271 CREATE TABLE senderKeys(
272 id TEXT PRIMARY KEY NOT NULL,
273 senderId TEXT NOT NULL,
274 distributionId TEXT NOT NULL,
275 data BLOB NOT NULL,
276 lastUpdatedDate NUMBER NOT NULL
277 );
278 CREATE TABLE unprocessed(
279 id STRING PRIMARY KEY ASC,
280 timestamp INTEGER,
281 version INTEGER,
282 attempts INTEGER,
283 envelope TEXT,
284 decrypted TEXT,
285 source TEXT,
286 serverTimestamp INTEGER,
287 sourceServiceId STRING
288 , serverGuid STRING NULL, sourceDevice INTEGER, receivedAtCounter INTEGER, urgent INTEGER, story INTEGER);
289 CREATE TABLE sendLogPayloads(
290 id INTEGER PRIMARY KEY ASC,
291
292 timestamp INTEGER NOT NULL,
293 contentHint INTEGER NOT NULL,
294 proto BLOB NOT NULL
295 , urgent INTEGER, hasPniSignatureMessage INTEGER DEFAULT 0 NOT NULL);
296 CREATE TABLE sendLogRecipients(
297 payloadId INTEGER NOT NULL,
298
299 recipientServiceId STRING NOT NULL,
300 deviceId INTEGER NOT NULL,
301
302 PRIMARY KEY (payloadId, recipientServiceId, deviceId),
303
304 CONSTRAINT sendLogRecipientsForeignKey
305 FOREIGN KEY (payloadId)
306 REFERENCES sendLogPayloads(id)
307 ON DELETE CASCADE
308 );
309 CREATE TABLE sendLogMessageIds(
310 payloadId INTEGER NOT NULL,
311
312 messageId STRING NOT NULL,
313
314 PRIMARY KEY (payloadId, messageId),
315
316 CONSTRAINT sendLogMessageIdsForeignKey
317 FOREIGN KEY (payloadId)
318 REFERENCES sendLogPayloads(id)
319 ON DELETE CASCADE
320 );
321 CREATE TABLE preKeys(
322 id STRING PRIMARY KEY ASC,
323 json TEXT
324 , ourServiceId NUMBER
325 GENERATED ALWAYS AS (json_extract(json, '$.ourServiceId')));
326 CREATE TABLE signedPreKeys(
327 id STRING PRIMARY KEY ASC,
328 json TEXT
329 , ourServiceId NUMBER
330 GENERATED ALWAYS AS (json_extract(json, '$.ourServiceId')));
331 CREATE TABLE badges(
332 id TEXT PRIMARY KEY,
333 category TEXT NOT NULL,
334 name TEXT NOT NULL,
335 descriptionTemplate TEXT NOT NULL
336 );
337 CREATE TABLE badgeImageFiles(
338 badgeId TEXT REFERENCES badges(id)
339 ON DELETE CASCADE
340 ON UPDATE CASCADE,
341 'order' INTEGER NOT NULL,
342 url TEXT NOT NULL,
343 localPath TEXT,
344 theme TEXT NOT NULL
345 );
346 CREATE TABLE storyReads (
347 authorId STRING NOT NULL,
348 conversationId STRING NOT NULL,
349 storyId STRING NOT NULL,
350 storyReadDate NUMBER NOT NULL,
351
352 PRIMARY KEY (authorId, storyId)
353 );
354 CREATE TABLE storyDistributions(
355 id STRING PRIMARY KEY NOT NULL,
356 name TEXT,
357
358 senderKeyInfoJson STRING
359 , deletedAtTimestamp INTEGER, allowsReplies INTEGER, isBlockList INTEGER, storageID STRING, storageVersion INTEGER, storageUnknownFields BLOB, storageNeedsSync INTEGER);
360 CREATE TABLE storyDistributionMembers(
361 listId STRING NOT NULL REFERENCES storyDistributions(id)
362 ON DELETE CASCADE
363 ON UPDATE CASCADE,
364 serviceId STRING NOT NULL,
365
366 PRIMARY KEY (listId, serviceId)
367 );
368 CREATE TABLE uninstalled_sticker_packs (
369 id STRING NOT NULL PRIMARY KEY,
370 uninstalledAt NUMBER NOT NULL,
371 storageID STRING,
372 storageVersion NUMBER,
373 storageUnknownFields BLOB,
374 storageNeedsSync INTEGER NOT NULL
375 );
376 CREATE TABLE groupCallRingCancellations(
377 ringId INTEGER PRIMARY KEY,
378 createdAt INTEGER NOT NULL
379 );
380 CREATE TABLE IF NOT EXISTS 'messages_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
381 CREATE TABLE IF NOT EXISTS 'messages_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
382 CREATE TABLE IF NOT EXISTS 'messages_fts_content'(id INTEGER PRIMARY KEY, c0);
383 CREATE TABLE IF NOT EXISTS 'messages_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
384 CREATE TABLE IF NOT EXISTS 'messages_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
385 CREATE TABLE edited_messages(
386 messageId STRING REFERENCES messages(id)
387 ON DELETE CASCADE,
388 sentAt INTEGER,
389 readStatus INTEGER
390 , conversationId STRING);
391 CREATE TABLE mentions (
392 messageId REFERENCES messages(id) ON DELETE CASCADE,
393 mentionAci STRING,
394 start INTEGER,
395 length INTEGER
396 );
397 CREATE TABLE kyberPreKeys(
398 id STRING PRIMARY KEY NOT NULL,
399 json TEXT NOT NULL, ourServiceId NUMBER
400 GENERATED ALWAYS AS (json_extract(json, '$.ourServiceId')));
401 CREATE TABLE callsHistory (
402 callId TEXT PRIMARY KEY,
403 peerId TEXT NOT NULL, -- conversation id (legacy) | uuid | groupId | roomId
404 ringerId TEXT DEFAULT NULL, -- ringer uuid
405 mode TEXT NOT NULL, -- enum "Direct" | "Group"
406 type TEXT NOT NULL, -- enum "Audio" | "Video" | "Group"
407 direction TEXT NOT NULL, -- enum "Incoming" | "Outgoing
408 -- Direct: enum "Pending" | "Missed" | "Accepted" | "Deleted"
409 -- Group: enum "GenericGroupCall" | "OutgoingRing" | "Ringing" | "Joined" | "Missed" | "Declined" | "Accepted" | "Deleted"
410 status TEXT NOT NULL,
411 timestamp INTEGER NOT NULL,
412 UNIQUE (callId, peerId) ON CONFLICT FAIL
413 );
414 [ dropped all indexes to save space in this blog post ]
415 CREATE TRIGGER messages_on_view_once_update AFTER UPDATE ON messages
416 WHEN
417 new.body IS NOT NULL AND new.isViewOnce = 1
418 BEGIN
419 DELETE FROM messages_fts WHERE rowid = old.rowid;
420 END;
421 CREATE TRIGGER messages_on_insert AFTER INSERT ON messages
422 WHEN new.isViewOnce IS NOT 1 AND new.storyId IS NULL
423 BEGIN
424 INSERT INTO messages_fts
425 (rowid, body)
426 VALUES
427 (new.rowid, new.body);
428 END;
429 CREATE TRIGGER messages_on_delete AFTER DELETE ON messages BEGIN
430 DELETE FROM messages_fts WHERE rowid = old.rowid;
431 DELETE FROM sendLogPayloads WHERE id IN (
432 SELECT payloadId FROM sendLogMessageIds
433 WHERE messageId = old.id
434 );
435 DELETE FROM reactions WHERE rowid IN (
436 SELECT rowid FROM reactions
437 WHERE messageId = old.id
438 );
439 DELETE FROM storyReads WHERE storyId = old.storyId;
440 END;
441 CREATE VIRTUAL TABLE messages_fts USING fts5(
442 body,
443 tokenize = 'signal_tokenizer'
444 );
445 CREATE TRIGGER messages_on_update AFTER UPDATE ON messages
446 WHEN
447 (new.body IS NULL OR old.body IS NOT new.body) AND
448 new.isViewOnce IS NOT 1 AND new.storyId IS NULL
449 BEGIN
450 DELETE FROM messages_fts WHERE rowid = old.rowid;
451 INSERT INTO messages_fts
452 (rowid, body)
453 VALUES
454 (new.rowid, new.body);
455 END;
456 CREATE TRIGGER messages_on_insert_insert_mentions AFTER INSERT ON messages
457 BEGIN
458 INSERT INTO mentions (messageId, mentionAci, start, length)
459
460 SELECT messages.id, bodyRanges.value ->> 'mentionAci' as mentionAci,
461 bodyRanges.value ->> 'start' as start,
462 bodyRanges.value ->> 'length' as length
463 FROM messages, json_each(messages.json ->> 'bodyRanges') as bodyRanges
464 WHERE bodyRanges.value ->> 'mentionAci' IS NOT NULL
465
466 AND messages.id = new.id;
467 END;
468 CREATE TRIGGER messages_on_update_update_mentions AFTER UPDATE ON messages
469 BEGIN
470 DELETE FROM mentions WHERE messageId = new.id;
471 INSERT INTO mentions (messageId, mentionAci, start, length)
472
473 SELECT messages.id, bodyRanges.value ->> 'mentionAci' as mentionAci,
474 bodyRanges.value ->> 'start' as start,
475 bodyRanges.value ->> 'length' as length
476 FROM messages, json_each(messages.json ->> 'bodyRanges') as bodyRanges
477 WHERE bodyRanges.value ->> 'mentionAci' IS NOT NULL
478
479 AND messages.id = new.id;
480 END;
481 sqlite>
482 </pre>
483
484 <p>Finally I have the tool needed to inspect and process Signal
485 messages that I need, without using the vendor provided client. Now
486 on to transforming it to a more useful format.</p>
487
488 <p>As usual, if you use Bitcoin and want to show your support of my
489 activities, please send Bitcoin donations to my address
490 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
491 </div>
492 <div class="tags">
493
494
495 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>, <a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>, <a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance</a>.
496
497
498 </div>
499 </div>
500 <div class="padding"></div>
501
502 <div class="entry">
503 <div class="title"><a href="https://people.skolelinux.org/pere/blog/New_chrpath_release_0_17.html">New chrpath release 0.17</a></div>
504 <div class="date">10th November 2023</div>
505 <div class="body"><p>The chrpath package provide a simple command line tool to remove or
506 modify the rpath or runpath of compiled ELF program. It is almost 10
507 years since I updated the code base, but I stumbled over the tool
508 today, and decided it was time to move the code base from Subversion
509 to git and find a new home for it, as the previous one (Debian Alioth)
510 has been shut down. I decided to go with
511 <a href="https://codeberg.org/">Codeberg</a> this time, as it is my git
512 service of choice these days, did a quick and dirty migration to git
513 and updated the code with a few patches I found in the Debian bug
514 tracker. These are the release notes:</p>
515
516 <p>New in 0.17 released 2023-11-10:</p>
517
518 <ul>
519 <li>Moved project to Codeberg, as Alioth is shut down.</li>
520 <li>Add Solaris support (use &lt;sys/byteorder.h> instead of &lt;byteswap.h>).
521 Patch from Rainer Orth.</li>
522 <li>Added missing newline from printf() line. Patch from Frank Dana.</li>
523 <li>Corrected handling of multiple ELF sections. Patch from Frank Dana.</li>
524 <li>Updated build rules for .deb. Partly based on patch from djcj.</li>
525 </ul>
526
527 <p>The latest edition is tagged and available from
528 <a href="https://codeberg.org/pere/chrpath">https://codeberg.org/pere/chrpath</a>.
529
530 <p>As usual, if you use Bitcoin and want to show your support of my
531 activities, please send Bitcoin donations to my address
532 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
533 </div>
534 <div class="tags">
535
536
537 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath</a>, <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>.
538
539
540 </div>
541 </div>
542 <div class="padding"></div>
543
544 <div class="entry">
545 <div class="title"><a href="https://people.skolelinux.org/pere/blog/Test_framework_for_DocBook_processors___formatters.html">Test framework for DocBook processors / formatters</a></div>
546 <div class="date"> 5th November 2023</div>
547 <div class="body"><p>All the books I have published so far has been using
548 <a href="https://docbook.org/">DocBook</a> somewhere in the process.
549 For the first book, the source format was DocBook, while for every
550 later book it was an intermediate format used as the stepping stone to
551 be able to present the same manuscript in several formats, on paper,
552 as ebook in ePub format, as a HTML page and as a PDF file either for
553 paper production or for Internet consumption. This is made possible
554 with a wide variety of free software tools with DocBook support in
555 Debian. The source format of later books have been docx via rst,
556 Markdown, Filemaker and Asciidoc, and for all of these I was able to
557 generate a suitable DocBook file for further processing using
558 <a href="https://tracker.debian.org/pkg/pandoc">pandoc</a>,
559 <a href="https://tracker.debian.org/pkg/asciidoc">a2x</a> and
560 <a href="https://tracker.debian.org/pkg/asciidoctor">asciidoctor</a>,
561 as well as rendering using
562 <a href="https://tracker.debian.org/pkg/xmlto">xmlto</a>,
563 <a href="https://tracker.debian.org/pkg/dbtoepub">dbtoepub</a>,
564 <a href="https://tracker.debian.org/pkg/dblatex">dblatex</a>,
565 <a href="https://tracker.debian.org/pkg/docbook-xsl">docbook-xsl</a> and
566 <a href="https://tracker.debian.org/pkg/fop">fop</a>.</p>
567
568 <p>Most of the <a href="http://www.hungry.com/~pere/publisher/">books I
569 have published</a> are translated books, with English as the source
570 language. The use of
571 <a href="https://tracker.debian.org/pkg/po4a">po4a</a> to
572 handle translations using the gettext PO format has been a blessing,
573 but publishing translated books had triggered the need to ensure the
574 DocBook tools handle relevant languages correctly. For every new
575 language I have published, I had to submit patches dblatex, dbtoepub
576 and docbook-xsl fixing incorrect language and country specific issues
577 in the framework themselves. Typically this has been missing keywords
578 like 'figure' or sort ordering of index entries. After a while it
579 became tiresome to only discover issues like this by accident, and I
580 decided to write a DocBook "test framework" exercising various
581 features of DocBook and allowing me to see all features exercised for
582 a given language. It consist of a set of DocBook files, a version 4
583 book, a version 5 book, a v4 book set, a v4 selection of problematic
584 tables, one v4 testing sidefloat and finally one v4 testing a book of
585 articles. The DocBook files are accompanied with a set of build rules
586 for building PDF using dblatex and docbook-xsl/fop, HTML using xmlto
587 or docbook-xsl and epub using dbtoepub. The result is a set of files
588 visualizing footnotes, indexes, table of content list, figures,
589 formulas and other DocBook features, allowing for a quick review on
590 the completeness of the given locale settings. To build with a
591 different language setting, all one need to do is edit the lang= value
592 in the .xml file to pick a different ISO 639 code value and run
593 'make'.</p>
594
595 <p>The <a href="https://codeberg.org/pere/docbook-example/">test framework
596 source code</a> is available from Codeberg, and a generated set of
597 presentations of the various examples is available as Codeberg static
598 web pages at
599 <a href="https://pere.codeberg.page/docbook-example/">https://pere.codeberg.page/docbook-example/</a>.
600 Using this test framework I have been able to discover and report
601 several bugs and missing features in various tools, and got a lot of
602 them fixed. For example I got Northern Sami keywords added to both
603 docbook-xsl and dblatex, fixed several typos in Norwegian bokmål and
604 Norwegian Nynorsk, support for non-ascii title IDs added to pandoc,
605 Norwegian index sorting support fixed in xindy and initial Norwegian
606 Bokmål support added to dblatex. Some issues still remains, though.
607 Default index sorting rules are still broken in several tools, so the
608 Norwegian letters æ, ø and å are more often than not sorted properly
609 in the book index.</p>
610
611 <p>The test framework recently received some more polish, as part of
612 publishing my latest book. This book contained a lot of fairly
613 complex tables, which exposed bugs in some of the tools. This made me
614 add a new test file with various tables, as well as spend some time to
615 brush up the build rules. My goal is for the test framework to
616 exercise all DocBook features to make it easier to see which features
617 work with different processors, and hopefully get them all to support
618 the full set of DocBook features. Feel free to send patches to extend
619 the test set, and test it with your favorite DocBook processor.
620 Please visit these two URLs to learn more:</p>
621
622 <ul>
623 <li><a href="https://codeberg.org/pere/docbook-example/">https://codeberg.org/pere/docbook-example/</a></li>
624 <li><a href="https://pere.codeberg.page/docbook-example/">https://pere.codeberg.page/docbook-example/</a></li>
625 </ul>
626
627 <p>If you want to learn more on Docbook and translations, I recommend
628 having a look at the <a href="https://docbook.org/">the DocBook
629 web site</a>,
630 <a href="https://doccookbook.sourceforge.net/html/en/">the DoCookBook
631 site<a/> and my earlier blog post on
632 <a href="https://people.skolelinux.org/pere/blog/From_English_wiki_to_translated_PDF_and_epub_via_Docbook.html">how
633 the Skolelinux project process and translate documentation</a>, a talk I gave earlier this year on
634 <a href="https://www.nuug.no/aktiviteter/20230314-oversetting-og-publisering-av-b%c3%b8ker-med-fri-programvare/">how
635 to translate and publish books using free software</a> (Norwegian
636 only).</p>
637
638 <!--
639
640 https://github.com/docbook/xslt10-stylesheets/issues/205 (docbook-xsl: sme support)
641 https://bugs.debian.org/968437 (xindy: index sorting rules for nb/nn)
642 https://bugs.debian.org/856123 (pandoc: markdown to docbook with non-english titles)
643 https://bugs.debian.org/864813 (dblatex: missing nb words)
644 https://bugs.debian.org/756386 (dblatex: index sorting rules for nb/nn)
645 https://bugs.debian.org/796871 (dbtoepub: index sorting rules for nb/nn)
646 https://bugs.debian.org/792616 (dblatex: PDF metadata)
647 https://bugs.debian.org/686908 (docbook-xsl: index sorting rules for nb/nn)
648 https://sourceforge.net/tracker/?func=detail&atid=373747&aid=3556630&group_id=21935 (docbook-xsl: nb/nn support)
649 https://bugs.debian.org/684391 (dblatex: initial nb support)
650
651 -->
652
653 <p>As usual, if you use Bitcoin and want to show your support of my
654 activities, please send Bitcoin donations to my address
655 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
656 </div>
657 <div class="tags">
658
659
660 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>.
661
662
663 </div>
664 </div>
665 <div class="padding"></div>
666
667 <div class="entry">
668 <div class="title"><a href="https://people.skolelinux.org/pere/blog/_Virkninger_av_angrefristloven___hovedfagsoppgaven_som_fikk_endret_en_lov.html">«Virkninger av angrefristloven», hovedfagsoppgaven som fikk endret en lov</a></div>
669 <div class="date">29th October 2023</div>
670 <div class="body"><img src="http://people.skolelinux.org/pere/blog/images/2023-10-29-bok-angrefrist.svg" width="20%" align="center"></a>
671
672 <p>I 1979 leverte Ole-Erik Yrvin en hovedfagsoppgave for Cand. Scient.
673 ved Institutt for sosiologi på Universitetet i Oslo på oppdrag fra
674 Forbruker- og administrasjonsdepartementet. Oppgaven evaluerte
675 Angrefristloven fra 1972, og det han oppdaget førte til at loven ble
676 endret fire år senere.</p>
677
678 <p>Jeg har kjent Ole-Erik en stund, og synes det var trist at hans
679 oppgave ikke lenger er tilgjengelig, hverken fra oppdragsgiver
680 eller fra universitetet. Hans forsøk på å få den avbildet og lagt
681 ut på Internett har vist seg fånyttes, så derfor tilbød jeg meg for
682 en stund tilbake å publisere den og gjøre den tilgjengelig med
683 fribruksvilkår på Internett. Det er nå klart, og hovedfagsoppgaven
684 er tilgjengelig blant annet via <a
685 href="http://www.hungry.com/~pere/publisher/">min liste over
686 publiserte bøker</a>, både som nettside,
687 <a href="https://www.lulu.com/search?contributor=Ole-Erik+Yrvin">digital
688 bok i ePub-format og på papir fra lulu.com</a>. Jeg regner med at
689 den også vil dukke opp på nettbokhandlere i løpet av en måned eller
690 to.</p>
691
692 <p>Alle tabeller og figurer er gjenskapt for bedre lesbarhet, noen
693 skrivefeil rettet opp og mange referanser har fått flere detaljer
694 som ISBN-nummer og DOI-referanse. Selv om jeg ikke regner med at
695 dette blir en kioskvelter, så håper jeg denne nye utgaven kan komme
696 fremtiden til glede.</p>
697
698 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
699 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
700 til min adresse
701 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>. Merk,
702 betaling med bitcoin er ikke anonymt. :)</p>
703 </div>
704 <div class="tags">
705
706
707 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook</a>, <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>.
708
709
710 </div>
711 </div>
712 <div class="padding"></div>
713
714 <div class="entry">
715 <div class="title"><a href="https://people.skolelinux.org/pere/blog/_underordnet_tjenestemann_blir_inhabil_fordi_en_overordnet_er_inhabil__.html">«underordnet tjenestemann blir inhabil fordi en overordnet er inhabil».</a></div>
716 <div class="date"> 7th September 2023</div>
717 <div class="body"><p>Medlemmene av Norges regjering har demonstert de siste månedene at
718 habilitetsvureringer ikke er deres sterke side og det gjelder både
719 Arbeiderpartiets og Senterpartiers representater. Det er heldigvis
720 enklere i det private, da inhabilitetsreglene kun gjelder de som
721 jobber for folket, ikke seg selv. Sist ut er utenriksminister
722 Huitfeldt. I går kom nyheten om at
723 <a href="https://www.nrk.no/nyheter/riksadvokaten_-okokrim-nestsjef-kan-behandle-huitfeldt-saken-1.16545162">Riksadvokaten
724 har konkludert med at nestsjefen i Økokrim kan behandle sak om
725 habilitet og innsidekunnskap</a> for Huitfeldt, på tross av at hans
726 overordnede, sjefen for Økokrim, har meldt seg inhabil i saken. Dette
727 er litt rart. I veilednigen
728 «<a href="https://www.regjeringen.no/globalassets/upload/krd/vedlegg/komm/veiledere/habilitet_i_kommuner_og_fylkeskommuner.pdf">Habilitet
729 i kommuner og fylkeskommuner</a>» av Kommunal- og regionaldepartementet
730 forteller de hva som gjelder, riktig nok gjelder veiledningen ikke for
731 Økokrim som jo ikke er kommune eller fylkeskommune, men jeg får ikke
732 inntrykk av at dette er regler som kun gjelder for kommune og
733 fylkeskommune:
734
735 <blockquote>
736 <p>«<strong>2.1 Oversikt over inhabilitetsgrunnlagene</strong>
737
738 <p>De alminnelige reglene om inhabilitet for den offentlige
739 forvaltningen er gitt i
740 <a href="https://lovdata.no/dokument/NL/lov/1967-02-10/KAPITTEL_2#KAPITTEL_2">forvaltningsloven
741 §§ 6 til 10</a>. Forvaltningslovens hovedregel om inhabilitet framgår
742 av § 6. Her er det gitt tre ulike grunnlag som kan føre til at en
743 tjenestemann eller folkevalgt blir inhabil. I § 6 første ledd
744 bokstavene a til e er det oppstilt konkrete tilknytningsforhold mellom
745 tjenestemannen og saken eller sakens parter som automatisk fører til
746 inhabilitet. Annet ledd oppstiller en skjønnsmessig regel om at
747 tjenestemannen også kan bli inhabil etter en konkret vurdering av
748 inhabilitetsspørsmålet, der en lang rekke momenter kan være
749 relevante. I tredje ledd er det regler om såkalt avledet
750 inhabilitet. Det vil si at en underordnet tjenestemann blir inhabil
751 fordi en overordnet er inhabil.»</p>
752 </blockquote>
753
754 <p>Loven sier ganske enkelt «Er den overordnede tjenestemann ugild,
755 kan avgjørelse i saken heller ikke treffes av en direkte underordnet
756 tjenestemann i samme forvaltningsorgan.» Jeg antar tanken er at en
757 underordnet vil stå i fare for å tilpasse sine konklusjoner til det
758 overordnet vil ha fordel av, for å fortsatt ha et godt forhold til sin
759 overordnede. Men jeg er ikke jurist og forstår nok ikke kompliserte
760 juridiske vurderinger. For å sitere «Kamerat Napoleon» av George
761 Orwell: «Alle dyr er like, men noen dyr er likere enn andre».
762 </div>
763 <div class="tags">
764
765
766 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>.
767
768
769 </div>
770 </div>
771 <div class="padding"></div>
772
773 <div class="entry">
774 <div class="title"><a href="https://people.skolelinux.org/pere/blog/Invidious_add_on_for_Kodi_20.html">Invidious add-on for Kodi 20</a></div>
775 <div class="date">10th August 2023</div>
776 <div class="body"><p>I still enjoy <a href="https://kodi.tv/">Kodi</a> and
777 <a href="https://libreelec.tv/">LibreELEC</a> as my multimedia center
778 at home. Sadly two of the services I really would like to use from
779 within Kodi are not easily available. The most wanted add-on would be
780 one making <a href="https://archive.org/">The Internet Archive</a>
781 available, and it has
782 <a href="https://kodi.wiki/view/Add-on:Internet_Archive">not been
783 working</a> for many years. The second most wanted add-on is one
784 using <a href="https://invidious.io/">the Invidious privacy enhanced
785 Youtube frontent</a>. A plugin for this has been partly working, but
786 not been kept up to date in the Kodi add-on repository, and its
787 upstream seem to have given it up in April this year, when the git
788 repository was closed. A few days ago I got tired of this sad state
789 of affairs and decided to
790 <a href="https://github.com/petterreinholdtsen/kodi-invidious-plugin">have
791 a go at improving the Invidious add-on</a>. As
792 <a href="https://github.com/iv-org/invidious/issues/3872">Google has
793 already attacked</a> the Invidious concept, so it need all the support
794 if can get. My small contribution here is to improve the service
795 status on Kodi.</p>
796
797 <p>I added support to the Invidious add-on for automatically picking a
798 working Invidious instance, instead of requiring the user to specify
799 the URL to a specific instance after installation. I also had a look
800 at the set of patches floating around in the various forks on github,
801 and decided to clean up at least some of the features I liked and
802 integrate them into my new release branch. Now the plugin can handle
803 channel and short video items in search results. Earlier it could
804 only handle single video instances in the search response. I also
805 brushed up the set of metadata displayed a bit, but hope I can figure
806 out how to get more relevant metadata displayed.</p>
807
808 <p>Because I only use Kodi 20 myself, I only test on version 20 and am
809 only motivated to ensure version 20 is working. Because of API changes
810 between version 19 and 20, I suspect it will fail with earlier Kodi
811 versions.</p>
812
813 <p>I already
814 <a href="https://github.com/xbmc/repo-plugins/pull/4363">asked to have
815 the add-on added</a> to the official Kodi 20 repository, and is
816 waiting to heard back from the repo maintainers.</p>
817
818 <p>As usual, if you use Bitcoin and want to show your support of my
819 activities, please send Bitcoin donations to my address
820 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
821 </div>
822 <div class="tags">
823
824
825 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi</a>, <a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="https://people.skolelinux.org/pere/blog/tags/video">video</a>.
826
827
828 </div>
829 </div>
830 <div class="padding"></div>
831
832 <div class="entry">
833 <div class="title"><a href="https://people.skolelinux.org/pere/blog/What_did_I_learn_from_OpenSnitch_this_summer_.html">What did I learn from OpenSnitch this summer?</a></div>
834 <div class="date">11th June 2023</div>
835 <div class="body"><p>With yesterdays
836 <a href="https://www.debian.org/News/2023/20230610">release of Debian
837 12 Bookworm</a>, I am happy to know the
838 <a href="https://tracker.debian.org/pkg/opensnitch">the interactive
839 application firewall OpenSnitch</a> is available for a wider audience.
840 I have been running it for a few weeks now, and have been surprised
841 about some of the programs connecting to the Internet. Some programs
842 are obviously calling out from my machine, like the NTP network based
843 clock adjusting system and Tor to reach other Tor clients, but others
844 were more dubious. For example, the KDE Window manager try to look up
845 the host name in DNS, for no apparent reason, but if this lookup is
846 blocked the KDE desktop get periodically stuck when I use it. Another
847 surprise was how much Firefox call home directly to mozilla.com,
848 mozilla.net and googleapis.com, to mention a few, when I visit other
849 web pages. This direct connection happen even if I told Firefox to
850 always use a proxy, and the proxy setting is ignored for this traffic.
851 Other surprising connections come from audacity and dirmngr (I do not
852 use Gnome). It took some trial and error to get a good default set of
853 permissions. Without it, I would get popups asking for permissions at
854 any time, also the most inconvenient ones where I am in the middle of
855 a time sensitive gaming session.</p>
856
857 <p>I suspect some application developers should rethink when then need
858 to use network connections or DNS lookups, and recommend testing
859 OpenSnitch (only <tt>apt install opensnitch</tt> away in Debian
860 Bookworm) to locate and report any surprising Internet connections on
861 your desktop machine.</p>
862
863 <p>At the moment the upstream developer and Debian package maintainer
864 is working on making the system more reliable in Debian, by enabling
865 the eBPF kernel module to track processes and connections instead of
866 depending in content in /proc/. This should enter unstable fairly
867 soon.</p>
868
869 <p>As usual, if you use Bitcoin and want to show your support of my
870 activities, please send Bitcoin donations to my address
871 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
872
873 <p><strong>Update 2023-06-12</strong>: I got a tip about
874 <a href="https://wiki.debian.org/PrivacyIssues">a list of privacy
875 issues in Free Software</a> and the
876 <a href="irc://irc.debian.org/%23debian-privacy">#debian-privacy IRC
877 channel</a> discussing these topics.</p>
878
879 </div>
880 <div class="tags">
881
882
883 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>, <a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch</a>.
884
885
886 </div>
887 </div>
888 <div class="padding"></div>
889
890 <div class="entry">
891 <div class="title"><a href="https://people.skolelinux.org/pere/blog/wmbusmeters__parse_data_from_your_utility_meter___nice_free_software.html">wmbusmeters, parse data from your utility meter - nice free software</a></div>
892 <div class="date">19th May 2023</div>
893 <div class="body"><p>There is a European standard for reading utility meters like water,
894 gas, electricity or heat distribution meters. The
895 <a href="https://en.wikipedia.org/wiki/Meter-Bus">Meter-Bus standard
896 (EN 13757-2, EN 13757-3 and EN 137574)</a> provide a cross vendor way
897 to talk to and collect meter data. I ran into this standard when I
898 wanted to monitor some heat distribution meters, and managed to find
899 free software that could do the job. The meters in question broadcast
900 encrypted messages with meter information via radio, and the hardest
901 part was to track down the encryption keys from the vendor. With this
902 in place I could set up a MQTT gateway to submit the meter data for
903 graphing.</p>
904
905 <p>The free software systems in question,
906 <a href="https://tracker.debian.org/pkg/rtl-wmbus">rtl-wmbus</a> to
907 read the messages from a software defined radio, and
908 <a href="https://tracker.debian.org/pkg/wmbusmeters">wmbusmeters</a> to
909 decrypt and decode the content of the messages, is working very well
910 and allowe me to get frequent updates from my meters. I got in touch
911 with upstream last year to see if there was any interest in publishing
912 the packages via Debian. I was very happy to learn that Fredrik
913 Öhrström volunteered to maintain the packages, and I have since
914 assisted him in getting Debian package build rules in place as well as
915 sponsoring the packages into the Debian archive. Sadly we completed
916 it too late for them to become part of the next stable Debian release
917 (Bookworm). The wmbusmeters package just cleared the NEW queue. It
918 will need some work to fix a built problem, but I expect Fredrik will
919 find a solution soon.</p>
920
921 <p>If you got a infrastructure meter supporting the Meter Bus
922 standard, I strongly recommend having a look at these nice
923 packages.</p>
924
925 <p>As usual, if you use Bitcoin and want to show your support of my
926 activities, please send Bitcoin donations to my address
927 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
928 </div>
929 <div class="tags">
930
931
932 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>, <a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software</a>.
933
934
935 </div>
936 </div>
937 <div class="padding"></div>
938
939 <div class="entry">
940 <div class="title"><a href="https://people.skolelinux.org/pere/blog/The_2023_LinuxCNC_Norwegian_developer_gathering.html">The 2023 LinuxCNC Norwegian developer gathering</a></div>
941 <div class="date">14th May 2023</div>
942 <div class="body"><p>The LinuxCNC project is making headway these days. A lot of
943 patches and issues have seen activity on
944 <a href="https://github.com/LinuxCNC/linuxcnc/">the project github
945 pages</a> recently. A few weeks ago there was a developer gathering
946 over at the <a href="https://tormach.com/">Tormach</a> headquarter in
947 Wisconsin, and now we are planning a new gathering in Norway. If you
948 wonder what LinuxCNC is, lets quote Wikipedia:</p>
949
950 <blockquote>
951 "LinuxCNC is a software system for numerical control of
952 machines such as milling machines, lathes, plasma cutters, routers,
953 cutting machines, robots and hexapods. It can control up to 9 axes or
954 joints of a CNC machine using G-code (RS-274NGC) as input. It has
955 several GUIs suited to specific kinds of usage (touch screen,
956 interactive development)."
957 </blockquote>
958
959 <p>The Norwegian developer gathering take place the weekend June 16th
960 to 18th this year, and is open for everyone interested in contributing
961 to LinuxCNC. Up to date information about the gathering can be found
962 in
963 <a href="https://sourceforge.net/p/emc/mailman/emc-developers/thread/sa64jp06nob.fsf%40hjemme.reinholdtsen.name/#msg37837251">the
964 developer mailing list thread</a> where the gathering was announced.
965 Thanks to the good people at
966 <a href="https://www.debian.org/">Debian</a>,
967 <a href="https://www.redpill-linpro.com/">Redpill-Linpro</a> and
968 <a href="https://www.nuugfoundation.no/no/">NUUG Foundation</a>, we
969 have enough sponsor funds to pay for food, and shelter for the people
970 traveling from afar to join us. If you would like to join the
971 gathering, get in touch.</p>
972
973 <p>As usual, if you use Bitcoin and want to show your support of my
974 activities, please send Bitcoin donations to my address
975 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
976 </div>
977 <div class="tags">
978
979
980 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>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>.
981
982
983 </div>
984 </div>
985 <div class="padding"></div>
986
987 <div class="entry">
988 <div class="title"><a href="https://people.skolelinux.org/pere/blog/OpenSnitch_in_Debian_ready_for_prime_time.html">OpenSnitch in Debian ready for prime time</a></div>
989 <div class="date">13th May 2023</div>
990 <div class="body"><p>A bit delayed,
991 <a href="https://tracker.debian.org/pkg/opensnitch">the interactive
992 application firewall OpenSnitch</a> package in Debian now got the
993 latest fixes ready for Debian Bookworm. Because it depend on a
994 package missing on some architectures, the autopkgtest check of the
995 testing migration script did not understand that the tests were
996 actually working, so the migration was delayed. A bug in the package
997 dependencies is also fixed, so those installing the firewall package
998 (opensnitch) now also get the GUI admin tool (python3-opensnitch-ui)
999 installed by default. I am very grateful to Gustavo Iñiguez Goya for
1000 his work on getting the package ready for Debian Bookworm.</p>
1001
1002 <p>Armed with this package I have discovered some surprising
1003 connections from programs I believed were able to work completly
1004 offline, and it has already proven its worth, at least to me. If you
1005 too want to get more familiar with the kind of programs using
1006 Internett connections on your machine, I recommend testing <tt>apt
1007 install opensnitch</tt> in Bookworm and see what you think.</p>
1008
1009 <p>The package is still not able to build its eBPF module within
1010 Debian. Not sure how much work it would be to get it working, but
1011 suspect some kernel related packages need to be extended with more
1012 header files to get it working.</p>
1013
1014 <p>As usual, if you use Bitcoin and want to show your support of my
1015 activities, please send Bitcoin donations to my address
1016 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
1017 </div>
1018 <div class="tags">
1019
1020
1021 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>, <a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch</a>.
1022
1023
1024 </div>
1025 </div>
1026 <div class="padding"></div>
1027
1028 <p style="text-align: right;"><a href="index.rss"><img src="https://people.skolelinux.org/pere/blog/xml.gif" alt="RSS feed" width="36" height="14" /></a></p>
1029 <div id="sidebar">
1030
1031
1032
1033 <h2>Archive</h2>
1034 <ul>
1035
1036 <li>2023
1037 <ul>
1038
1039 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/01/">January (3)</a></li>
1040
1041 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/02/">February (1)</a></li>
1042
1043 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/04/">April (2)</a></li>
1044
1045 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/05/">May (3)</a></li>
1046
1047 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/06/">June (1)</a></li>
1048
1049 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/08/">August (1)</a></li>
1050
1051 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/09/">September (1)</a></li>
1052
1053 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/10/">October (1)</a></li>
1054
1055 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/11/">November (3)</a></li>
1056
1057 </ul></li>
1058
1059 <li>2022
1060 <ul>
1061
1062 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/02/">February (1)</a></li>
1063
1064 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/03/">March (3)</a></li>
1065
1066 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/04/">April (2)</a></li>
1067
1068 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/06/">June (2)</a></li>
1069
1070 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/07/">July (1)</a></li>
1071
1072 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/09/">September (1)</a></li>
1073
1074 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/10/">October (1)</a></li>
1075
1076 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/12/">December (1)</a></li>
1077
1078 </ul></li>
1079
1080 <li>2021
1081 <ul>
1082
1083 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/01/">January (2)</a></li>
1084
1085 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/02/">February (1)</a></li>
1086
1087 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/05/">May (1)</a></li>
1088
1089 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/06/">June (1)</a></li>
1090
1091 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/07/">July (3)</a></li>
1092
1093 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/08/">August (1)</a></li>
1094
1095 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/09/">September (1)</a></li>
1096
1097 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/10/">October (1)</a></li>
1098
1099 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/12/">December (1)</a></li>
1100
1101 </ul></li>
1102
1103 <li>2020
1104 <ul>
1105
1106 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
1107
1108 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
1109
1110 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
1111
1112 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
1113
1114 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
1115
1116 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
1117
1118 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
1119
1120 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/10/">October (1)</a></li>
1121
1122 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/11/">November (1)</a></li>
1123
1124 </ul></li>
1125
1126 <li>2019
1127 <ul>
1128
1129 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
1130
1131 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
1132
1133 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
1134
1135 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
1136
1137 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
1138
1139 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
1140
1141 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
1142
1143 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
1144
1145 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
1146
1147 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
1148
1149 </ul></li>
1150
1151 <li>2018
1152 <ul>
1153
1154 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
1155
1156 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
1157
1158 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
1159
1160 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
1161
1162 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
1163
1164 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
1165
1166 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
1167
1168 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
1169
1170 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
1171
1172 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
1173
1174 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
1175
1176 </ul></li>
1177
1178 <li>2017
1179 <ul>
1180
1181 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
1182
1183 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
1184
1185 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
1186
1187 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
1188
1189 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
1190
1191 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
1192
1193 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
1194
1195 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
1196
1197 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
1198
1199 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
1200
1201 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
1202
1203 </ul></li>
1204
1205 <li>2016
1206 <ul>
1207
1208 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
1209
1210 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
1211
1212 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
1213
1214 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
1215
1216 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
1217
1218 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
1219
1220 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
1221
1222 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
1223
1224 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
1225
1226 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
1227
1228 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
1229
1230 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
1231
1232 </ul></li>
1233
1234 <li>2015
1235 <ul>
1236
1237 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
1238
1239 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
1240
1241 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
1242
1243 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
1244
1245 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
1246
1247 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
1248
1249 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
1250
1251 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
1252
1253 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
1254
1255 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
1256
1257 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
1258
1259 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
1260
1261 </ul></li>
1262
1263 <li>2014
1264 <ul>
1265
1266 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
1267
1268 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
1269
1270 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
1271
1272 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
1273
1274 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
1275
1276 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
1277
1278 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
1279
1280 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
1281
1282 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
1283
1284 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
1285
1286 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
1287
1288 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
1289
1290 </ul></li>
1291
1292 <li>2013
1293 <ul>
1294
1295 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
1296
1297 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
1298
1299 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
1300
1301 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
1302
1303 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
1304
1305 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
1306
1307 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
1308
1309 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
1310
1311 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
1312
1313 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
1314
1315 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
1316
1317 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
1318
1319 </ul></li>
1320
1321 <li>2012
1322 <ul>
1323
1324 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
1325
1326 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
1327
1328 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
1329
1330 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
1331
1332 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
1333
1334 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
1335
1336 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
1337
1338 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
1339
1340 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
1341
1342 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
1343
1344 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
1345
1346 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
1347
1348 </ul></li>
1349
1350 <li>2011
1351 <ul>
1352
1353 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
1354
1355 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
1356
1357 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
1358
1359 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
1360
1361 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
1362
1363 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
1364
1365 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
1366
1367 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
1368
1369 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
1370
1371 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
1372
1373 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
1374
1375 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
1376
1377 </ul></li>
1378
1379 <li>2010
1380 <ul>
1381
1382 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1383
1384 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1385
1386 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1387
1388 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1389
1390 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1391
1392 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1393
1394 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1395
1396 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1397
1398 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1399
1400 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1401
1402 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1403
1404 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1405
1406 </ul></li>
1407
1408 <li>2009
1409 <ul>
1410
1411 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1412
1413 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1414
1415 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1416
1417 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1418
1419 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1420
1421 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1422
1423 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1424
1425 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1426
1427 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1428
1429 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1430
1431 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1432
1433 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1434
1435 </ul></li>
1436
1437 <li>2008
1438 <ul>
1439
1440 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1441
1442 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1443
1444 </ul></li>
1445
1446 </ul>
1447
1448
1449
1450 <h2>Tags</h2>
1451 <ul>
1452
1453 <li><a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (19)</a></li>
1454
1455 <li><a href="https://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1456
1457 <li><a href="https://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1458
1459 <li><a href="https://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1460
1461 <li><a href="https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
1462
1463 <li><a href="https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (12)</a></li>
1464
1465 <li><a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1466
1467 <li><a href="https://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1468
1469 <li><a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (3)</a></li>
1470
1471 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian">debian (197)</a></li>
1472
1473 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
1474
1475 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
1476
1477 <li><a href="https://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
1478
1479 <li><a href="https://people.skolelinux.org/pere/blog/tags/dld">dld (18)</a></li>
1480
1481 <li><a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook (32)</a></li>
1482
1483 <li><a href="https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1484
1485 <li><a href="https://people.skolelinux.org/pere/blog/tags/english">english (454)</a></li>
1486
1487 <li><a href="https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1488
1489 <li><a href="https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
1490
1491 <li><a href="https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
1492
1493 <li><a href="https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1494
1495 <li><a href="https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
1496
1497 <li><a href="https://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1498
1499 <li><a href="https://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
1500
1501 <li><a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
1502
1503 <li><a href="https://people.skolelinux.org/pere/blog/tags/kart">kart (23)</a></li>
1504
1505 <li><a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi (6)</a></li>
1506
1507 <li><a href="https://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1508
1509 <li><a href="https://people.skolelinux.org/pere/blog/tags/lego">lego (5)</a></li>
1510
1511 <li><a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1512
1513 <li><a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (5)</a></li>
1514
1515 <li><a href="https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1516
1517 <li><a href="https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1518
1519 <li><a href="https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (3)</a></li>
1520
1521 <li><a href="https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1522
1523 <li><a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (46)</a></li>
1524
1525 <li><a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (15)</a></li>
1526
1527 <li><a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (23)</a></li>
1528
1529 <li><a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk (322)</a></li>
1530
1531 <li><a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug (198)</a></li>
1532
1533 <li><a href="https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (40)</a></li>
1534
1535 <li><a href="https://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1536
1537 <li><a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (4)</a></li>
1538
1539 <li><a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (75)</a></li>
1540
1541 <li><a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern (114)</a></li>
1542
1543 <li><a href="https://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
1544
1545 <li><a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1546
1547 <li><a href="https://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1548
1549 <li><a href="https://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1550
1551 <li><a href="https://people.skolelinux.org/pere/blog/tags/robot">robot (17)</a></li>
1552
1553 <li><a href="https://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1554
1555 <li><a href="https://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
1556
1557 <li><a href="https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1558
1559 <li><a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
1560
1561 <li><a href="https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1562
1563 <li><a href="https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
1564
1565 <li><a href="https://people.skolelinux.org/pere/blog/tags/standard">standard (74)</a></li>
1566
1567 <li><a href="https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
1568
1569 <li><a href="https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (14)</a></li>
1570
1571 <li><a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (65)</a></li>
1572
1573 <li><a href="https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
1574
1575 <li><a href="https://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1576
1577 <li><a href="https://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
1578
1579 <li><a href="https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (20)</a></li>
1580
1581 <li><a href="https://people.skolelinux.org/pere/blog/tags/video">video (79)</a></li>
1582
1583 <li><a href="https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1584
1585 <li><a href="https://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
1586
1587 </ul>
1588
1589
1590 </div>
1591 <p style="text-align: right">
1592 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1593 </p>
1594
1595 </body>
1596 </html>