]> pere.pagekite.me Git - homepage.git/blobdiff - blog/tags/debian/index.html
Typo.
[homepage.git] / blog / tags / debian / index.html
index 5f812578c6066fc0f0b9cb959509620c2eba1604..bc9a185ccc0ac0afa20a0028b17049187523d486 100644 (file)
@@ -1659,6 +1659,2031 @@ changes, it will not be an option for Debian Edu based on Squeeze.</p>
  
  </div>
 </div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_desktop.html">Lenny->Squeeze upgrades, apt vs aptitude with the Gnome desktop</a>
+ </div>
+ <div class="date">
+  2010-07-03 23:55
+ </div>
+
+ <div class="body">
+  
+<p>Here is a short update on my <a
+href="http://people.skolelinux.org/~pere/debian-upgrade-testing/">my
+Debian Lenny->Squeeze upgrade testing</a>.  Here is a summary of the
+difference for Gnome when it is upgraded by apt-get and aptitude.  I'm
+not reporting the status for KDE, because the upgrade crashes when
+aptitude try because of missing conflicts
+(<a href="http://bugs.debian.org/584861">#584861</a> and
+<a href="http://bugs.debian.org/585716">#585716</a>).</p>
+
+<p>At the end of the upgrade test script, dpkg -l is executed to get a
+complete list of the installed packages.  Based on this I see these
+differences when I did a test run today.  As usual, I do not really
+know what the correct set of packages would be, but thought it best to
+publish the difference.</p>
+
+<p>Installed using apt-get, missing with aptitude</p>
+
+<blockquote><p>
+  at-spi cpp-4.3 finger gnome-spell gstreamer0.10-gnomevfs
+  libatspi1.0-0 libcupsys2 libeel2-data libgail-common libgdl-1-common
+  libgnomeprint2.2-data libgnomeprintui2.2-common libgnomevfs2-bin
+  libgtksourceview-common libpt-1.10.10-plugins-alsa
+  libpt-1.10.10-plugins-v4l libservlet2.4-java libxalan2-java
+  libxerces2-java openoffice.org-writer2latex openssl-blacklist p7zip
+  python-4suite-xml python-eggtrayicon python-gtkhtml2
+  python-gtkmozembed svgalibg1 xserver-xephyr zip
+</p></blockquote>
+
+<p>Installed using apt-get, removed with aptitude</p>
+
+<blockquote><p>
+  bluez-utils dhcdbd djvulibre-desktop epiphany-gecko
+  gnome-app-install gnome-mount gnome-vfs-obexftp gnome-volume-manager
+  libao2 libavahi-compat-libdnssd1 libavahi-core5 libbind9-50
+  libbluetooth2 libcamel1.2-11 libcdio7 libcucul0 libcurl3
+  libdirectfb-1.0-0 libdvdread3 libedata-cal1.2-6 libedataserver1.2-9
+  libeel2-2.20 libepc-1.0-1 libepc-ui-1.0-1 libexchange-storage1.2-3
+  libfaad0 libgd2-noxpm libgda3-3 libgda3-common libggz2 libggzcore9
+  libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0 libgnome-desktop-2
+  libgnome-pilot2 libgnomecups1.0-1 libgnomeprint2.2-0
+  libgnomeprintui2.2-0 libgpod3 libgraphviz4 libgtkhtml2-0
+  libgtksourceview1.0-0 libgucharmap6 libhesiod0 libicu38 libisccc50
+  libisccfg50 libiw29 libkpathsea4 libltdl3 liblwres50 libmagick++10
+  libmagick10 libmalaga7 libmtp7 libmysqlclient15off libnautilus-burn4
+  libneon27 libnm-glib0 libnm-util0 libopal-2.2 libosp5
+  libparted1.8-10 libpisock9 libpisync1 libpoppler-glib3 libpoppler3
+  libpt-1.10.10 libraw1394-8 libsensors3 libsmbios2 libsoup2.2-8
+  libssh2-1 libsuitesparse-3.1.0 libswfdec-0.6-90 libtalloc1
+  libtotem-plparser10 libtrackerclient0 libvoikko1 libxalan2-java-gcj
+  libxerces2-java-gcj libxklavier12 libxtrap6 libxxf86misc1 libzephyr3
+  mysql-common swfdec-gnome totem-gstreamer wodim
+</p></blockquote>
+
+<p>Installed using aptitude, missing with apt-get</p>
+
+<blockquote><p>
+  gnome gnome-desktop-environment hamster-applet python-gnomeapplet
+  python-gnomekeyring python-wnck rhythmbox-plugins xorg
+  xserver-xorg-input-all xserver-xorg-input-evdev
+  xserver-xorg-input-kbd xserver-xorg-input-mouse
+  xserver-xorg-input-synaptics xserver-xorg-video-all
+  xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati
+  xserver-xorg-video-chips xserver-xorg-video-cirrus
+  xserver-xorg-video-dummy xserver-xorg-video-fbdev
+  xserver-xorg-video-glint xserver-xorg-video-i128
+  xserver-xorg-video-i740 xserver-xorg-video-mach64
+  xserver-xorg-video-mga xserver-xorg-video-neomagic
+  xserver-xorg-video-nouveau xserver-xorg-video-nv
+  xserver-xorg-video-r128 xserver-xorg-video-radeon
+  xserver-xorg-video-radeonhd xserver-xorg-video-rendition
+  xserver-xorg-video-s3 xserver-xorg-video-s3virge
+  xserver-xorg-video-savage xserver-xorg-video-siliconmotion
+  xserver-xorg-video-sis xserver-xorg-video-sisusb
+  xserver-xorg-video-tdfx xserver-xorg-video-tga
+  xserver-xorg-video-trident xserver-xorg-video-tseng
+  xserver-xorg-video-vesa xserver-xorg-video-vmware
+  xserver-xorg-video-voodoo
+</p></blockquote>
+
+<p>Installed using aptitude, removed with apt-get</p>
+
+<blockquote><p>
+  deskbar-applet xserver-xorg xserver-xorg-core
+  xserver-xorg-input-wacom xserver-xorg-video-intel
+  xserver-xorg-video-openchrome
+</p></blockquote>
+
+<p>I was told on IRC that the xorg-xserver package was
+<a href="http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git;a=commit;h=9c8080d06c457932d3bfec021c69ac000aa60120">changed
+in git</a> today to try to get apt-get to not remove xorg completely.
+No idea when it hits Squeeze, but when it does I hope it will reduce
+the difference somewhat.
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/jXplorer__a_very_nice_LDAP_GUI.html">jXplorer, a very nice LDAP GUI</a>
+ </div>
+ <div class="date">
+  2010-07-09 12:55
+ </div>
+
+ <div class="body">
+  
+<p>Since
+<a href="http://people.skolelinux.org/pere/blog/LUMA__a_very_nice_LDAP_GUI.html">my
+last post</a> about available LDAP tools in Debian, I was told about a
+LDAP GUI that is even better than luma.  The java application
+<a href="http://jxplorer.org/">jXplorer</a> is claimed to be capable of
+moving LDAP objects and subtrees using drag-and-drop, and can
+authenticate using Kerberos.  I have only tested the Kerberos
+authentication, but do not have a LDAP setup allowing me to rewrite
+LDAP with my test user yet.  It is
+<a href="http://packages.qa.debian.org/j/jxplorer.html">available in
+Debian</a> testing and unstable at the moment.  The only problem I
+have with it is how it handle errors.  If something go wrong, its
+non-intuitive behaviour require me to go through some query work list
+and remove the failing query.  Nothing big, but very annoying.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Idea_for_storing_LTSP_configuration_in_LDAP.html">Idea for storing LTSP configuration in LDAP</a>
+ </div>
+ <div class="date">
+  2010-07-11 22:00
+ </div>
+
+ <div class="body">
+  
+<p>Vagrant mentioned on IRC today that ltsp_config now support
+sourcing files from /usr/share/ltsp/ltsp_config.d/ on the thin
+clients, and that this can be used to fetch configuration from LDAP if
+Debian Edu choose to store configuration there.</p>
+
+<p>Armed with this information, I got inspired and wrote a test module
+to get configuration from LDAP.  The idea is to look up the MAC
+address of the client in LDAP, and look for attributes on the form
+ltspconfigsetting=value, and use this to export SETTING=value to the
+LTSP clients.</p>
+
+<p>The goal is to be able to store the LTSP configuration attributes
+in a "computer" LDAP object used by both DNS and DHCP, and thus
+allowing us to store all information about a computer in one place.</p>
+
+<p>This is a untested draft implementation, and I welcome feedback on
+this approach.  A real LDAP schema for the ltspClientAux objectclass
+need to be written.  Comments, suggestions, etc?</p>
+
+<blockquote><pre>
+# Store in /opt/ltsp/$arch/usr/share/ltsp/ltsp_config.d/ldap-config
+#
+# Fetch LTSP client settings from LDAP based on MAC address
+#
+# Uses ethernet address as stored in the dhcpHost objectclass using
+# the dhcpHWAddress attribute or ethernet address stored in the
+# ieee802Device objectclass with the macAddress attribute.
+#
+# This module is written to be schema agnostic, and only depend on the
+# existence of attribute names.
+#
+# The LTSP configuration variables are saved directly using a
+# ltspConfig prefix and uppercasing the rest of the attribute name.
+# To set the SERVER variable, set the ltspConfigServer attribute.
+#
+# Some LDAP schema should be created with all the relevant
+# configuration settings.  Something like this should work:
+# 
+# objectclass ( 1.1.2.2 NAME 'ltspClientAux'
+#     SUP top
+#     AUXILIARY
+#     MAY ( ltspConfigServer $ ltsConfigSound $ ... )
+
+LDAPSERVER=$(debian-edu-ldapserver)
+if [ "$LDAPSERVER" ] ; then
+    LDAPBASE=$(debian-edu-ldapserver -b)
+    for MAC in $(LANG=C ifconfig |grep -i hwaddr| awk '{print $5}'|sort -u) ; do
+       filter="(|(dhcpHWAddress=ethernet $MAC)(macAddress=$MAC))"
+       ldapsearch -h "$LDAPSERVER" -b "$LDAPBASE" -v -x "$filter" | \
+           grep '^ltspConfig' | while read attr value ; do
+           # Remove prefix and convert to upper case
+           attr=$(echo $attr | sed 's/^ltspConfig//i' | tr a-z A-Z)
+           # bass value on to clients
+           eval "$attr=$value; export $attr"
+       done
+    done
+fi
+</pre></blockquote>
+
+<p>I'm not sure this shell construction will work, because I suspect
+the while block might end up in a subshell causing the variables set
+there to not show up in ltsp-config, but if that is the case I am sure
+the code can be restructured to make sure the variables are passed on.
+I expect that can be solved with some testing. :)</p>
+
+<p>If you want to help out with implementing this for Debian Edu,
+please contact us on debian-edu@lists.debian.org.</p>
+
+<p>Update 2010-07-17: I am aware of another effort to store LTSP
+configuration in LDAP that was created around year 2000 by
+<a href="http://www.pcxperience.com/thinclient/documentation/ldap.html">PC
+Xperience, Inc., 2000</a>.  I found its
+<a href="http://people.redhat.com/alikins/ltsp/ldap/">files</a> on a
+personal home page over at redhat.com.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html">Combining PowerDNS and ISC DHCP LDAP objects</a>
+ </div>
+ <div class="date">
+  2010-07-14 23:45
+ </div>
+
+ <div class="body">
+  
+<p>For a while now, I have wanted to find a way to change the DNS and
+DHCP services in Debian Edu to use the same LDAP objects for a given
+computer, to avoid the possibility of having a inconsistent state for
+a computer in LDAP (as in DHCP but no DNS entry or the other way
+around) and make it easier to add computers to LDAP.</p>
+
+<p>I've looked at how powerdns and dhcpd is using LDAP, and using this
+information finally found a solution that seem to work.</p>
+
+<p>The old setup required three LDAP objects for a given computer.
+One forward DNS entry, one reverse DNS entry and one DHCP entry.  If
+we switch powerdns to use its strict LDAP method (ldap-method=strict
+in pdns-debian-edu.conf), the forward and reverse DNS entries are
+merged into one while making it impossible to transfer the reverse map
+to a slave DNS server.</p>
+
+<p>If we also replace the object class used to get the DNS related
+attributes to one allowing these attributes to be combined with the
+dhcphost object class, we can merge the DNS and DHCP entries into one.
+I've written such object class in the dnsdomainaux.schema file (need
+proper OIDs, but that is a minor issue), and tested the setup.  It
+seem to work.</p>
+
+<p>With this test setup in place, we can get away with one LDAP object
+for both DNS and DHCP, and even the LTSP configuration I suggested in
+an earlier email.  The combined LDAP object will look something like
+this:</p>
+
+<blockquote><pre>
+  dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
+  cn: hostname
+  objectClass: dhcphost
+  objectclass: domainrelatedobject
+  objectclass: dnsdomainaux
+  associateddomain: hostname.intern
+  arecord: 10.11.12.13
+  dhcphwaddress: ethernet 00:00:00:00:00:00
+  dhcpstatements: fixed-address hostname
+  ldapconfigsound: Y
+</pre></blockquote>
+
+<p>The DNS server uses the associateddomain and arecord entries, while
+the DHCP server uses the dhcphwaddress and dhcpstatements entries
+before asking DNS to resolve the fixed-adddress.  LTSP will use
+dhcphwaddress or associateddomain and the ldapconfig* attributes.</p>
+
+<p>I am not yet sure if I can get the DHCP server to look for its
+dhcphost in a different location, to allow us to put the objects
+outside the "DHCP Config" subtree, but hope to figure out a way to do
+that.  If I can't figure out a way to do that, we can still get rid of
+the hosts subtree and move all its content into the DHCP Config tree
+(which probably should be renamed to be more related to the new
+content.  I suspect cn=dnsdhcp,ou=services or something like that
+might be a good place to put it.</p>
+
+<p>If you want to help out with implementing this for Debian Edu,
+please contact us on debian-edu@lists.debian.org.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/What_are_they_searching_for___PowerDNS_and_ISC_DHCP_in_LDAP.html">What are they searching for - PowerDNS and ISC DHCP in LDAP</a>
+ </div>
+ <div class="date">
+  2010-07-17 21:00
+ </div>
+
+ <div class="body">
+  
+<p>This is a
+<a href="http://people.skolelinux.org/pere/blog/Time_for_new__LDAP_schemas_replacing_RFC_2307_.html">followup</a>
+on my
+<a href="http://people.skolelinux.org/pere/blog/Idea_for_a_change_to_LDAP_schemas_allowing_DNS_and_DHCP_info_to_be_combined_into_one_object.html">previous
+work</a> on
+<a href="http://people.skolelinux.org/pere/blog/Combining_PowerDNS_and_ISC_DHCP_LDAP_objects.html">merging
+all</a> the computer related LDAP objects in Debian Edu.</p>
+
+<p>As a step to try to see if it possible to merge the DNS and DHCP
+LDAP objects, I have had a look at how the packages pdns-backend-ldap
+and dhcp3-server-ldap in Debian use the LDAP server.  The two
+implementations are quite different in how they use LDAP.</p>
+
+To get this information, I started slapd with debugging enabled and
+dumped the debug output to a file to get the LDAP searches performed
+on a Debian Edu main-server.  Here is a summary.
+
+<p><strong>powerdns</strong></p>
+
+<a href="http://www.linuxnetworks.de/doc/index.php/PowerDNS_LDAP_Backend">Clues
+on how to</a> set up PowerDNS to use a LDAP backend is available on
+the web.
+
+<p>PowerDNS have two modes of operation using LDAP as its backend.
+One "strict" mode where the forward and reverse DNS lookups are done
+using the same LDAP objects, and a "tree" mode where the forward and
+reverse entries are in two different subtrees in LDAP with a structure
+based on the DNS names, as in tjener.intern and
+2.2.0.10.in-addr.arpa.</p>
+
+<p>In tree mode, the server is set up to use a LDAP subtree as its
+base, and uses a "base" scoped search for the DNS name by adding
+"dc=tjener,dc=intern," to the base with a filter for
+"(associateddomain=tjener.intern)" for the forward entry and
+"dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa," with a filter for
+"(associateddomain=2.2.0.10.in-addr.arpa)" for the reverse entry.  For
+forward entries, it is looking for attributes named dnsttl, arecord,
+nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord, mxrecord,
+txtrecord, rprecord, afsdbrecord, keyrecord, aaaarecord, locrecord,
+srvrecord, naptrrecord, kxrecord, certrecord, dsrecord, sshfprecord,
+ipseckeyrecord, rrsigrecord, nsecrecord, dnskeyrecord, dhcidrecord,
+spfrecord and modifytimestamp.  For reverse entries it is looking for
+the attributes dnsttl, arecord, nsrecord, cnamerecord, soarecord,
+ptrrecord, hinforecord, mxrecord, txtrecord, rprecord, aaaarecord,
+locrecord, srvrecord, naptrrecord and modifytimestamp.  The equivalent
+ldapsearch commands could look like this:</p>
+
+<blockquote><pre>
+ldapsearch -h ldap \
+  -b dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no \
+  -s base -x '(associateddomain=tjener.intern)' dNSTTL aRecord nSRecord \
+  cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
+  rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
+  nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
+  rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
+
+ldapsearch -h ldap \
+  -b dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no \
+  -s base -x '(associateddomain=2.2.0.10.in-addr.arpa)'
+  dnsttl, arecord, nsrecord, cnamerecord soarecord ptrrecord \
+  hinforecord mxrecord txtrecord rprecord aaaarecord locrecord \
+  srvrecord naptrrecord modifytimestamp
+</pre></blockquote>
+
+<p>In Debian Edu/Lenny, the PowerDNS tree mode is used with
+ou=hosts,dc=skole,dc=skolelinux,dc=no as the base, and these are two
+example LDAP objects used there.  In addition to these objects, the
+parent objects all th way up to ou=hosts,dc=skole,dc=skolelinux,dc=no
+also exist.</p>
+
+<blockquote><pre>
+dn: dc=tjener,dc=intern,ou=hosts,dc=skole,dc=skolelinux,dc=no
+objectclass: top
+objectclass: dnsdomain
+objectclass: domainrelatedobject
+dc: tjener
+arecord: 10.0.2.2
+associateddomain: tjener.intern
+
+dn: dc=2,dc=2,dc=0,dc=10,dc=in-addr,dc=arpa,ou=hosts,dc=skole,dc=skolelinux,dc=no
+objectclass: top
+objectclass: dnsdomain2
+objectclass: domainrelatedobject
+dc: 2
+ptrrecord: tjener.intern
+associateddomain: 2.2.0.10.in-addr.arpa
+</pre></blockquote>
+
+<p>In strict mode, the server behaves differently.  When looking for
+forward DNS entries, it is doing a "subtree" scoped search with the
+same base as in the tree mode for a object with filter
+"(associateddomain=tjener.intern)" and requests the attributes dnsttl,
+arecord, nsrecord, cnamerecord, soarecord, ptrrecord, hinforecord,
+mxrecord, txtrecord, rprecord, aaaarecord, locrecord, srvrecord,
+naptrrecord and modifytimestamp.  For reverse entires it also do a
+subtree scoped search but this time the filter is "(arecord=10.0.2.2)"
+and the requested attributes are associateddomain, dnsttl and
+modifytimestamp.  In short, in strict mode the objects with ptrrecord
+go away, and the arecord attribute in the forward object is used
+instead.</p>
+
+<p>The forward and reverse searches can be simulated using ldapsearch
+like this:</p>
+
+<blockquote><pre>
+ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
+  '(associateddomain=tjener.intern)' dNSTTL aRecord nSRecord \
+  cNAMERecord sOARecord pTRRecord hInfoRecord mXRecord tXTRecord \
+  rPRecord aFSDBRecord KeyRecord aAAARecord lOCRecord sRVRecord \
+  nAPTRRecord kXRecord certRecord dSRecord sSHFPRecord iPSecKeyRecord \
+  rRSIGRecord nSECRecord dNSKeyRecord dHCIDRecord sPFRecord modifyTimestamp
+
+ldapsearch -h ldap -b ou=hosts,dc=skole,dc=skolelinux,dc=no -s sub -x \
+  '(arecord=10.0.2.2)' associateddomain dnsttl modifytimestamp
+</pre></blockquote>
+
+<p>In addition to the forward and reverse searches , there is also a
+search for SOA records, which behave similar to the forward and
+reverse lookups.</p>
+
+<p>A thing to note with the PowerDNS behaviour is that it do not
+specify any objectclass names, and instead look for the attributes it
+need to generate a DNS reply.  This make it able to work with any
+objectclass that provide the needed attributes.</p>
+
+<p>The attributes are normally provided in the cosine (RFC 1274) and
+dnsdomain2 schemas.  The latter is used for reverse entries like
+ptrrecord and recent DNS additions like aaaarecord and srvrecord.</p>
+
+<p>In Debian Edu, we have created DNS objects using the object classes
+dcobject (for dc), dnsdomain or dnsdomain2 (structural, for the DNS
+attributes) and domainrelatedobject (for associatedDomain).  The use
+of structural object classes make it impossible to combine these
+classes with the object classes used by DHCP.</p>
+
+<p>There are other schemas that could be used too, for example the
+dnszone structural object class used by Gosa and bind-sdb for the DNS
+attributes combined with the domainrelatedobject object class, but in
+this case some unused attributes would have to be included as well
+(zonename and relativedomainname).</p>
+
+<p>My proposal for Debian Edu would be to switch PowerDNS to strict
+mode and not use any of the existing objectclasses (dnsdomain,
+dnsdomain2 and dnszone) when one want to combine the DNS information
+with DHCP information, and instead create a auxiliary object class
+defined something like this (using the attributes defined for
+dnsdomain and dnsdomain2 or dnszone):</p>
+
+<blockquote><pre>
+objectclass ( some-oid NAME 'dnsDomainAux'
+    SUP top
+    AUXILIARY
+    MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAMERecord $
+          DNSTTL $ DNSClass $ PTRRecord $ HINFORecord $ MINFORecord $
+          TXTRecord $ SIGRecord $ KEYRecord $ AAAARecord $ LOCRecord $
+          NXTRecord $ SRVRecord $ NAPTRRecord $ KXRecord $ CERTRecord $
+          A6Record $ DNAMERecord
+    ))
+</pre></blockquote>
+
+<p>This will allow any object to become a DNS entry when combined with
+the domainrelatedobject object class, and allow any entity to include
+all the attributes PowerDNS wants.  I've sent an email to the PowerDNS
+developers asking for their view on this schema and if they are
+interested in providing such schema with PowerDNS, and I hope my
+message will be accepted into their mailing list soon.</p>
+
+<p><strong>ISC dhcp</strong></p>
+
+<p>The DHCP server searches for specific objectclass and requests all
+the object attributes, and then uses the attributes it want.  This
+make it harder to figure out exactly what attributes are used, but
+thanks to the working example in Debian Edu I can at least get an idea
+what is needed without having to read the source code.</p>
+
+<p>In the DHCP server configuration, the LDAP base to use and the
+search filter to use to locate the correct dhcpServer entity is
+stored.  These are the relevant entries from
+/etc/dhcp3/dhcpd.conf:</p>
+
+<blockquote><pre>
+ldap-base-dn "dc=skole,dc=skolelinux,dc=no";
+ldap-dhcp-server-cn "dhcp";
+</pre></blockquote>
+
+<p>The DHCP server uses this information to nest all the DHCP
+configuration it need.  The cn "dhcp" is located using the given LDAP
+base and the filter "(&(objectClass=dhcpServer)(cn=dhcp))".  The
+search result is this entry:</p>
+
+<blockquote><pre>
+dn: cn=dhcp,dc=skole,dc=skolelinux,dc=no
+cn: dhcp
+objectClass: top
+objectClass: dhcpServer
+dhcpServiceDN: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
+</pre></blockquote>
+
+<p>The content of the dhcpServiceDN attribute is next used to locate the
+subtree with DHCP configuration.  The DHCP configuration subtree base
+is located using a base scope search with base "cn=DHCP
+Config,dc=skole,dc=skolelinux,dc=no" and filter
+"(&(objectClass=dhcpService)(|(dhcpPrimaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)(dhcpSecondaryDN=cn=dhcp,dc=skole,dc=skolelinux,dc=no)))".
+The search result is this entry:</p>
+
+<blockquote><pre>
+dn: cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
+cn: DHCP Config
+objectClass: top
+objectClass: dhcpService
+objectClass: dhcpOptions
+dhcpPrimaryDN: cn=dhcp, dc=skole,dc=skolelinux,dc=no
+dhcpStatements: ddns-update-style none
+dhcpStatements: authoritative
+dhcpOption: smtp-server code 69 = array of ip-address
+dhcpOption: www-server code 72 = array of ip-address
+dhcpOption: wpad-url code 252 = text
+</pre></blockquote>
+
+<p>Next, the entire subtree is processed, one level at the time.  When
+all the DHCP configuration is loaded, it is ready to receive requests.
+The subtree in Debian Edu contain objects with object classes
+top/dhcpService/dhcpOptions, top/dhcpSharedNetwork/dhcpOptions,
+top/dhcpSubnet, top/dhcpGroup and top/dhcpHost.  These provide options
+and information about netmasks, dynamic range etc.  Leaving out the
+details here because it is not relevant for the focus of my
+investigation, which is to see if it is possible to merge dns and dhcp
+related computer objects.</p>
+
+<p>When a DHCP request come in, LDAP is searched for the MAC address
+of the client (00:00:00:00:00:00 in this example), using a subtree
+scoped search with "cn=DHCP Config,dc=skole,dc=skolelinux,dc=no" as
+the base and "(&(objectClass=dhcpHost)(dhcpHWAddress=ethernet
+00:00:00:00:00:00))" as the filter.  This is what a host object look
+like:</p>
+
+<blockquote><pre>
+dn: cn=hostname,cn=group1,cn=THINCLIENTS,cn=DHCP Config,dc=skole,dc=skolelinux,dc=no
+cn: hostname
+objectClass: top
+objectClass: dhcpHost
+dhcpHWAddress: ethernet 00:00:00:00:00:00
+dhcpStatements: fixed-address hostname
+</pre></blockquote>
+
+<p>There is less flexiblity in the way LDAP searches are done here.
+The object classes need to have fixed names, and the configuration
+need to be stored in a fairly specific LDAP structure.  On the
+positive side, the invidiual dhcpHost entires can be anywhere without
+the DN pointed to by the dhcpServer entries.  The latter should make
+it possible to group all host entries in a subtree next to the
+configuration entries, and this subtree can also be shared with the
+DNS server if the schema proposed above is combined with the dhcpHost
+structural object class.
+
+<p><strong>Conclusion</strong></p>
+
+<p>The PowerDNS implementation seem to be very flexible when it come
+to which LDAP schemas to use.  While its "tree" mode is rigid when it
+come to the the LDAP structure, the "strict" mode is very flexible,
+allowing DNS objects to be stored anywhere under the base cn specified
+in the configuration.</p>
+
+<p>The DHCP implementation on the other hand is very inflexible, both
+regarding which LDAP schemas to use and which LDAP structure to use.
+I guess one could implement ones own schema, as long as the
+objectclasses and attributes have the names used, but this do not
+really help when the DHCP subtree need to have a fairly fixed
+structure.</p>
+
+<p>Based on the observed behaviour, I suspect a LDAP structure like
+this might work for Debian Edu:</p>
+
+<blockquote><pre>
+ou=services
+  cn=machine-info (dhcpService) - dhcpServiceDN points here
+    cn=dhcp (dhcpServer)
+    cn=dhcp-internal (dhcpSharedNetwork/dhcpOptions)
+      cn=10.0.2.0 (dhcpSubnet)
+        cn=group1 (dhcpGroup/dhcpOptions)
+    cn=dhcp-thinclients (dhcpSharedNetwork/dhcpOptions)
+      cn=192.168.0.0 (dhcpSubnet)
+        cn=group1 (dhcpGroup/dhcpOptions)
+    ou=machines - PowerDNS base points here
+      cn=hostname (dhcpHost/domainrelatedobject/dnsDomainAux)
+</pre></blockquote>
+
+<P>This is not tested yet.  If the DHCP server require the dhcpHost
+entries to be in the dhcpGroup subtrees, the entries can be stored
+there instead of a common machines subtree, and the PowerDNS base
+would have to be moved one level up to the machine-info subtree.</p>
+
+<p>The combined object under the machines subtree would look something
+like this:</p>
+    
+<blockquote><pre>
+dn: dc=hostname,ou=machines,cn=machine-info,dc=skole,dc=skolelinux,dc=no
+dc: hostname
+objectClass: top
+objectClass: dhcpHost
+objectclass: domainrelatedobject
+objectclass: dnsDomainAux
+associateddomain: hostname.intern
+arecord: 10.11.12.13
+dhcpHWAddress: ethernet 00:00:00:00:00:00
+dhcpStatements: fixed-address hostname.intern
+</pre></blockquote>
+
+</p>One could even add the LTSP configuration associated with a given
+machine, as long as the required attributes are available in a
+auxiliary object class.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Circular_package_dependencies_harms_apt_recovery.html">Circular package dependencies harms apt recovery</a>
+ </div>
+ <div class="date">
+  2010-07-27 23:50
+ </div>
+
+ <div class="body">
+  
+<p>I discovered this while doing
+<a href="http://people.skolelinux.org/pere/blog/Automatic_upgrade_testing_from_Lenny_to_Squeeze.html">automated
+testing of upgrades from Debian Lenny to Squeeze</a>.  A few packages
+in Debian still got circular dependencies, and it is often claimed
+that apt and aptitude should be able to handle this just fine, but
+some times these dependency loops causes apt to fail.</p>
+
+<p>An example is from todays
+<a href="http://people.skolelinux.org/~pere/debian-upgrade-testing//test-20100727-lenny-squeeze-kde-aptitude.txt">upgrade
+of KDE using aptitude</a>.  In it, a bug in kdebase-workspace-data
+causes perl-modules to fail to upgrade.  The cause is simple.  If a
+package fail to unpack, then only part of packages with the circular
+dependency might end up being unpacked when unpacking aborts, and the
+ones already unpacked will fail to configure in the recovery phase
+because its dependencies are unavailable.</p>
+
+<p>In this log, the problem manifest itself with this error:</p>
+
+<blockquote><pre>
+dpkg: dependency problems prevent configuration of perl-modules:
+ perl-modules depends on perl (>= 5.10.1-1); however:
+  Version of perl on system is 5.10.0-19lenny2.
+dpkg: error processing perl-modules (--configure):
+ dependency problems - leaving unconfigured
+</pre></blockquote>
+
+<p>The perl/perl-modules circular dependency is already
+<a href="http://bugs.debian.org/527917">reported as a bug</a>, and will
+hopefully be solved as soon as possible, but it is not the only one,
+and each one of these loops in the dependency tree can cause similar
+failures.  Of course, they only occur when there are bugs in other
+packages causing the unpacking to fail, but it is rather nasty when
+the failure of one package causes the problem to become worse because
+of dependency loops.</p>
+
+<p>Thanks to
+<a href="http://lists.debian.org/debian-devel/2010/06/msg00116.html">the
+tireless effort by Bill Allombert</a>, the number of circular
+dependencies
+<a href="http://debian.semistable.com/debgraph.out.html">left in Debian
+is dropping</a>, and perhaps it will reach zero one day. :)</p>
+
+<p>Todays testing also exposed a bug in
+<a href="http://bugs.debian.org/590605">update-notifier</a> and
+<a href="http://bugs.debian.org/590604">different behaviour</a> between
+apt-get and aptitude, the latter possibly caused by some circular
+dependency.  Reported both to BTS to try to get someone to look at
+it.</p>
+
+ </div>
+ <div class="tags">
+
+  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/nuug">nuug</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Some_notes_on_Flash_in_Debian_and_Debian_Edu.html">Some notes on Flash in Debian and Debian Edu</a>
+ </div>
+ <div class="date">
+  2010-09-04 10:10
+ </div>
+
+ <div class="body">
+  
+<p>In the <a href="http://popcon.debian.org/unknown/by_vote">Debian
+popularity-contest numbers</a>, the adobe-flashplugin package the
+second most popular used package that is missing in Debian.  The sixth
+most popular is flashplayer-mozilla.  This is a clear indication that
+working flash is important for Debian users.  Around 10 percent of the
+users submitting data to popcon.debian.org have this package
+installed.</p>
+
+<p>In the report written by Lars Risan in August 2008
+(«<a href="http://wiki.skolelinux.no/Dokumentasjon/Rapporter?action=AttachFile&do=view&target=Skolelinux_i_bruk_rapport_1.0.pdf">Skolelinux
+i bruk â€“ Rapport for Hurum kommune, Universitetet i Agder og
+stiftelsen SLX Debian Labs</a>»), one of the most important problems
+schools experienced with <a href="http://www.skolelinux.org/">Debian
+Edu/Skolelinux</a> was the lack of working Flash.  A lot of educational
+web sites require Flash to work, and lacking working Flash support in
+the web browser and the problems with installing it was perceived as a
+good reason to stay with Windows.</p>
+
+<p>I once saw a funny and sad comment in a web forum, where Linux was
+said to be the retarded cousin that did not really understand
+everything you told him but could work fairly well.  This was a
+comment regarding the problems Linux have with proprietary formats and
+non-standard web pages, and is sad because it exposes a fairly common
+understanding of whose fault it is if web pages that only work in for
+example Internet Explorer 6 fail to work on Firefox, and funny because
+it explain very well how annoying it is for users when Linux
+distributions do not work with the documents they receive or the web
+pages they want to visit.</p>
+
+<p>This is part of the reason why I believe it is important for Debian
+and Debian Edu to have a well working Flash implementation in the
+distribution, to get at least popular sites as Youtube and Google
+Video to working out of the box.  For Squeeze, Debian have the chance
+to include the latest version of Gnash that will make this happen, as
+the new release 0.8.8 was published a few weeks ago and is resting in
+unstable.  The new version work with more sites that version 0.8.7.
+The Gnash maintainers have asked for a freeze exception, but the
+release team have not had time to reply to it yet.  I hope they agree
+with me that Flash is important for the Debian desktop users, and thus
+accept the new package into Squeeze.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web">web</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html">Software updates 2010-10-24</a>
+ </div>
+ <div class="date">
+  2010-10-24 22:45
+ </div>
+
+ <div class="body">
+  
+<p>Some updates.</p>
+
+<p>My <a href="http://pledgebank.com/gnash-avm2">gnash pledge</a> to
+raise money for the project is going well.  The lower limit of 10
+signers was reached in 24 hours, and so far 13 people have signed it.
+More signers and more funding is most welcome, and I am really curious
+how far we can get before the time limit of December 24 is reached.
+:)</p>
+
+<p>On the #gnash IRC channel on irc.freenode.net, I was just tipped
+about what appear to be a great code coverage tool capable of
+generating code coverage stats without any changes to the source code.
+It is called
+<a href="http://simonkagstrom.github.com/kcov/index.html">kcov</a>,
+and can be used using <tt>kcov &lt;directory&gt; &lt;binary&gt;</tt>.
+It is missing in Debian, but the git source built just fine in Squeeze
+after I installed libelf-dev, libdwarf-dev, pkg-config and
+libglib2.0-dev.  Failed to build in Lenny, but suspect that is
+solvable.  I hope kcov make it into Debian soon.</p>
+
+<p>Finally found time to wrap up the release notes for <a
+href="http://lists.debian.org/debian-edu-announce/2010/10/msg00002.html">a
+new alpha release of Debian Edu</a>, and just published the second
+alpha test release of the Squeeze based Debian Edu /
+<a href="http://www.skolelinux.org/">Skolelinux</a>
+release.  Give it a try if you need a complete linux solution for your
+school, including central infrastructure server, workstations, thin
+client servers and diskless workstations.  A nice touch added
+yesterday is RDP support on the thin client servers, for windows
+clients to get a Linux desktop on request.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Debian_in_3D.html">Debian in 3D</a>
+ </div>
+ <div class="date">
+  2010-11-09 16:10
+ </div>
+
+ <div class="body">
+  
+<p><img src="http://thingiverse-production.s3.amazonaws.com/renders/23/e0/c4/f9/2b/debswagtdose_preview_medium.jpg"></p>
+
+<p>3D printing is just great.  I just came across this Debian logo in
+3D linked in from
+<a href="http://blog.thingiverse.com/2010/11/09/participatory-branding/">the
+thingiverse blog</a>.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Gnash_buildbot_slave_and_Debian_kfreebsd.html">Gnash buildbot slave and Debian kfreebsd</a>
+ </div>
+ <div class="date">
+  2010-11-20 07:20
+ </div>
+
+ <div class="body">
+  
+<p>Answering
+<a href="http://www.listware.net/201011/gnash-dev/67431-gnash-dev-buildbot-looking-for-slaves.html">the
+call from the Gnash project</a> for
+<a href="http://www.gnashdev.org:8010">buildbot</a> slaves to test the
+current source, I have set up a virtual KVM machine on the Debian
+Edu/Skolelinux virtualization host to test the git source on
+Debian/Squeeze.  I hope this can help the developers in getting new
+releases out more often.</p>
+
+<p>As the developers want less main-stream build platforms tested to,
+I have considered setting up a <a
+href="http://www.debian.org/ports/kfreebsd-gnu/">Debian/kfreebsd</a>
+machine as well.  I have also considered using the kfreebsd
+architecture in Debian as a file server in NUUG to get access to the 5
+TB zfs volume we currently use to store DV video.  Because of this, I
+finally got around to do a test installation of Debian/Squeeze with
+kfreebsd.  Installation went fairly smooth, thought I noticed some
+visual glitches in the cdebconf dialogs (black cursor left on the
+screen at random locations).  Have not gotten very far with the
+testing.  Noticed cfdisk did not work, but fdisk did so it was not a
+fatal problem.  Have to spend some more time on it to see if it is
+useful as a file server for NUUG.  Will try to find time to set up a
+gnash buildbot slave on the Debian Edu/Skolelinux this weekend.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html">Lenny->Squeeze upgrades, apt vs aptitude with the Gnome and KDE desktop</a>
+ </div>
+ <div class="date">
+  2010-11-20 22:50
+ </div>
+
+ <div class="body">
+  
+<p>I'm still running upgrade testing of the
+<a href="http://people.skolelinux.org/~pere/debian-upgrade-testing/">Lenny
+Gnome and KDE Desktop</a>, but have not had time to spend on reporting the
+status.  Here is a short update based on a test I ran 20101118.</p>
+
+<p>I still do not know what a correct migration should look like, so I
+report any differences between apt and aptitude and hope someone else
+can see if anything should be changed.</p>
+
+<p>This is for Gnome:</p>
+
+<p>Installed using apt-get, missing with aptitude</p>
+
+<blockquote><p>
+  apache2.2-bin aptdaemon at-spi baobab binfmt-support
+  browser-plugin-gnash cheese-common cli-common cpp-4.3 cups-pk-helper
+  dmz-cursor-theme empathy empathy-common finger
+  freedesktop-sound-theme freeglut3 gconf-defaults-service gdm-themes
+  gedit-plugins geoclue geoclue-hostip geoclue-localnet geoclue-manual
+  geoclue-yahoo gnash gnash-common gnome gnome-backgrounds
+  gnome-cards-data gnome-codec-install gnome-core
+  gnome-desktop-environment gnome-disk-utility gnome-screenshot
+  gnome-search-tool gnome-session-canberra gnome-spell
+  gnome-system-log gnome-themes-extras gnome-themes-more
+  gnome-user-share gs-common gstreamer0.10-fluendo-mp3
+  gstreamer0.10-tools gtk2-engines gtk2-engines-pixbuf
+  gtk2-engines-smooth hal-info hamster-applet libapache2-mod-dnssd
+  libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
+  libart2.0-cil libatspi1.0-0 libboost-date-time1.42.0
+  libboost-python1.42.0 libboost-thread1.42.0 libchamplain-0.4-0
+  libchamplain-gtk-0.4-0 libcheese-gtk18 libclutter-gtk-0.10-0
+  libcryptui0 libcupsys2 libdiscid0 libeel2-data libelf1 libepc-1.0-2
+  libepc-common libepc-ui-1.0-2 libfreerdp-plugins-standard
+  libfreerdp0 libgail-common libgconf2.0-cil libgdata-common libgdata7
+  libgdl-1-common libgdu-gtk0 libgee2 libgeoclue0 libgexiv2-0 libgif4
+  libglade2.0-cil libglib2.0-cil libgmime2.4-cil libgnome-vfs2.0-cil
+  libgnome2.24-cil libgnomepanel2.24-cil libgnomeprint2.2-data
+  libgnomeprintui2.2-common libgnomevfs2-bin libgpod-common libgpod4
+  libgtk2.0-cil libgtkglext1 libgtksourceview-common
+  libgtksourceview2.0-common libmono-addins-gui0.2-cil
+  libmono-addins0.2-cil libmono-cairo2.0-cil libmono-corlib2.0-cil
+  libmono-i18n-west2.0-cil libmono-posix2.0-cil
+  libmono-security2.0-cil libmono-sharpzip2.84-cil
+  libmono-system2.0-cil libmtp8 libmusicbrainz3-6
+  libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libopal3.6.8
+  libpolkit-gtk-1-0 libpt-1.10.10-plugins-alsa
+  libpt-1.10.10-plugins-v4l libpt2.6.7 libpython2.6 librpm1 librpmio1
+  libsdl1.2debian libservlet2.4-java libsrtp0 libssh-4
+  libtelepathy-farsight0 libtelepathy-glib0 libtidy-0.99-0
+  libxalan2-java libxerces2-java media-player-info mesa-utils
+  mono-2.0-gac mono-gac mono-runtime nautilus-sendto
+  nautilus-sendto-empathy openoffice.org-writer2latex
+  openssl-blacklist p7zip p7zip-full pkg-config python-4suite-xml
+  python-aptdaemon python-aptdaemon-gtk python-axiom
+  python-beautifulsoup python-bugbuddy python-clientform
+  python-coherence python-configobj python-crypto python-cupshelpers
+  python-cupsutils python-eggtrayicon python-elementtree
+  python-epsilon python-evolution python-feedparser python-gdata
+  python-gdbm python-gst0.10 python-gtkglext1 python-gtkmozembed
+  python-gtksourceview2 python-httplib2 python-louie python-mako
+  python-markupsafe python-mechanize python-nevow python-notify
+  python-opengl python-openssl python-pam python-pkg-resources
+  python-pyasn1 python-pysqlite2 python-rdflib python-serial
+  python-tagpy python-twisted-bin python-twisted-conch
+  python-twisted-core python-twisted-web python-utidylib python-webkit
+  python-xdg python-zope.interface remmina remmina-plugin-data
+  remmina-plugin-rdp remmina-plugin-vnc rhythmbox-plugin-cdrecorder
+  rhythmbox-plugins rpm-common rpm2cpio seahorse-plugins shotwell
+  software-center svgalibg1 system-config-printer-udev
+  telepathy-gabble telepathy-mission-control-5 telepathy-salut tomboy
+  totem totem-coherence totem-mozilla totem-plugins
+  transmission-common xdg-user-dirs xdg-user-dirs-gtk xserver-xephyr
+  zip
+</p></blockquote>
+
+Installed using apt-get, removed with aptitude
+
+<blockquote><p>
+  arj bluez-utils cheese dhcdbd djvulibre-desktop ekiga eog
+  epiphany-extensions epiphany-gecko evolution-exchange
+  fast-user-switch-applet file-roller gcalctool gconf-editor gdm gedit
+  gedit-common gnome-app-install gnome-games gnome-games-data
+  gnome-nettool gnome-system-tools gnome-themes gnome-utils
+  gnome-vfs-obexftp gnome-volume-manager gnuchess gucharmap
+  guile-1.8-libs hal libavahi-compat-libdnssd1 libavahi-core5
+  libavahi-ui0 libbind9-50 libbluetooth2 libcamel1.2-11 libcdio7
+  libcucul0 libcurl3 libdirectfb-1.0-0 libdmx1 libdvdread3
+  libedata-cal1.2-6 libedataserver1.2-9 libeel2-2.20 libepc-1.0-1
+  libepc-ui-1.0-1 libexchange-storage1.2-3 libfaad0 libgadu3
+  libgalago3 libgd2-noxpm libgda3-3 libgda3-common libggz2 libggzcore9
+  libggzmod4 libgksu1.2-0 libgksuui1.0-1 libgmyth0 libgnome-desktop-2
+  libgnome-pilot2 libgnomecups1.0-1 libgnomeprint2.2-0
+  libgnomeprintui2.2-0 libgpod3 libgraphviz4 libgtk-vnc-1.0-0
+  libgtkhtml2-0 libgtksourceview1.0-0 libgtksourceview2.0-0
+  libgucharmap6 libhesiod0 libicu38 libisccc50 libisccfg50 libiw29
+  libjaxp1.3-java-gcj libkpathsea4 liblircclient0 libltdl3 liblwres50
+  libmagick++10 libmagick10 libmalaga7 libmozjs1d libmpfr1ldbl libmtp7
+  libmysqlclient15off libnautilus-burn4 libneon27 libnm-glib0
+  libnm-util0 libopal-2.2 libosp5 libparted1.8-10 libpisock9
+  libpisync1 libpoppler-glib3 libpoppler3 libpt-1.10.10 libraw1394-8
+  libsdl1.2debian-alsa libsensors3 libsexy2 libsmbios2 libsoup2.2-8
+  libspeexdsp1 libssh2-1 libsuitesparse-3.1.0 libsvga1
+  libswfdec-0.6-90 libtalloc1 libtotem-plparser10 libtrackerclient0
+  libvoikko1 libxalan2-java-gcj libxerces2-java-gcj libxklavier12
+  libxtrap6 libxxf86misc1 libzephyr3 mysql-common rhythmbox seahorse
+  sound-juicer swfdec-gnome system-config-printer totem-common
+  totem-gstreamer transmission-gtk vinagre vino w3c-dtd-xhtml wodim
+</p></blockquote>
+
+<p>Installed using aptitude, missing with apt-get</p>
+
+<blockquote><p>
+  gstreamer0.10-gnomevfs
+</p></blockquote>
+
+<p>Installed using aptitude, removed with apt-get</p>
+
+<blockquote><p>
+[nothing]
+</p></blockquote>
+
+<p>This is for KDE:</p>
+
+<p>Installed using apt-get, missing with aptitude</p>
+
+<blockquote><p>
+  autopoint bomber bovo cantor cantor-backend-kalgebra cpp-4.3 dcoprss
+  edict espeak espeak-data eyesapplet fifteenapplet finger gettext
+  ghostscript-x git gnome-audio gnugo granatier gs-common
+  gstreamer0.10-pulseaudio indi kaddressbook-plugins kalgebra
+  kalzium-data kanjidic kapman kate-plugins kblocks kbreakout kbstate
+  kde-icons-mono kdeaccessibility kdeaddons-kfile-plugins
+  kdeadmin-kfile-plugins kdeartwork-misc kdeartwork-theme-window
+  kdeedu kdeedu-data kdeedu-kvtml-data kdegames kdegames-card-data
+  kdegames-mahjongg-data kdegraphics-kfile-plugins kdelirc
+  kdemultimedia-kfile-plugins kdenetwork-kfile-plugins
+  kdepim-kfile-plugins kdepim-kio-plugins kdessh kdetoys kdewebdev
+  kdiamond kdnssd kfilereplace kfourinline kgeography-data kigo
+  killbots kiriki klettres-data kmoon kmrml knewsticker-scripts
+  kollision kpf krosspython ksirk ksmserver ksquares kstars-data
+  ksudoku kubrick kweather libasound2-plugins libboost-python1.42.0
+  libcfitsio3 libconvert-binhex-perl libcrypt-ssleay-perl libdb4.6++
+  libdjvulibre-text libdotconf1.0 liberror-perl libespeak1
+  libfinance-quote-perl libgail-common libgsl0ldbl libhtml-parser-perl
+  libhtml-tableextract-perl libhtml-tagset-perl libhtml-tree-perl
+  libio-stringy-perl libkdeedu4 libkdegames5 libkiten4 libkpathsea5
+  libkrossui4 libmailtools-perl libmime-tools-perl
+  libnews-nntpclient-perl libopenbabel3 libportaudio2 libpulse-browse0
+  libservlet2.4-java libspeechd2 libtiff-tools libtimedate-perl
+  libunistring0 liburi-perl libwww-perl libxalan2-java libxerces2-java
+  lirc luatex marble networkstatus noatun-plugins
+  openoffice.org-writer2latex palapeli palapeli-data parley
+  parley-data poster psutils pulseaudio pulseaudio-esound-compat
+  pulseaudio-module-x11 pulseaudio-utils quanta-data rocs rsync
+  speech-dispatcher step svgalibg1 texlive-binaries texlive-luatex
+  ttf-sazanami-gothic
+</p></blockquote>
+
+<p>Installed using apt-get, removed with aptitude</p>
+
+<blockquote><p>
+  amor artsbuilder atlantik atlantikdesigner blinken bluez-utils cvs
+  dhcdbd djvulibre-desktop imlib-base imlib11 kalzium kanagram kandy
+  kasteroids katomic kbackgammon kbattleship kblackbox kbounce kbruch
+  kcron kdat kdemultimedia-kappfinder-data kdeprint kdict kdvi kedit
+  keduca kenolaba kfax kfaxview kfouleggs kgeography kghostview
+  kgoldrunner khangman khexedit kiconedit kig kimagemapeditor
+  kitchensync kiten kjumpingcube klatin klettres klickety klines
+  klinkstatus kmag kmahjongg kmailcvt kmenuedit kmid kmilo kmines
+  kmousetool kmouth kmplot knetwalk kodo kolf kommander konquest kooka
+  kpager kpat kpdf kpercentage kpilot kpoker kpovmodeler krec
+  kregexpeditor kreversi ksame ksayit kshisen ksig ksim ksirc ksirtet
+  ksmiletris ksnake ksokoban kspaceduel kstars ksvg ksysv kteatime
+  ktip ktnef ktouch ktron kttsd ktuberling kturtle ktux kuickshow
+  kverbos kview kviewshell kvoctrain kwifimanager kwin kwin4 kwordquiz
+  kworldclock kxsldbg libakode2 libarts1-akode libarts1-audiofile
+  libarts1-mpeglib libarts1-xine libavahi-compat-libdnssd1
+  libavahi-core5 libavc1394-0 libbind9-50 libbluetooth2
+  libboost-python1.34.1 libcucul0 libcurl3 libcvsservice0
+  libdirectfb-1.0-0 libdjvulibre21 libdvdread3 libfaad0 libfreebob0
+  libgd2-noxpm libgraphviz4 libgsmme1c2a libgtkhtml2-0 libicu38
+  libiec61883-0 libindex0 libisccc50 libisccfg50 libiw29
+  libjaxp1.3-java-gcj libk3b3 libkcal2b libkcddb1 libkdeedu3
+  libkdegames1 libkdepim1a libkgantt0 libkleopatra1 libkmime2
+  libkpathsea4 libkpimexchange1 libkpimidentities1 libkscan1
+  libksieve0 libktnef1 liblockdev1 libltdl3 liblwres50 libmagick10
+  libmimelib1c2a libmodplug0c2 libmozjs1d libmpcdec3 libmpfr1ldbl
+  libneon27 libnm-util0 libopensync0 libpisock9 libpoppler-glib3
+  libpoppler-qt2 libpoppler3 libraw1394-8 librss1 libsensors3
+  libsmbios2 libssh2-1 libsuitesparse-3.1.0 libswfdec-0.6-90
+  libtalloc1 libxalan2-java-gcj libxerces2-java-gcj libxtrap6 lskat
+  mpeglib network-manager-kde noatun pmount tex-common texlive-base
+  texlive-common texlive-doc-base texlive-fonts-recommended tidy
+  ttf-dustin ttf-kochi-gothic ttf-sjfonts
+</p></blockquote>
+
+<p>Installed using aptitude, missing with apt-get</p>
+
+<blockquote><p>
+  dolphin kde-core kde-plasma-desktop kde-standard kde-window-manager
+  kdeartwork kdebase kdebase-apps kdebase-workspace
+  kdebase-workspace-bin kdebase-workspace-data kdeutils kscreensaver
+  kscreensaver-xsavers libgle3 libkonq5 libkonq5-templates libnetpbm10
+  netpbm plasma-widget-folderview plasma-widget-networkmanagement
+  xscreensaver-data-extra xscreensaver-gl xscreensaver-gl-extra
+  xscreensaver-screensaver-bsod
+</p></blockquote>
+
+<p>Installed using aptitude, removed with apt-get</p>
+
+<blockquote><p>
+  kdebase-bin konq-plugins konqueror
+</p></blockquote>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html">Migrating Xen virtual machines using LVM to KVM using disk images</a>
+ </div>
+ <div class="date">
+  2010-11-22 11:20
+ </div>
+
+ <div class="body">
+  
+<p>Most of the computers in use by the
+<a href="http://www.skolelinux.org/">Debian Edu/Skolelinux project</a>
+are virtual machines.  And they have been Xen machines running on a
+fairly old IBM eserver xseries 345 machine, and we wanted to migrate
+them to KVM on a newer Dell PowerEdge 2950 host machine.  This was a
+bit harder that it could have been, because we set up the Xen virtual
+machines to get the virtual partitions from LVM, which as far as I
+know is not supported by KVM.  So to migrate, we had to convert
+several LVM logical volumes to partitions on a virtual disk file.</p>
+
+<p>I found
+<a href="http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM">a
+nice recipe</a> to do this, and wrote the following script to do the
+migration.  It uses qemu-img from the qemu package to make the disk
+image, parted to partition it, losetup and kpartx to present the disk
+image partions as devices, and dd to copy the data.  I NFS mounted the
+new servers storage area on the old server to do the migration.</p>
+
+<pre>
+#!/bin/sh
+
+# Based on
+# http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM
+
+set -e
+set -x
+
+if [ -z "$1" ] ; then
+    echo "Usage: $0 &lt;hostname&gt;"
+    exit 1
+else
+    host="$1"
+fi
+
+if [ ! -e /dev/vg_data/$host-disk ] ; then
+    echo "error: unable to find LVM volume for $host"
+    exit 1
+fi
+
+# Partitions need to be a bit bigger than the LVM LVs.  not sure why.
+disksize=$( lvs --units m | grep $host-disk | awk '{sum = sum + $4} END { print int(sum * 1.05) }')
+swapsize=$( lvs --units m | grep $host-swap | awk '{sum = sum + $4} END { print int(sum * 1.05) }')
+totalsize=$(( ( $disksize + $swapsize ) ))
+
+img=$host.img
+#dd if=/dev/zero of=$img bs=1M count=$(( $disksize + $swapsize ))
+qemu-img create $img ${totalsize}MMaking room on the Debian Edu/Sqeeze DVD
+
+parted $img mklabel msdos
+parted $img mkpart primary linux-swap 0 $disksize
+parted $img mkpart primary ext2 $disksize $totalsize
+parted $img set 1 boot on
+
+modprobe dm-mod
+losetup /dev/loop0 $img
+kpartx -a /dev/loop0
+
+dd if=/dev/vg_data/$host-disk of=/dev/mapper/loop0p1 bs=1M
+fsck.ext3 -f /dev/mapper/loop0p1 || true
+mkswap /dev/mapper/loop0p2
+
+kpartx -d /dev/loop0
+losetup -d /dev/loop0
+</pre>
+
+<p>The script is perhaps so simple that it is not copyrightable, but
+if it is, it is licenced using GPL v2 or later at your discretion.</p>
+
+<p>After doing this, I booted a Debian CD in rescue mode in KVM with
+the new disk image attached, installed grub-pc and linux-image-686 and
+set up grub to boot from the disk image.  After this, the KVM machines
+seem to work just fine.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades_of_the_Gnome_and_KDE_desktop__now_with_apt_get_autoremove.html">Lenny->Squeeze upgrades of the Gnome and KDE desktop, now with apt-get autoremove</a>
+ </div>
+ <div class="date">
+  2010-11-22 14:15
+ </div>
+
+ <div class="body">
+  
+<p>Michael Biebl suggested to me on IRC, that I changed my automated
+upgrade testing of the
+<a href="http://people.skolelinux.org/~pere/debian-upgrade-testing/">Lenny
+Gnome and KDE Desktop</a> to do <tt>apt-get autoremove</tt> when using apt-get.
+This seem like a very good idea, so I adjusted by test scripts and
+can now present the updated result from today:</p>
+
+<p>This is for Gnome:</p>
+
+<p>Installed using apt-get, missing with aptitude</p>
+
+<blockquote><p>
+  apache2.2-bin
+  aptdaemon
+  baobab
+  binfmt-support
+  browser-plugin-gnash
+  cheese-common
+  cli-common
+  cups-pk-helper
+  dmz-cursor-theme
+  empathy
+  empathy-common
+  freedesktop-sound-theme
+  freeglut3
+  gconf-defaults-service
+  gdm-themes
+  gedit-plugins
+  geoclue
+  geoclue-hostip
+  geoclue-localnet
+  geoclue-manual
+  geoclue-yahoo
+  gnash
+  gnash-common
+  gnome
+  gnome-backgrounds
+  gnome-cards-data
+  gnome-codec-install
+  gnome-core
+  gnome-desktop-environment
+  gnome-disk-utility
+  gnome-screenshot
+  gnome-search-tool
+  gnome-session-canberra
+  gnome-system-log
+  gnome-themes-extras
+  gnome-themes-more
+  gnome-user-share
+  gstreamer0.10-fluendo-mp3
+  gstreamer0.10-tools
+  gtk2-engines
+  gtk2-engines-pixbuf
+  gtk2-engines-smooth
+  hamster-applet
+  libapache2-mod-dnssd
+  libapr1
+  libaprutil1
+  libaprutil1-dbd-sqlite3
+  libaprutil1-ldap
+  libart2.0-cil
+  libboost-date-time1.42.0
+  libboost-python1.42.0
+  libboost-thread1.42.0
+  libchamplain-0.4-0
+  libchamplain-gtk-0.4-0
+  libcheese-gtk18
+  libclutter-gtk-0.10-0
+  libcryptui0
+  libdiscid0
+  libelf1
+  libepc-1.0-2
+  libepc-common
+  libepc-ui-1.0-2
+  libfreerdp-plugins-standard
+  libfreerdp0
+  libgconf2.0-cil
+  libgdata-common
+  libgdata7
+  libgdu-gtk0
+  libgee2
+  libgeoclue0
+  libgexiv2-0
+  libgif4
+  libglade2.0-cil
+  libglib2.0-cil
+  libgmime2.4-cil
+  libgnome-vfs2.0-cil
+  libgnome2.24-cil
+  libgnomepanel2.24-cil
+  libgpod-common
+  libgpod4
+  libgtk2.0-cil
+  libgtkglext1
+  libgtksourceview2.0-common
+  libmono-addins-gui0.2-cil
+  libmono-addins0.2-cil
+  libmono-cairo2.0-cil
+  libmono-corlib2.0-cil
+  libmono-i18n-west2.0-cil
+  libmono-posix2.0-cil
+  libmono-security2.0-cil
+  libmono-sharpzip2.84-cil
+  libmono-system2.0-cil
+  libmtp8
+  libmusicbrainz3-6
+  libndesk-dbus-glib1.0-cil
+  libndesk-dbus1.0-cil
+  libopal3.6.8
+  libpolkit-gtk-1-0
+  libpt2.6.7
+  libpython2.6
+  librpm1
+  librpmio1
+  libsdl1.2debian
+  libsrtp0
+  libssh-4
+  libtelepathy-farsight0
+  libtelepathy-glib0
+  libtidy-0.99-0
+  media-player-info
+  mesa-utils
+  mono-2.0-gac
+  mono-gac
+  mono-runtime
+  nautilus-sendto
+  nautilus-sendto-empathy
+  p7zip-full
+  pkg-config
+  python-aptdaemon
+  python-aptdaemon-gtk
+  python-axiom
+  python-beautifulsoup
+  python-bugbuddy
+  python-clientform
+  python-coherence
+  python-configobj
+  python-crypto
+  python-cupshelpers
+  python-elementtree
+  python-epsilon
+  python-evolution
+  python-feedparser
+  python-gdata
+  python-gdbm
+  python-gst0.10
+  python-gtkglext1
+  python-gtksourceview2
+  python-httplib2
+  python-louie
+  python-mako
+  python-markupsafe
+  python-mechanize
+  python-nevow
+  python-notify
+  python-opengl
+  python-openssl
+  python-pam
+  python-pkg-resources
+  python-pyasn1
+  python-pysqlite2
+  python-rdflib
+  python-serial
+  python-tagpy
+  python-twisted-bin
+  python-twisted-conch
+  python-twisted-core
+  python-twisted-web
+  python-utidylib
+  python-webkit
+  python-xdg
+  python-zope.interface
+  remmina
+  remmina-plugin-data
+  remmina-plugin-rdp
+  remmina-plugin-vnc
+  rhythmbox-plugin-cdrecorder
+  rhythmbox-plugins
+  rpm-common
+  rpm2cpio
+  seahorse-plugins
+  shotwell
+  software-center
+  system-config-printer-udev
+  telepathy-gabble
+  telepathy-mission-control-5
+  telepathy-salut
+  tomboy
+  totem
+  totem-coherence
+  totem-mozilla
+  totem-plugins
+  transmission-common
+  xdg-user-dirs
+  xdg-user-dirs-gtk
+  xserver-xephyr
+</p></blockquote>
+
+<p>Installed using apt-get, removed with aptitude</p>
+
+<blockquote><p>
+  cheese
+  ekiga
+  eog
+  epiphany-extensions
+  evolution-exchange
+  fast-user-switch-applet
+  file-roller
+  gcalctool
+  gconf-editor
+  gdm
+  gedit
+  gedit-common
+  gnome-games
+  gnome-games-data
+  gnome-nettool
+  gnome-system-tools
+  gnome-themes
+  gnuchess
+  gucharmap
+  guile-1.8-libs
+  libavahi-ui0
+  libdmx1
+  libgalago3
+  libgtk-vnc-1.0-0
+  libgtksourceview2.0-0
+  liblircclient0
+  libsdl1.2debian-alsa
+  libspeexdsp1
+  libsvga1
+  rhythmbox
+  seahorse
+  sound-juicer
+  system-config-printer
+  totem-common
+  transmission-gtk
+  vinagre
+  vino
+</p></blockquote>
+
+<p>Installed using aptitude, missing with apt-get</p>
+
+<blockquote><p>
+  gstreamer0.10-gnomevfs
+</p></blockquote>
+
+<p>Installed using aptitude, removed with apt-get</p>
+
+<blockquote><p>
+[nothing]
+</p></blockquote>
+
+<p>This is for KDE:</p>
+
+<p>Installed using apt-get, missing with aptitude</p>
+
+<blockquote><p>
+  ksmserver
+</p></blockquote>
+
+<p>Installed using apt-get, removed with aptitude</p>
+
+<blockquote><p>
+  kwin
+  network-manager-kde
+</p></blockquote>
+
+<p>Installed using aptitude, missing with apt-get</p>
+
+<blockquote><p>
+  arts
+  dolphin
+  freespacenotifier
+  google-gadgets-gst
+  google-gadgets-xul
+  kappfinder
+  kcalc
+  kcharselect
+  kde-core
+  kde-plasma-desktop
+  kde-standard
+  kde-window-manager
+  kdeartwork
+  kdeartwork-emoticons
+  kdeartwork-style
+  kdeartwork-theme-icon
+  kdebase
+  kdebase-apps
+  kdebase-workspace
+  kdebase-workspace-bin
+  kdebase-workspace-data
+  kdeeject
+  kdelibs
+  kdeplasma-addons
+  kdeutils
+  kdewallpapers
+  kdf
+  kfloppy
+  kgpg
+  khelpcenter4
+  kinfocenter
+  konq-plugins-l10n
+  konqueror-nsplugins
+  kscreensaver
+  kscreensaver-xsavers
+  ktimer
+  kwrite
+  libgle3
+  libkde4-ruby1.8
+  libkonq5
+  libkonq5-templates
+  libnetpbm10
+  libplasma-ruby
+  libplasma-ruby1.8
+  libqt4-ruby1.8
+  marble-data
+  marble-plugins
+  netpbm
+  nuvola-icon-theme
+  plasma-dataengines-workspace
+  plasma-desktop
+  plasma-desktopthemes-artwork
+  plasma-runners-addons
+  plasma-scriptengine-googlegadgets
+  plasma-scriptengine-python
+  plasma-scriptengine-qedje
+  plasma-scriptengine-ruby
+  plasma-scriptengine-webkit
+  plasma-scriptengines
+  plasma-wallpapers-addons
+  plasma-widget-folderview
+  plasma-widget-networkmanagement
+  ruby
+  sweeper
+  update-notifier-kde
+  xscreensaver-data-extra
+  xscreensaver-gl
+  xscreensaver-gl-extra
+  xscreensaver-screensaver-bsod
+</p></blockquote>
+
+<p>Installed using aptitude, removed with apt-get</p>
+
+<blockquote><p>
+  ark
+  google-gadgets-common
+  google-gadgets-qt
+  htdig
+  kate
+  kdebase-bin
+  kdebase-data
+  kdepasswd
+  kfind
+  klipper
+  konq-plugins
+  konqueror
+  ksysguard
+  ksysguardd
+  libarchive1
+  libcln6
+  libeet1
+  libeina-svn-06
+  libggadget-1.0-0b
+  libggadget-qt-1.0-0b
+  libgps19
+  libkdecorations4
+  libkephal4
+  libkonq4
+  libkonqsidebarplugin4a
+  libkscreensaver5
+  libksgrd4
+  libksignalplotter4
+  libkunitconversion4
+  libkwineffects1a
+  libmarblewidget4
+  libntrack-qt4-1
+  libntrack0
+  libplasma-geolocation-interface4
+  libplasmaclock4a
+  libplasmagenericshell4
+  libprocesscore4a
+  libprocessui4a
+  libqalculate5
+  libqedje0a
+  libqtruby4shared2
+  libqzion0a
+  libruby1.8
+  libscim8c2a
+  libsmokekdecore4-3
+  libsmokekdeui4-3
+  libsmokekfile3
+  libsmokekhtml3
+  libsmokekio3
+  libsmokeknewstuff2-3
+  libsmokeknewstuff3-3
+  libsmokekparts3
+  libsmokektexteditor3
+  libsmokekutils3
+  libsmokenepomuk3
+  libsmokephonon3
+  libsmokeplasma3
+  libsmokeqtcore4-3
+  libsmokeqtdbus4-3
+  libsmokeqtgui4-3
+  libsmokeqtnetwork4-3
+  libsmokeqtopengl4-3
+  libsmokeqtscript4-3
+  libsmokeqtsql4-3
+  libsmokeqtsvg4-3
+  libsmokeqttest4-3
+  libsmokeqtuitools4-3
+  libsmokeqtwebkit4-3
+  libsmokeqtxml4-3
+  libsmokesolid3
+  libsmokesoprano3
+  libtaskmanager4a
+  libtidy-0.99-0
+  libweather-ion4a
+  libxklavier16
+  libxxf86misc1
+  okteta
+  oxygencursors
+  plasma-dataengines-addons
+  plasma-scriptengine-superkaramba
+  plasma-widget-lancelot
+  plasma-widgets-addons
+  plasma-widgets-workspace
+  polkit-kde-1
+  ruby1.8
+  systemsettings
+  update-notifier-common
+</p></blockquote>
+
+<p>Running apt-get autoremove made the results using apt-get and
+aptitude a bit more similar, but there are still quite a lott of
+differences.  I have no idea what packages should be installed after
+the upgrade, but hope those that do can have a look.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Why_isn_t_Debian_Edu_using_VLC_.html">Why isn't Debian Edu using VLC?</a>
+ </div>
+ <div class="date">
+  2010-11-27 11:30
+ </div>
+
+ <div class="body">
+  
+<p>In the latest issue of Linux Journal, the readers choices were
+presented, and the winner among the multimedia player were VLC.
+Personally, I like VLC, and it is my player of choice when I first try
+to play a video file or stream.  Only if VLC fail will I drag out
+gmplayer to see if it can do better.  The reason is mostly the failure
+model and trust.  When VLC fail, it normally pop up a error message
+reporting the problem.  When mplayer fail, it normally segfault or
+just hangs.  The latter failure mode drain my trust in the program.<p>
+
+<p>But even if VLC is my player of choice, we have choosen to use
+mplayer in <a href="http://www.skolelinux.org/">Debian
+Edu/Skolelinux</a>.  The reason is simple.  We need a good browser
+plugin to play web videos seamlessly, and the VLC browser plugin is
+not very good.  For example, it lack in-line control buttons, so there
+is no way for the user to pause the video.  Also, when I
+<a href="http://wiki.debian.org/DebianEdu/BrowserMultimedia">last
+tested the browser plugins</a> available in Debian, the VLC plugin
+failed on several video pages where mplayer based plugins worked.  If
+the browser plugin for VLC was as good as the gecko-mediaplayer
+package (which uses mplayer), we would switch.</P>
+
+<p>While VLC is a good player, its user interface is slightly
+annoying.  The most annoying feature is its inconsistent use of
+keyboard shortcuts.  When the player is in full screen mode, its
+shortcuts are different from when it is playing the video in a window.
+For example, space only work as pause when in full screen mode.  I
+wish it had consisten shortcuts and that space also would work when in
+window mode.  Another nice shortcut in gmplayer is [enter] to restart
+the current video.  It is very nice when playing short videos from the
+web and want to restart it when new people arrive to have a look at
+what is going on.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>, <a href="http://people.skolelinux.org/pere/blog/tags/video">video</a>, <a href="http://people.skolelinux.org/pere/blog/tags/web">web</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Now_accepting_bitcoins___anonymous_and_distributed_p2p_crypto_money.html">Now accepting bitcoins - anonymous and distributed p2p crypto-money</a>
+ </div>
+ <div class="date">
+  2010-12-10 08:20
+ </div>
+
+ <div class="body">
+  
+<p>With this weeks lawless
+<a href="http://www.salon.com/news/opinion/glenn_greenwald/2010/12/06/wikileaks/index.html">governmental
+attacks</a> on Wikileak and
+<a href="http://www.salon.com/technology/dan_gillmor/2010/12/06/war_on_speech">free
+speech</a>, it has become obvious that PayPal, visa and mastercard can
+not be trusted to handle money transactions.
+A blog post from
+<a href="http://webmink.com/2010/12/06/now-accepting-bitcoin/">Simon
+Phipps on bitcoin</a> reminded me about a project that a friend of
+mine mentioned earlier.  I decided to follow Simon's example, and get
+involved with <a href="http://www.bitcoin.org/">BitCoin</a>.  I got
+some help from my friend to get it all running, and he even handed me
+some bitcoins to get started.  I even donated a few bitcoins to Simon
+for helping me remember BitCoin.</p>
+
+<p>So, what is bitcoins, you probably wonder?  It is a digital
+crypto-currency, decentralised and handled using peer-to-peer
+networks.  It allows anonymous transactions and prohibits central
+control over the transactions, making it impossible for governments
+and companies alike to block donations and other transactions.  The
+source is free software, and while the key dependency wxWidgets 2.9
+for the graphical user interface is missing in Debian, the command
+line client builds just fine.  Hopefully Jonas
+<a href="http://bugs.debian.org/578157">will get the package into
+Debian</a> soon.</p>
+
+<p>Bitcoins can be converted to other currencies, like USD and EUR.
+There are <a href="http://www.bitcoin.org/trade">companies accepting
+bitcoins</a> when selling services and goods, and there are even
+currency "stock" markets where the exchange rate is decided.  There
+are not many users so far, but the concept seems promising.  If you
+want to get started and lack a friend with any bitcoins to spare,
+you can even get
+<a href="https://freebitcoins.appspot.com/">some for free</a> (0.05
+bitcoin at the time of writing).  Use
+<a href="http://www.bitcoinwatch.com/">BitcoinWatch</a> to keep an eye
+on the current exchange rates.</p>
+
+<p>As an experiment, I have decided to set up bitcoind on one of my
+machines.  If you want to support my activity, please send Bitcoin
+donations to the address
+<b>15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</b>.  Thank you!</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin</a>, <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/personvern">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Some_thoughts_on_BitCoins.html">Some thoughts on BitCoins</a>
+ </div>
+ <div class="date">
+  2010-12-11 15:10
+ </div>
+
+ <div class="body">
+  
+<p>As I continue to explore
+<a href="http://www.bitcoin.org/">BitCoin</a>, I've starting to wonder
+what properties the system have, and how it will be affected by laws
+and regulations here in Norway.  Here are some random notes.</p>
+
+<p>One interesting thing to note is that since the transactions are
+verified using a peer to peer network, all details about a transaction
+is known to everyone.  This means that if a BitCoin address has been
+published like I did with mine in my initial post about BitCoin, it is
+possible for everyone to see how many BitCoins have been transfered to
+that address.  There is even a web service to look at the details for
+all transactions.  There I can see that my address
+<a href="http://blockexplorer.com/address/15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a>
+have received 16.06 Bitcoin, the
+<a href="http://blockexplorer.com/address/1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3">1LfdGnGuWkpSJgbQySxxCWhv8MHqvwst3</a>
+address of Simon Phipps have received 181.97 BitCoin and the address
+<a href="http://blockexplorer.com/address/1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt">1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt</A>
+of EFF have received 2447.38 BitCoins so far.  Thank you to each and
+every one of you that donated bitcoins to support my activity. The
+fact that anyone can see how much money was transfered to a given
+address make it more obvious why the BitCoin community recommend to
+generate and hand out a new address for each transaction.  I'm told
+there is no way to track which addresses belong to a given person or
+organisation without the person or organisation revealing it
+themselves, as Simon, EFF and I have done.</p>
+
+<p>In Norway, and in most other countries, there are laws and
+regulations limiting how much money one can transfer across the border
+without declaring it.  There are money laundering, tax and accounting
+laws and regulations I would expect to apply to the use of BitCoin.
+If the Skolelinux foundation
+(<a href="http://linuxiskolen.no/slxdebianlabs/donations.html">SLX
+Debian Labs</a>) were to accept donations in BitCoin in addition to
+normal bank transfers like EFF is doing, how should this be accounted?
+Given that it is impossible to know if money can across the border or
+not, should everything or nothing be declared?  What exchange rate
+should be used when calculating taxes?  Would receivers have to pay
+income tax if the foundation were to pay Skolelinux contributors in
+BitCoin?  I have no idea, but it would be interesting to know.</p>
+
+<p>For a currency to be useful and successful, it must be trusted and
+accepted by a lot of users.  It must be possible to get easy access to
+the currency (as a wage or using currency exchanges), and it must be
+easy to spend it.  At the moment BitCoin seem fairly easy to get
+access to, but there are very few places to spend it.  I am not really
+a regular user of any of the vendor types currently accepting BitCoin,
+so I wonder when my kind of shop would start accepting BitCoins.  I
+would like to buy electronics, travels and subway tickets, not herbs
+and books. :) The currency is young, and this will improve over time
+if it become popular, but I suspect regular banks will start to lobby
+to get BitCoin declared illegal if it become popular.  I'm sure they
+will claim it is helping fund terrorism and money laundering (which
+probably would be true, as is any currency in existence), but I
+believe the problems should be solved elsewhere and not by blaming
+currencies.</p>
+
+<p>The process of creating new BitCoins is called mining, and it is
+CPU intensive process that depend on a bit of luck as well (as one is
+competing against all the other miners currently spending CPU cycles
+to see which one get the next lump of cash).  The "winner" get 50
+BitCoin when this happen.  Yesterday I came across the obvious way to
+join forces to increase ones changes of getting at least some coins,
+by coordinating the work on mining BitCoins across several machines
+and people, and sharing the result if one is lucky and get the 50
+BitCoins.  Check out
+<a href="http://www.bluishcoder.co.nz/bitcoin-pool/">BitCoin Pool</a>
+if this sounds interesting.  I have not had time to try to set up a
+machine to participate there yet, but have seen that running on ones
+own for a few days have not yield any BitCoins througth mining
+yet.</p>
+
+<p>Update 2010-12-15: Found an <a
+href="http://inertia.posterous.com/reply-to-the-underground-economist-why-bitcoi">interesting
+criticism</a> of bitcoin.  Not quite sure how valid it is, but thought
+it was interesting to read.  The arguments presented seem to be
+equally valid for gold, which was used as a currency for many years.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin</a>, <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/personvern">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>.
+ </div>
+</div>
+<div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/How_to_test_if_a_laptop_is_working_with_Linux.html">How to test if a laptop is working with Linux</a>
+ </div>
+ <div class="date">
+  2010-12-22 14:55
+ </div>
+
+ <div class="body">
+  
+<p>The last few days I have spent at work here at the <a
+href="http://www.uio.no/">University of oslo</a> testing if the new
+batch of computers will work with Linux.  Every year for the last few
+years the university have organized shared bid of a few thousand
+computers, and this year HP won the bid.  Two different desktops and
+five different laptops are on the list this year.  We in the UNIX
+group want to know which one of these computers work well with RHEL
+and Ubuntu, the two Linux distributions we currently handle at the
+university.</p>
+
+<p>My test method is simple, and I share it here to get feedback and
+perhaps inspire others to test hardware as well.  To test, I PXE
+install the OS version of choice, and log in as my normal user and run
+a few applications and plug in selected pieces of hardware.  When
+something fail, I make a note about this in the test matrix and move
+on.  If I have some spare time I try to report the bug to the OS
+vendor, but as I only have the machines for a short time, I rarely
+have the time to do this for all the problems I find.</p>
+
+<p>Anyway, to get to the point of this post.  Here is the simple tests
+I perform on a new model.</p>
+
+<ul>
+
+<li>Is PXE installation working?  I'm testing with RHEL6, Ubuntu Lucid
+and Ubuntu Maverik at the moment.  If I feel like it, I also test with
+RHEL5 and Debian Edu/Squeeze.</li>
+
+<li>Is X.org working?  If the graphical login screen show up after
+installation, X.org is working.</li>
+
+<li>Is hardware accelerated OpenGL working?  Running glxgears (in
+package mesa-utils on Ubuntu) and writing down the frames per second
+reported by the program.</li>
+
+<li>Is sound working?  With Gnome and KDE, a sound is played when
+logging in, and if I can hear this the test is successful.  If there
+are several audio exits on the machine, I try them all and check if
+the Gnome/KDE audio mixer can control where to send the sound.  I
+normally test this by playing
+<a href="http://www.nuug.no/aktiviteter/20101012-chef/ ">a HTML5
+video</a> in Firefox/Iceweasel.</li>
+
+<li>Is the USB subsystem working?  I test this by plugging in a USB
+memory stick and see if Gnome/KDE notices this.</li>
+
+<li>Is the CD/DVD player working?  I test this by inserting any CD/DVD
+I have lying around, and see if Gnome/KDE notices this.</li>
+
+<li>Is any built in camera working?  Test using cheese, and see if a
+picture from the v4l device show up.</li>
+
+<li>Is bluetooth working?  Use the Gnome/KDE browsing tool to see if
+any bluetooth devices are discovered.  In my office, I normally see a
+few.</li>
+
+<li>For laptops, is the SD or Compaq Flash reader working.  I have
+memory modules lying around, and stick them in and see if Gnome/KDE
+notice this.</li>
+
+<li>For laptops, is suspecd/hibernate working?  I'm testing if the
+special button work, and if the laptop continue to work after
+resume.</li>
+
+<li>For laptops, is the extra buttons working, like audio level,
+adjusting background light, switching on/off external video output,
+switching on/off wifi, bluetooth, etc?  The set of buttons differ from
+laptop to laptop, so I just write down which are working and which are
+not.</li>
+
+<li>Some laptops have smart card readers, finger print readers,
+acceleration sensors etc.  I rarely test these, as I do not know how
+to quickly test if they are working or not, so I only document their
+existence.</li>
+
+</ul>
+
+<p>By now I suspect you are really curious what the test results are
+for the HP machines I am testing.  I'm not done yet, so I will report
+the test results later.  For now I can report that HP 8100 Elite work
+fine, and hibernation fail with HP EliteBook 8440p on Ubuntu Lucid,
+and audio fail on RHEL6.  Ubuntu Maverik worked with 8440p.  As you
+can see, I have most machines left to test.  One interesting
+observation is that Ubuntu Lucid has almost twice the framerate than
+RHEL6 with glxgears.  No idea why.</p>
+
+ </div>
+ <div class="tags">
+
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+ </div>
+</div>
 <div class="padding"></div>
 
  <p style="text-align: right;"><a href="debian.rss"><img src="http://people.skolelinux.org/pere/blog/xml.gif" alt="RSS Feed" width="36" height="14"></a></p>
@@ -1671,6 +3696,13 @@ changes, it will not be an option for Debian Edu based on Squeeze.</p>
 <h2>Archive</h2>
 <ul>
 
+<li>2011
+<ul>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (11)</a></li>
+
+</ul></li>
+
 <li>2010
 <ul>
 
@@ -1686,7 +3718,17 @@ changes, it will not be an option for Debian Edu based on Squeeze.</p>
 
 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
 
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (1)</a></li>
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
+
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
 
 </ul></li>
 
@@ -1735,59 +3777,69 @@ changes, it will not be an option for Debian Edu based on Squeeze.</p>
 <h2>Tags</h2>
 <ul>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (11)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
 
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (2)</a></li>
+
  <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (10)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (29)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (46)</a></li>
+
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (57)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (29)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (7)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (42)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (84)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (1)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (7)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (11)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (2)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (3)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (4)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (5)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (1)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
+
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (4)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (5)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (11)</a></li>
+
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (103)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (69)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (116)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (80)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (18)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (13)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (34)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (13)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (10)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (4)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (9)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (22)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (3)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (13)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (23)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (1)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (10)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (7)</a></li>
+
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (19)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (1)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (6)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (14)</a></li>
 
 </ul>