<?xml version="1.0" encoding="utf-8" ?>

<?xml-stylesheet type="text/xsl" href="/templates/2k11/rss.xsl" media="screen" ?>
<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Daniel Lange's blog (Entries tagged as debian)</title>
    <link>https://daniel-lange.com/</link>
    <description>agrep -pB IT /dev/life</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 2.6.0 - http://www.s9y.org/</generator>
    <pubDate>Wed, 06 May 2026 06:32:29 GMT</pubDate>

    <image>
    <url>//daniel-lange.com/uploads/Avatar_Blog_144_234.png</url>
    <title>RSS: Daniel Lange's blog - agrep -pB IT /dev/life</title>
    <link>https://daniel-lange.com/</link>
    <width>144</width>
    <height>234</height>
</image>

<item>
    <title>Getting scanning to work with Gimp on Trixie</title>
    <link>https://daniel-lange.com/archives/195-Getting-scanning-to-work-with-Gimp-on-Trixie.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/195-Getting-scanning-to-work-with-Gimp-on-Trixie.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=195</wfw:comment>

    <slash:comments>9</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=195</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Trixie ships &lt;a href=&quot;https://www.gimp.org/&quot; title=&quot;Gimp Homepage&quot;&gt;Gimp&lt;/a&gt; 3.0.4 and the 3.x series has gotten incompatible to &lt;a href=&quot;http://www.sane-project.org/sane-frontends.html&quot;&gt;XSane&lt;/a&gt;, the common frontend for scanners on Linux.&lt;/p&gt;

&lt;p&gt;Hence the maintainer, Jörg Frings-Fürst, has &lt;a href=&quot;https://git.jff.email/cgit/xsane.git/commit/?id=e94358be7216ead86f500f2f19420a61435eceec&quot;&gt;disabled the Gimp integration temporarily&lt;/a&gt; in response to a Debian bug &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1088080&quot;&gt;#1088080&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There seems to be no tracking bug for getting the functionality back but people have been commenting on Debian bug &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=993293&quot;&gt;#993293&lt;/a&gt; as that is ... loosely related &lt;img src=&quot;https://daniel-lange.com/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;

&lt;p&gt;There are two options to get the Scanning functionality back in Trixie until this is properly resolved by an updated XSane in Debian (e.g. via trixie-backports):&lt;/p&gt;

&lt;p&gt;Lee Yingtong Li (RunasSudo) has created a Python script that calls XSane as a cli application and published it at &lt;a href=&quot;https://yingtongli.me/git/gimp-xsanecli/&quot;&gt;https://yingtongli.me/git/gimp-xsanecli/&lt;/a&gt;. This worked okish for me but needed me to find the scan in &lt;code&gt;/tmp/&lt;/code&gt; a number of times. This is a good stop-gap script if you need to scan from Gimp $now and look for a quick solution.&lt;/p&gt;

&lt;p&gt;Upstream has completed the necessary steps to get XSane working as a Gimp 3.x plugin at &lt;a href=&quot;https://gitlab.com/sane-project/frontend/xsane&quot;&gt;https://gitlab.com/sane-project/frontend/xsane&lt;/a&gt;. Unfortunately compiling this is a bit involved but I made a version that can be dropped into &lt;code&gt;/usr/local/bin&lt;/code&gt; or &lt;code&gt;$HOME/bin&lt;/code&gt; and works alongside Gimp and the system-installed XSane.&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;sudo apt install gimp xsane&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Download &lt;a href=&quot;https://daniel-lange.com/software/xsane-1.0.0-fit-003&quot;&gt;xsane-1.0.0-fit-003 (752kB, AMD64 executable for Trixie)&lt;/a&gt; and place it in &lt;code&gt;/usr/local/bin&lt;/code&gt; (as root)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sha256sum /usr/local/bin/xsane-1.0.0-fit-003&lt;/code&gt;&lt;br /&gt;
# result needs to be af04c1a83c41cd2e48e82d04b6017ee0b29d555390ca706e4603378b401e91b2&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo chmod +x /usr/local/bin/xsane-1.0.0-fit-003&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;# Link the executable into the Gimp plugin directory as the user running Gimp:&lt;br /&gt;
&lt;code&gt;mkdir -p $HOME/.config/GIMP/3.0/plug-ins/xsane/&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;ln -s /usr/local/bin/xsane-1.0.0-fit-003 $HOME/.config/GIMP/3.0/plug-ins/xsane/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Restart Gimp&lt;/li&gt;
&lt;li&gt;Scan from Gimp via File → Create → Acquire → XSane &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The source code for the &lt;code&gt;xsane&lt;/code&gt; executable above is available under GPL-2 at &lt;a href=&quot;https://gitlab.com/sane-project/frontend/xsane/-/tree/c5ac0d921606309169067041931e3b0c73436f00&quot;&gt;https://gitlab.com/sane-project/frontend/xsane/-/tree/c5ac0d921606309169067041931e3b0c73436f00&lt;/a&gt;. This points to the last upstream commit from 27. September 2025 at the time of writing this blog article.&lt;/p&gt;

&lt;h2&gt;Debugging help&lt;/h2&gt;

&lt;p&gt;(added 06.05.2026)&lt;br /&gt;
As some people in the comments seem to have issues with getting the plugin to work on their systems:&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;$HOME/.config/GIMP/3.0/plug-ins/xsane/xsane-1.0.0-fit-003 --version&lt;/code&gt; as a shell command line.&lt;/p&gt;

&lt;p&gt;This should output:&lt;/p&gt;

&lt;pre&gt;
xsane-1.0.0 (c) 1998-2022 Oliver Rauch
  E-mail: Oliver.Rauch@xsane.org
  package xsane-1.0.0-fit-003
  compiled with GTK-3.24.49
  with color management function
  with GIMP support, compiled with GIMP-3.0.4
  XSane output formats: jpeg, pdf(compr.), png, pnm, ps(compr.), tiff, txt
&lt;/pre&gt;

&lt;p&gt;If it doesn&#039;t, the shell may tell you what step of the instructions you missed (e.g. the +x attribute) or the loader shows what library you are missing on your system.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 24 Dec 2025 09:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/195-guid.html</guid>
    <category>debian</category>
<category>scanner</category>
<category>trixie</category>
<category>updated</category>
<category>xsane</category>

</item>
<item>
    <title>Make `apt` shut up about &quot;modernize-sources&quot; in Trixie</title>
    <link>https://daniel-lange.com/archives/192-Make-apt-shut-up-about-modernize-sources-in-Trixie.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/192-Make-apt-shut-up-about-modernize-sources-in-Trixie.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=192</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=192</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Apt in Trixie (Debian 13) has the annoying function to tell you
&lt;em&gt;&quot;&lt;strong&gt;Notice&lt;/strong&gt;: Some sources can be modernized. Run &#039;apt modernize-sources&#039; to do so.&quot;&lt;/em&gt; ... every single time you run &lt;code&gt;apt update&lt;/code&gt;. Not cool for logs and log monitoring.&lt;/p&gt;

&lt;p&gt;And - of course - if you had the option to do this, you ... would have run the indicated &lt;code&gt;apt modernize-sources&lt;/code&gt; command to convert your &lt;code&gt;sources.list&lt;/code&gt; to &quot;deb822 .sources format&quot; files already. So an information message once or twice would have done.&lt;/p&gt;

&lt;p&gt;Well, luckily you can help yourself:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt -o APT::Get::Update::SourceListWarnings=false&lt;/code&gt; will keep &lt;code&gt;apt&lt;/code&gt; shut up. This could go into an &lt;code&gt;alias&lt;/code&gt; or your systems management tool / update script.&lt;/p&gt;

&lt;p&gt;Alternatively add&lt;/p&gt;

&lt;pre&gt;
# Keep apt shut about preferring the &quot;deb822&quot; sources file format
APT::Get::Update::SourceListWarnings &quot;false&quot;;
&lt;/pre&gt;

&lt;p&gt;to &lt;code&gt;/etc/apt/apt.conf.d/10quellsourceformatwarnings&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;This silences the notices about sources file formats (not only the deb822 one) system-wide.
That way you can decide when you can / want to migrate to the new, more verbose, apt sources format yourself.&lt;/p&gt;

&lt;h3&gt;Update 06.06.2025&lt;/h3&gt;

&lt;p&gt;I looks like the powers that are have had mercy, apt 3.0.2 has &lt;a href=&quot;https://tracker.debian.org/news/1648026/apt-302-migrated-to-testing/&quot;&gt;migrated to Trixie two days ago&lt;/a&gt; and the &lt;a href=&quot;https://tracker.debian.org/news/1647058/accepted-apt-302-source-into-unstable/&quot;&gt;Changelog&lt;/a&gt; contains:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Downgrade &quot;modernize-sources&quot; notice to audit&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;!-- s9ymdb:729 --&gt;&lt;img class=&quot;plain-images&quot; width=&quot;128&quot; height=&quot;128&quot;  src=&quot;https://daniel-lange.com/uploads/icons/emoji/hug.png&quot;  loading=&quot;lazy&quot; alt=&quot;Hug&quot; border=&quot;0&quot;&gt;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 03 May 2025 12:22:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/192-guid.html</guid>
    <category>annoying</category>
<category>apt</category>
<category>debian</category>
<category>trixie</category>
<category>ubuntu</category>
<category>updated</category>

</item>
<item>
    <title>Printing labels with the DYMO LabelWriter Wireless (and LabelWriter 5xx) on Debian Linux</title>
    <link>https://daniel-lange.com/archives/190-Printing-labels-with-the-DYMO-LabelWriter-Wireless-and-LabelWriter-5xx-on-Debian-Linux.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/190-Printing-labels-with-the-DYMO-LabelWriter-Wireless-and-LabelWriter-5xx-on-Debian-Linux.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=190</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=190</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;In 2020 my company bought a DYMO LabelWriter Wireless. It is an awesome little device for thermal printing a wide variety of labels. The labels are easily available both from DYMO and from third parties so the pricing is quite acceptable.&lt;/p&gt;

&lt;p&gt;Unfortunately DYMO supplies their DYMO Connect Software only for Microsoft Windows and MacOSX. A mobile app of the same name for Android and Apple iOS devices is available in the app stores.&lt;/p&gt;

&lt;p&gt;There is a SDK for Linux and there are drivers published for Linux but the LabelWriter Wireless was not supported on Linux when I tried to get it running for Debian in 2020.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:714 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;528&quot; height=&quot;421&quot;  src=&quot;https://daniel-lange.com/uploads/entries/DYMO_LabelWriter_Wireless.jpg&quot; title=&quot;Label all the things!&quot; alt=&quot;Image of the DYMO LabelWriter Wireless in the white and black versions&quot;&gt;&lt;/p&gt;

&lt;p&gt;This year I have had a new look at the situation as we still use the LabelWriter Wireless printers a lot and the company runs fully on Linux. So it is always a chore to run a Windows VM just to run DYMO Connect.&lt;/p&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/190-Printing-labels-with-the-DYMO-LabelWriter-Wireless-and-LabelWriter-5xx-on-Debian-Linux.html#extended&quot;&gt;Continue reading &quot;Printing labels with the DYMO LabelWriter Wireless (and LabelWriter 5xx) on Debian Linux&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 30 Jan 2025 21:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/190-guid.html</guid>
    <category>debian</category>
<category>driver</category>
<category>dymo</category>
<category>label</category>
<category>packaging</category>
<category>printing</category>
<category>sticker</category>
<category>thermal</category>

</item>
<item>
    <title>Happy tenth birthday, dear Thunar bug</title>
    <link>https://daniel-lange.com/archives/177-Happy-tenth-birthday,-dear-Thunar-bug.html</link>
            <category>Fun</category>
            <category>Open Source</category>
    
    <comments>https://daniel-lange.com/archives/177-Happy-tenth-birthday,-dear-Thunar-bug.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=177</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=177</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Thunar, the Xfce4 file manager, has a bug that it underflows the time remaining for a file copy since ten years now (&lt;a href=&quot;https://bugzilla.xfce.org/show_bug.cgi?id=9743&quot; title=&quot;Archived bugzilla bug entry from 11.01.2013&quot;&gt;bugzilla&lt;/a&gt;, &lt;a href=&quot;https://gitlab.xfce.org/xfce/thunar/-/issues/46&quot; title=&quot;Gitlab migrated issue&quot;&gt;gitlab&lt;/a&gt;). Happy birthday!&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:697 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;460&quot; height=&quot;127&quot;  src=&quot;https://daniel-lange.com/uploads/entries/230109_Thunar_remaining_time_calc_underflow.png&quot; title=&quot;All the best for the next 10 years!&quot; alt=&quot;&quot;&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update from 01.06.2023:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Good news, Debian Bookworm will also be released with this long term friend still present. Phew!&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:707 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;460&quot; height=&quot;135&quot;  src=&quot;https://daniel-lange.com/uploads/entries/230601_Thunar_remaining_time_calc_underflow_2.png&quot;  alt=&quot;&quot;&gt;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Tue, 10 Jan 2023 23:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/177-guid.html</guid>
    <category>bug</category>
<category>debian</category>
<category>fail</category>
<category>thunar</category>
<category>time</category>
<category>underflow</category>
<category>updated</category>
<category>xfce</category>

</item>
<item>
    <title>Apple Time Machine backups on Debian 9 (Stretch)</title>
    <link>https://daniel-lange.com/archives/156-Apple-Time-Machine-backups-on-Debian-9-Stretch.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/156-Apple-Time-Machine-backups-on-Debian-9-Stretch.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=156</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=156</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;img class=&quot;serendipity_image_noborder&quot; width=&quot;48&quot; height=&quot;48&quot; hspace=&quot;20&quot; src=&quot;https://daniel-lange.com/uploads/icons/markup/important.png&quot; title=&quot;Warning: Superseded by v3.1.13. Do not use the below packages anymore.&quot; alt=&quot;Warning: Superseded by v3.1.13. Do not use the below packages anymore.&quot; /&gt;
&lt;/td&gt;
&lt;td&gt;
Update from 28.04.2022: Do not use the packages below any more. There is Netatalk 3.1.13 out with fixes for multiple remote code execution (RCE) bugs. Use packages from recent Debian again, they have been updated.
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Netatalk 3.1.12 has been released which fixes an 18 year old &lt;abbr title=&quot;(Unauthorized) Remote Code Execution&quot;&gt;RCE&lt;/abbr&gt; bug. The &lt;a href=&quot;https://medium.com/tenable-techblog/exploiting-an-18-year-old-bug-b47afe54172&quot; title=&quot;Medium post detailing the exploit vector&quot;&gt;Medium write up&lt;/a&gt;  on &lt;a href=&quot;https://www.tenable.com/security/research/tra-2018-48&quot;&gt;CVE-2018-1160&lt;/a&gt; by Jacob Baines is quite an entertaining read.&lt;/p&gt;

&lt;p&gt;The full &lt;a href=&quot;http://netatalk.sourceforge.net/3.1/ReleaseNotes3.1.12.html&quot; title=&quot;Release Notes / Changelog for Netatalk 3.1.12&quot;&gt;release notes for 3.1.12&lt;/a&gt; are unfortunately not even half as interesting.&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;img class=&quot;serendipity_image_noborder&quot; width=&quot;48&quot; height=&quot;48&quot; hspace=&quot;20&quot; src=&quot;https://daniel-lange.com/uploads/icons/markup/info.png&quot; title=&quot;Warning: Read the original blog post before installing for the first time.&quot; alt=&quot;Warning: Read the original blog post before installing for the first time.&quot; /&gt;
&lt;/td&gt;
&lt;td&gt;
Be sure to read the &lt;a href=&quot;https://daniel-lange.com/archives/102-Apple-Timemachine-backups-on-Debian-8-Jessie.html&quot; title=&quot;Blog entry: Apple Timemachine backups on Debian 8 Jessie&quot;&gt;original blog post&lt;/a&gt; if you are new to Netatalk3 on Debian Jessie or Stretch!&lt;br /&gt;
You&#039;ll get nowhere if you install the .debs below and don&#039;t know about the upgrade path from 2.2.x which is still in the Debian archive. So &lt;abbr title=&quot;Read The Fine Article&quot;&gt;RTFA&lt;/abbr&gt;.
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;For Debian Buster (Debian 10) we&#039;ll have Samba 4.9 which has learnt (from Samba 4.8.0 onwards) how to emulate a SMB time machine share. I&#039;ll make a write up how to install this once Buster stabilizes. This luckily means there will be no need to continue supporting Netatalk in normal production environments. So I guess &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690227&quot;&gt;bug #690227&lt;/a&gt; won&#039;t see a proper fix anymore. Waiting out problems helps at times, too :/.&lt;/p&gt;

&lt;p&gt;Update instructions and downloads:&lt;/p&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/156-Apple-Time-Machine-backups-on-Debian-9-Stretch.html#extended&quot;&gt;Continue reading &quot;Apple Time Machine backups on Debian 9 (Stretch)&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 07 Jan 2019 13:59:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/156-guid.html</guid>
    <category>apple</category>
<category>backup</category>
<category>debian</category>
<category>netatalk</category>
<category>stretch</category>
<category>timemachine</category>
<category>updated</category>

</item>
<item>
    <title>Openssh taking minutes to become available, booting takes half an hour ... because your server waits for a few bytes of randomness</title>
    <link>https://daniel-lange.com/archives/152-Openssh-taking-minutes-to-become-available,-booting-takes-half-an-hour-...-because-your-server-waits-for-a-few-bytes-of-randomness.html</link>
            <category>Linux</category>
    
    <comments>https://daniel-lange.com/archives/152-Openssh-taking-minutes-to-become-available,-booting-takes-half-an-hour-...-because-your-server-waits-for-a-few-bytes-of-randomness.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=152</wfw:comment>

    <slash:comments>22</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=152</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;So, your machine now needs minutes to boot before you can ssh in where it used to be seconds before the Debian Buster update?&lt;/p&gt;

&lt;h1&gt;Problem&lt;/h1&gt;

&lt;p&gt;Linux 3.17 (2014-10-05) learnt a new syscall getrandom() that, well, gets bytes from the entropy pool.
Glibc learnt about this with 2.25 (2017-02-05) and &lt;a href=&quot;https://github.com/openssl/openssl/pull/180&quot;&gt;two tries&lt;/a&gt; and four years after the kernel, OpenSSL used that functionality from release 1.1.1 (2018-09-11).
OpenSSH implemented this natively for the 7.8 release (2018-08-24) as well.&lt;/p&gt;

&lt;p&gt;Now the getrandom() syscall will block&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; if the kernel can&#039;t provide enough entropy. And that&#039;s frequenty the case during boot. Esp. with VMs that have no input devices or IO jitter to source the pseudo random number generator from.&lt;/p&gt;

&lt;h2&gt;First seen in the wild January 2017&lt;/h2&gt;

&lt;p&gt;I vividly remember not seeing my Alpine Linux VMs back on the net after the Alpine 3.5 upgrade. That was basically the same &lt;a href=&quot;https://bugs.alpinelinux.org/issues/6635&quot; title=&quot;Alpine Linux bug tracker #6636&quot;&gt;issue&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;systemd&quot;&gt;&lt;/a&gt;Systemd. Yeah.&lt;/h2&gt;

&lt;p&gt;Systemd makes this behaviour worse, see issues &lt;a href=&quot;https://github.com/systemd/systemd/issues/4271&quot;&gt;#4271&lt;/a&gt;, &lt;a href=&quot;https://github.com/systemd/systemd/pull/4513&quot;&gt;#4513&lt;/a&gt; and &lt;a href=&quot;https://github.com/systemd/systemd/pull/10621&quot;&gt;#10621&lt;/a&gt;.&lt;br /&gt;
Basically as of now the entropy file saved as &lt;code&gt;/var/lib/systemd/random-seed&lt;/code&gt; will not - drumroll - add entropy to the random pool when played back during boot. Actually it will. It will just not be accounted for. So Linux doesn&#039;t know. And continues blocking getrandom(). This is obviously different from SysVinit times&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; when &lt;code&gt;/var/lib/urandom/random-seed&lt;/code&gt; (that you still have lying around on updated systems) made sure the system carried enough entropy over reboot to continue working right after enough of the system was booted.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/systemd/systemd/issues/4167&quot;&gt;#4167&lt;/a&gt; is a re-opened discussion about systemd eating randomness early at boot (hashmaps in PID 0...). Some Debian folks participate in the recent discussion and it is worth reading if you want to learn about the mess that booting a Linux system has become.&lt;/p&gt;

&lt;p&gt;While we&#039;re talking systemd ... &lt;a href=&quot;https://github.com/systemd/systemd/pull/10676&quot;&gt;#10676&lt;/a&gt; also means systems will use RDRAND in the future despite &lt;a href=&quot;https://plus.google.com/+TheodoreTso/posts/SDcoemc9V3J&quot;&gt;Ted Ts&#039;o&#039;s warning on RDRAND&lt;/a&gt; [&lt;a href=&quot;https://web.archive.org/web/20180320163305/https://plus.google.com/+TheodoreTso/posts/SDcoemc9V3J&quot;&gt;Archive.org mirror&lt;/a&gt; and mirrored locally as &lt;a href=&quot;https://daniel-lange.com/documents/130905_Ted_Tso_on_RDRAND.pdf&quot;&gt;130905_Ted_Tso_on_RDRAND.pdf, 205kB&lt;/a&gt; as &lt;a href=&quot;https://killedbygoogle.com/&quot;&gt;Google+ will be discontinued&lt;/a&gt; in April 2019].&lt;br /&gt;
Update: RDRAND doesn&#039;t return random data on pre-Ryzen AMD CPUs (AMD CPU family &amp;lt;23) as per &lt;a href=&quot;https://github.com/systemd/systemd/issues/11810#issuecomment-489727505&quot;&gt;systemd bug #11810&lt;/a&gt;. It will always be 0xFFFFFFFFFFFFFFFF (2&lt;sup&gt;64&lt;/sup&gt;-1). This is a known issue since 2014, see &lt;a href=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=85911&quot;&gt;kernel bug #85991&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Debian&lt;/h2&gt;

&lt;p&gt;Debian is seeing the same issue working up towards the Buster release, e.g. &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=912087&quot;&gt;Bug #912087&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The typical issue is:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &amp;#160; &amp;#160;&lt;span style=&quot;color: #000000;&quot;&gt;4.428797&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; EXT4-fs &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;vda1&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: mounted filesystem with ordered data mode. Opts: &lt;span style=&quot;color: #007800;&quot;&gt;data&lt;/span&gt;=ordered&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;130.970863&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; random: crng init &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;done&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;with delays up to tens of minutes on systems with very little external random sources.&lt;/p&gt;

&lt;p&gt;This is what it should look like:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &amp;#160; &amp;#160;&lt;span style=&quot;color: #000000;&quot;&gt;1.616819&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; random: fast init &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;done&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &amp;#160; &amp;#160;&lt;span style=&quot;color: #000000;&quot;&gt;2.299314&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; random: crng init &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;done&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;Check &lt;code&gt;dmesg | grep -E &quot;(rng|random)&quot;&lt;/code&gt; to see how your systems are doing.&lt;/p&gt;

&lt;p&gt;If this is not fully solved before the Buster release, I hope some of the below can end up in the &lt;a href=&quot;https://salsa.debian.org/ddp-team/release-notes&quot;&gt;release notes&lt;/a&gt;&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;h1&gt;Solutions&lt;/h1&gt;

&lt;p&gt;You need to get entropy into the random pool earlier at boot. There are many ways to achieve this and - currently - all require action by the system administrator.&lt;/p&gt;

&lt;h2&gt;Kernel boot parameter&lt;/h2&gt;

&lt;p&gt;From kernel 4.19 (Debian Buster currently runs 4.18 [Update: but will be getting 4.19 before release according to &lt;a href=&quot;https://twitter.com/mikagrml/status/1080602882737610754&quot; title=&quot;Of course this is formal Debian planning. It&#039;s on Twitter!&quot;&gt;Ben via Mika&lt;/a&gt;]) you can set &lt;code&gt;RANDOM_TRUST_CPU&lt;/code&gt; at compile time or &lt;code&gt;random.trust_cpu=on&lt;/code&gt; on the kernel command line. This will make recent Intel / AMD systems trust RDRAND and fill the entropy pool with it. See the warning from Ted Ts&#039;o linked above.&lt;/p&gt;

&lt;p&gt;Update: Since Linux kernel build 4.19.20-1 &lt;code&gt;CONFIG_RANDOM_TRUST_CPU&lt;/code&gt; has been &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00170.html&quot;&gt;enabled by default&lt;/a&gt; in Debian.&lt;/p&gt;

&lt;h2&gt;Using a TPM&lt;/h2&gt;

&lt;p&gt;The Trusted Platform Module has an embedded random number generator that can be used. Of course you need to have one on your board for this to be useful. It&#039;s a hardware device.&lt;/p&gt;

&lt;p&gt;Load the &lt;code&gt;tpm-rng&lt;/code&gt; module (ideally from initrd) or compile it into the kernel (&lt;code&gt;config HW_RANDOM_TPM&lt;/code&gt;).
Now, the kernel does not &quot;trust&quot; the TPM RNG by default, so you need to add&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rng_core.default_quality=1000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;to the kernel command line.
1000 means &quot;trust&quot;, 0 means &quot;don&#039;t use&quot;. So you can chose any value in between that works for you depending on how much you consider your TPM to be unbugged.&lt;/p&gt;

&lt;h2&gt;VirtIO (KVM, QEMU, ...)&lt;/h2&gt;

&lt;p&gt;For Virtual Machines (VMs) you can forward entropy from the host (that should be running longer than the VMs and have enough entropy) via &lt;code&gt;virtio_rng&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So on the host, you do:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kvm ... -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0,bus=pci.0,addr=0x7&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and within the VM newer kernels should automatically load &lt;code&gt;virtio_rng&lt;/code&gt; and use that.&lt;/p&gt;

&lt;p&gt;You can confirm with dmesg as per above.&lt;/p&gt;

&lt;p&gt;Or check:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# cat /sys/devices/virtual/misc/hw_random/rng_available&lt;/span&gt;&lt;br /&gt;virtio_rng.0&lt;br /&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# cat /sys/devices/virtual/misc/hw_random/rng_current&lt;/span&gt;&lt;br /&gt;virtio_rng.0&lt;/div&gt;

&lt;h2&gt;Patching systemd&lt;/h2&gt;

&lt;p&gt;The Fedora bugtracker has a &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=1572944#c46&quot;&gt;bash / python script&lt;/a&gt; that replaces the systemd &lt;code&gt;rnd&lt;/code&gt; seeding with a (better) working one. The script can also serve as a good starting point if you need to script your own solution, e.g. for reading from an entropy provider available within your (secure) network.&lt;/p&gt;

&lt;h2&gt;Chaoskey&lt;/h2&gt;

&lt;p&gt;The wonderful Keith Packard and Bdale Garbee have developed a USB dongle, &lt;a href=&quot;https://altusmetrum.org/ChaosKey/&quot;&gt;ChaosKey&lt;/a&gt;, that supplies entropy to the kernel. Hard- and software are open source.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;jitterentropy_rng&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Jitterentropy_RNG&lt;/h2&gt;

&lt;p&gt;Kernel 4.2 introduced &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bb5530e4082446aac3a3d69780cd4dbfa4520013&quot;&gt;&lt;code&gt;jitterentropy_rng&lt;/code&gt;&lt;/a&gt; which will use the jitter in CPU timings to generate randomness.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;modprobe jitterentropy_rng&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This &lt;a href=&quot;https://pthree.org/2016/05/24/cpu-jitter-entropy-for-the-linux-kernel/&quot;&gt;apparently needs a userspace daemon&lt;/a&gt; though (read: design mistake) so&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt install jitterentropy-rngd&lt;/code&gt; (available from &lt;a href=&quot;https://packages.debian.org/search?keywords=jitterentropy-rngd&quot;&gt;Buster/testing&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The current version 1.0.8-3 installs nicely on Stretch. &lt;code&gt;dpkg -i&lt;/code&gt; is your friend.&lt;/p&gt;

&lt;p&gt;But - drumroll - that daemon doesn&#039;t seem to use the kernel module at all.&lt;/p&gt;

&lt;p&gt;That&#039;s where I stopped looking at that solution. At least for now. There are extensive &lt;a href=&quot;http://www.chronox.de/jent/doc/CPU-Jitter-NPTRNG.html&quot;&gt;docs&lt;/a&gt; if you want to dig into this yourself.&lt;/p&gt;

&lt;p&gt;Update: The Linux kernel 5.3 will have an updated jitterentropy_rng as per &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4d2fa8b44b891f0da5ceda3e5a1402ccf0ab6f26&quot;&gt;Commit 4d2fa8b44&lt;/a&gt;. This is based on the &lt;a href=&quot;https://www.chronox.de/jent.html&quot;&gt;upstream&lt;/a&gt; version &lt;a href=&quot;https://github.com/smuellerDD/jitterentropy-library/releases/tag/v2.1.2&quot;&gt;2.1.2&lt;/a&gt; and should be worth another look.&lt;/p&gt;

&lt;h2&gt;Haveged&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;apt install haveged&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Haveged is a user-space daemon that gathers entropy though the timing jitter any CPU has. It will only run &quot;late&quot; in boot but may still get your openssh back online within seconds and not minutes.&lt;/p&gt;

&lt;p&gt;It is also - to the best of my knowledge - not verified at all regarding the quality of randomness it generates.
The haveged &lt;a href=&quot;http://issihosts.com/haveged/history.html#havege&quot;&gt;design and history page&lt;/a&gt; provides and interesting read and I wouldn&#039;t recommend haveged if you have alternatives. If you have none, haveged is a wonderful solution though as it works reliably. And unverified entropy is better than no entropy. Just forget this is &lt;del&gt;2018&lt;/del&gt; 2019 &lt;img src=&quot;https://daniel-lange.com/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;

&lt;h2&gt;early-rng-init-tools&lt;/h2&gt;

&lt;p&gt;Thorsten Glaser has posted newly developed &lt;a href=&quot;https://evolvis.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=alioth/early-rng-init-tools.git;a=tree&quot;&gt;early-rng-init-tools&lt;/a&gt; in a &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00327.html&quot;&gt;debian-devel thread&lt;/a&gt;. He provides packages at &lt;a href=&quot;http://fish.mirbsd.org/~tg/Debs/dists/sid/wtf/Pkgs/early-rng-init-tools/&quot;&gt;http://fish.mirbsd.org/~tg/Debs/dists/sid/wtf/Pkgs/early-rng-init-tools/&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;First he deserves kudos for naming a tool for what it does. This makes it much more easily discoverable than the trend to name things after girlfriends, pets or anime characters. The implementation hooks into the early boot via initrd integration and carries over a seed generated during the previous shutdown. This and some other implementation details are not ideal and there has been quite extensive &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/threads.html#00327&quot;&gt;scrutiny&lt;/a&gt; but none that discovered serious issues. Early-rng-init-tools look like a good option for non-RDRAND (~CONFIG_RANDOM_TRUST_CPU) capable platforms.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;linustotherescue&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Linus to the rescue&lt;/h2&gt;

&lt;p&gt;Luckily end of September Linus Torvalds was fed up with the entropy starvation issue and the non-conclusive discussions about (mostly) who&#039;s at fault and ... &lt;a href=&quot;https://lore.kernel.org/lkml/CAHk-=wi0vxLmwEBn2Xgu7hZ0U8z2kN4sgCax+57ZJMVo3huDaQ@mail.gmail.com/&quot;&gt;started coding&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With the kernel 5.4 release on 25.11.2019 his &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=50ee7529ec4500c88f8664560770a7a1b65db72b&quot;&gt;patch&lt;/a&gt; has made it into mainline. He created a &lt;code&gt;try_to_generate_entropy&lt;/code&gt; function that uses CPU jitter to generate seed entropy for the PRNG early in boot.&lt;/p&gt;

&lt;p&gt;In the &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3f2dc2798b81531fd93a3b9b7c39da47ec689e55&quot;&gt;merge commit&lt;/a&gt; Linus explains:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is admittedly partly &quot;for discussion&quot;.  We need to have a way
forward for the boot time deadlocks where user space ends up waiting for
more entropy, but no entropy is forthcoming because the system is
entirely idle just waiting for something to happen.&lt;/p&gt;

&lt;p&gt;While this was triggered by what is arguably a user space bug with
GDM/gnome-session asking for secure randomness during early boot, when
they didn&#039;t even need any such truly secure thing, the issue ends up
being that our &quot;getrandom()&quot; interface is prone to that kind of
confusion, because people don&#039;t think very hard about whether they want
to block for sufficient amounts of entropy.&lt;/p&gt;

&lt;p&gt;The approach here-in is to decide to not just passively wait for entropy
to happen, but to start actively collecting it if it is missing.  This
is not necessarily always possible, but if the architecture has a CPU
cycle counter, there is a fair amount of noise in the exact timings of
reasonably complex loads.&lt;/p&gt;

&lt;p&gt;We may end up tweaking the load and the entropy estimates, but this
should be at least a reasonable starting point.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So once this kernel is available in your distribution, you should be safe from entropy starvation at boot on any platform that has hardware timers (I haven&#039;t encountered one that does not in the last decade).&lt;/p&gt;

&lt;p&gt;Ted Ts&#039;o &lt;a href=&quot;https://lore.kernel.org/lkml/20190930033706.GD4994@mit.edu/&quot;&gt;reviewed the approach and was fine&lt;/a&gt; and Ahmed Dawish did some &lt;a href=&quot;https://lore.kernel.org/lkml/20191001161448.GA1918@darwi-home-pc/&quot;&gt;testing of the quality of randomness generated and that seems fine&lt;/a&gt;, too.&lt;/p&gt;

&lt;h1&gt;Updates&lt;/h1&gt;

&lt;h3&gt;14.01.2019&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://sfritsch.de/&quot;&gt;Stefan Fritsch&lt;/a&gt;, the Apache2 maintainer in Debian, OpenBSD developer and a former Debian security team member stumbled over the systemd issue preventing Apache libssl to initialize at boot in a Debian bug &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916690&quot;&gt;#916690 - apache2: getrandom call blocks on first startup, systemd kills with timeout&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The bug has been retitled &quot;document getrandom changes causing entropy starvation&quot; hinting at not fixing the underlying issue but documenting it in the Debian Buster release notes.&lt;/p&gt;

&lt;p&gt;Unhappy with this &quot;minimal compromise&quot; Stefan wrote a &lt;a href=&quot;https://lists.debian.org/debian-devel/2018/12/msg00184.html&quot;&gt;comprehensive summary of the current situation&lt;/a&gt; to the Debian-devel mailing list. The discussion spans over &lt;a href=&quot;https://lists.debian.org/debian-devel/2018/12/&quot;&gt;December 2018&lt;/a&gt; and &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/&quot;&gt;January 2019&lt;/a&gt; and mostly iterated what had been written above already. The discussion has - so far - not reached any consensus. There is still the &quot;systemd stance&quot; (&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=914297#59&quot;&gt;not our problem, fix the daemons&lt;/a&gt;) and the &quot;ssh/apache stance&quot; (&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=914297#66&quot;&gt;fix systemd, credit entropy&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The &quot;document in release notes&quot; minimal compromise was brought up again and Stefan &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00129.html&quot;&gt;warned of the problems this would create for Buster users&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;
&gt; I&#039;d prefer having this documented in the release notes:
&gt; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916690
&gt; with possible solutions like installing haveged, configuring virtio-rng,
&gt; etc. depending on the situation.

That would be an extremely user-unfriendly &quot;solution&quot; and would lead to 
countless hours of debugging and useless bug reports.
&lt;/pre&gt;

&lt;p&gt;This is exactly why I wrote this blog entry and keep it updated. We need to either fix this or tell everybody we can reach before upgrading to Buster. Otherwise this will lead to huge amounts of systems dead on the network after what looked like a successful upgrade.&lt;/p&gt;

&lt;p&gt;Some interesting tidbits were mentioned within the thread:&lt;/p&gt;

&lt;p&gt;Raphael Hertzog fixed the issue for Kali Linux by &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00120.html&quot;&gt;installing haveged by default&lt;/a&gt;. Michael Prokop did &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00122.html&quot;&gt;the same for the grml distribution&lt;/a&gt; within its December 2018 release.&lt;/p&gt;

&lt;p&gt;Ben Hutchings pointed to an &lt;a href=&quot;https://lists.debian.org/debian-release/2018/05/threads.html#00130&quot;&gt;interesting thread&lt;/a&gt; on the debian-release mailing list he kicked off in May 2018. Multiple people summarized the options and the fact that there is no &lt;a href=&quot;https://lists.debian.org/debian-release/2018/05/msg00374.html&quot;&gt;&quot;general solution that is both correct and easy&quot;&lt;/a&gt; at the time.&lt;/p&gt;

&lt;p&gt;Sam Hartman identified Debian Buster VMs running under VMware as an issue, because that supervisor does not provide virtio-rng. So &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00167.html&quot;&gt;Debian VMs wouldn&#039;t boot into ssh availability&lt;/a&gt; within a reasonable time. This is an issue for real world use cases albeit running a proprietary product as the supervisor.&lt;/p&gt;

&lt;h3&gt;16.01.2019&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://dkg.fifthhorseman.net/blog/&quot;&gt;Daniel Kahn Gillmor&lt;/a&gt; wrote in to explain a risk for VMs starting right after the boot of the host OS:&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;
If that pool is used by the guest to generate long-term secrets because it appears to be well-initialized, that could be a serious problem.&lt;br /&gt;
(e.g. &quot;Mining your P&#039;s and Q&#039;s&quot; by Heninger et al -- &lt;a href=&quot;https://factorable.net/weakkeys12.extended.pdf&quot;&gt;https://factorable.net/weakkeys12.extended.pdf&lt;/a&gt;)&lt;br /&gt;
I&#039;ve just opened &lt;a href=&quot;https://bugs.launchpad.net/qemu/+bug/1811758&quot;&gt;https://bugs.launchpad.net/qemu/+bug/1811758&lt;/a&gt; to report a way to improve that situation in qemu by default.
&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;So ... make sure that your host OS has access to a hardware random number generator or at least carries over its random seed properly across reboots. You could also delay VM starts until the crng on the host Linux is fully initialized (&lt;code&gt;random: crng init done&lt;/code&gt;).&lt;br /&gt;
Otherwise your VMs may get insufficiently generated pseudo-random numbers and won&#039;t even know.&lt;/p&gt;

&lt;h3&gt;12.03.2019&lt;/h3&gt;

&lt;p&gt;Stefan Fritsch revived the &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00079.html&quot;&gt;thread on debian-devel&lt;/a&gt; again and got a few more interesting tidbits out of the developer community:&lt;/p&gt;

&lt;p&gt;Ben Hutchings has &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00170.html&quot;&gt;enabled CONFIG_RANDOM_TRUST_CPU for Debian kernels from 4.19.20-1&lt;/a&gt; so the problem is somewhat contained for recent CPU AMD64 systems (RDRAND capable) in Buster.&lt;/p&gt;

&lt;p&gt;Thorsten Glaser developed &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00327.html&quot;&gt;early-rng-init-tools&lt;/a&gt; which combine a few options to try and get entropy carried across boot and generated early during boot. He received some &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/threads.html#00327&quot;&gt;scrutiny&lt;/a&gt; as can be expected but none that would discourage me from using it. He explains that this is for early boot and thus has initrd integration. It &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00383.html&quot;&gt;complements safer randomness sources or haveged&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;16.04.2019&lt;/h3&gt;

&lt;p&gt;The Debian installer for Buster is running into the same problem now as indicated in the &lt;a href=&quot;https://lists.debian.org/debian-devel-announce/2019/04/msg00004.html&quot;&gt;release notes for RC1&lt;/a&gt;.
&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923675&quot;&gt;Bug #923675&lt;/a&gt; has details. Essentially &lt;code&gt;choose-mirror&lt;/code&gt; waits serveral minutes for entropy when used with https mirrors.&lt;/p&gt;

&lt;h3&gt;08.05.2019&lt;/h3&gt;

&lt;p&gt;The RDRAND use introduced in systemd to bypass the kernel random number generator during boot falls for a AMD pre-Ryzen bug as RDRAND on these systems doesn&#039;t return random data after a suspend / resume cycle. Added an update note to the &lt;a href=&quot;#systemd&quot;&gt;systemd section&lt;/a&gt; above.&lt;/p&gt;

&lt;h3&gt;03.06.2019&lt;/h3&gt;

&lt;p&gt;Bastian Blank reports the issue is &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/06/msg00027.html&quot;&gt;affecting Debian cloud images&lt;/a&gt; now as well as cloud-init generates ssh keys during boot.&lt;/p&gt;

&lt;h3&gt;10.07.2019&lt;/h3&gt;

&lt;p&gt;Added the update of jitterentropy_rng to a version based on upstream v2.1.2 into the &lt;a href=&quot;#jitterentropy_rng&quot;&gt;Jitterentropy section above&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;16.09.2019&lt;/h3&gt;

&lt;p&gt;The Linux Kernel Mailing List (LKML) is re-iterating the entropy starvation issue and the un-willingness of systemd to fix its usage of randomness in early boot. Ahmed S. Darwish has &lt;a href=&quot;https://lore.kernel.org/linux-ext4/20190910042107.GA1517@darwi-home-pc/&quot;&gt;reported the issue leading to ext4 reproducibly blocking boot with Kernel 5.3-r8&lt;/a&gt;. There are a few patches floated and the whole discussion it worth reading albeit non-conclusive as of now.&lt;/p&gt;

&lt;blockquote&gt;Ted Ts&#039;o says &quot;I really very strongly believe that the idea of making getrandom(2) non-blocking and to blindly assume that we can load up the buffer with &#039;best efforts&#039; randomness to be a terrible, terrible idea that is going to cause major security problems that we will potentially regret very badly. Linus Torvalds believes I am an incompetent systems designer.&quot; in &lt;a href=&quot;https://lore.kernel.org/linux-ext4/20190915052242.GG19710@mit.edu/&quot;&gt;this email&lt;/a&gt;.&lt;/blockquote&gt;

&lt;p&gt;In case you needed a teaser to really start reading the thread! Linus Torvalds also mentions the issue (and a primer on what &quot;never break userspace&quot; means) in the &lt;a href=&quot;https://lkml.org/lkml/2019/9/15/241&quot;&gt;Linux kernel 5.3 release notes&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;18.09.2019&lt;/h3&gt;

&lt;p&gt;... and &lt;a href=&quot;https://lkml.org/lkml/2019/9/17/885&quot;&gt;Martin Steigerwald kindly noticed that I update this blog post&lt;/a&gt; with the relevant discussions I come across as this entropy starvation mess continues to haunt us.&lt;/p&gt;

&lt;h3&gt;25.11.2019&lt;/h3&gt;

&lt;p&gt;Added the &lt;a href=&quot;#linustotherescue&quot;&gt;&quot;Linus to the rescue&quot;&lt;/a&gt; section after the Linux kernel 5.4 has been released.&lt;/p&gt;

&lt;h3&gt;02.04.2020&lt;/h3&gt;

&lt;p&gt;I ran into the same issue on a Gentoo system today. Luckily &lt;a href=&quot;https://en.wikipedia.org/wiki/OpenRC&quot;&gt;OpenRC&lt;/a&gt; handeled this gracefully but it delayed booting:
&lt;code&gt;syslog-ng&lt;/code&gt; actually hangs the boot for some time ... waiting for entropy. Argh.
The &lt;a href=&quot;https://forums.gentoo.org/viewtopic-t-1053732-start-0.html&quot;&gt;Gentoo forums thread&lt;/a&gt; on the topic clearly listed the options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make syslog-ng depend on haveged by adding &lt;code&gt;rc_syslog_ng_need=&quot;haveged&quot;&lt;/code&gt; to &lt;code&gt;/etc/rc.conf&lt;/code&gt; (and obviously having haveged installed)&lt;/li&gt;
&lt;li&gt;Re-compiling the kernel with &lt;code&gt;CONFIG_RANDOM_TRUST_CPU=y&lt;/code&gt; where that is an option&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;

&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;it will return with EAGAIN in the GRND_NONBLOCK use case. The blocking behaviour when lacking entropy is a security measure as per &lt;a href=&quot;https://bugs.chromium.org/p/project-zero/issues/detail?id=1559&quot;&gt;Bug #1559 of Google&#039;s Project Zero&lt;/a&gt;.&amp;#160;&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&quot;fn:2&quot;&gt;
&lt;p&gt;Update 18.12.2018: &quot;SysVinit times&quot; ::= &quot;The times when most Linux distros used SysVinit over other init systems.&quot; So Wheezy and previous for Debian. Some people objected to the statement, so I added this footnote as a clarification. See the discussion in the comments below.&amp;#160;&lt;a href=&quot;#fnref:2&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&quot;fn:3&quot;&gt;
&lt;p&gt;there is no Buster branch in the release notes repository yet (17.12.2018). Update: I wrote a section for the release notes 06.05.2019 and Paul Gevers amended and committed that. So when users of affected systems read the release notes before upgrading to Buster they will hopefully not be surprised (and worried) by the long boot delays.&amp;#160;&lt;a href=&quot;#fnref:3&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
 
    </content:encoded>

    <pubDate>Mon, 17 Dec 2018 15:45:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/152-guid.html</guid>
    <category>alpine</category>
<category>apache</category>
<category>boot</category>
<category>debian</category>
<category>fedora</category>
<category>hang</category>
<category>linux</category>
<category>random</category>
<category>security</category>
<category>ssh</category>
<category>sshd</category>
<category>updated</category>

</item>
<item>
    <title>Firefox asking to be made the default browser again and again</title>
    <link>https://daniel-lange.com/archives/148-Firefox-asking-to-be-made-the-default-browser-again-and-again.html</link>
            <category>Linux</category>
    
    <comments>https://daniel-lange.com/archives/148-Firefox-asking-to-be-made-the-default-browser-again-and-again.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=148</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=148</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Firefox on Linux can develop the habit to (rather randomly) ask again and again to be made the default browser. E.g. when started from Thunderbird by clicking a link it asks but when starting from a shell all is fine.&lt;/p&gt;

&lt;p&gt;The reason to this is often two (or more) &lt;code&gt;.desktop&lt;/code&gt; entries competing with each other.&lt;/p&gt;

&lt;p&gt;So, walkthrough: (&lt;a href=&quot;#label_10&quot;&gt;GOTO 10&lt;/a&gt; in case you are sure to have all the basics right)&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;update-alternatives &lt;span style=&quot;color: #660033;&quot;&gt;--display&lt;/span&gt; x-www-browser&lt;br /&gt;update-alternatives &lt;span style=&quot;color: #660033;&quot;&gt;--display&lt;/span&gt; gnome-www-browser&lt;/div&gt;

&lt;p&gt;should both show firefox for you. If not&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;update-alternatives &lt;span style=&quot;color: #660033;&quot;&gt;--config&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;entry&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;the entry to fix the preference on &lt;code&gt;/usr/bin/firefox&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Check (where available)&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;exo-preferred-applications&lt;/div&gt;

&lt;p&gt;that the &quot;Internet Browser&quot; is &quot;Firefox&quot;.&lt;/p&gt;

&lt;p&gt;Check (where available)&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;xfce4-mime-settings&lt;/div&gt;

&lt;p&gt;that anything containing &quot;html&quot; points to Firefox (or is left at a non-user set default).&lt;/p&gt;

&lt;p&gt;Check (where available)&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;xdg-settings get default-web-browser&lt;/div&gt;

&lt;p&gt;that you get &lt;code&gt;firefox.desktop&lt;/code&gt;. If not run&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;xdg-settings check default-web-browser firefox.desktop&lt;/div&gt;

&lt;p&gt;If you are running Gnome, check&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;xdg-settings get default-url-scheme-handler http&lt;/div&gt;

&lt;p&gt;and the same for &lt;code&gt;https&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;label_10&quot;&gt;LABEL 10&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;Run&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;sensible-editor ~&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;.config&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;mimeapps.list&lt;/div&gt;

&lt;p&gt;and remove all entries that contain something like &lt;code&gt;userapp-Firefox-&amp;lt;random&amp;gt;.desktop&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Run&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;find&lt;/span&gt; ~&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;.local&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;share&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;applications &lt;span style=&quot;color: #660033;&quot;&gt;-iname&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;userapp-firefox*.desktop&amp;quot;&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;and delete these files or move them away.&lt;/p&gt;

&lt;p&gt;Done.&lt;/p&gt;

&lt;p&gt;Once you have it working again consider &lt;em&gt;disabling&lt;/em&gt; the option for  Firefox to check whether it is the default browser. Because it will otherwise create those pesky &lt;code&gt;userapp-Firefox-&amp;lt;random&amp;gt;.desktop&lt;/code&gt; files again.&lt;/p&gt;

&lt;p&gt;Configuring Linux is easy, innit?&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 03 Nov 2018 08:55:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/148-guid.html</guid>
    <category>bug</category>
<category>chrome</category>
<category>config</category>
<category>debian</category>
<category>firefox</category>
<category>gnome</category>
<category>thunderbird</category>
<category>ubuntu</category>
<category>xfce</category>

</item>
<item>
    <title>Unbalanced volume (channels) on headset audio</title>
    <link>https://daniel-lange.com/archives/144-Unbalanced-volume-channels-on-headset-audio.html</link>
            <category>Linux</category>
    
    <comments>https://daniel-lange.com/archives/144-Unbalanced-volume-channels-on-headset-audio.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=144</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=144</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;I use a headset to make phone calls and when they are mono the great awesomeness of the Linux audio stack seems to change volume only on the active channel (e.g. the right channel).
So when I listen to some music (stereo) afterwards the channels are not balanced anymore and one side is louder than the other. And this persists thanks to saving the preferences across reboots. Duh.&lt;/p&gt;

&lt;p&gt;As usually checking Pulseaudio (pavucontrol) is useless, it shows balanced channels.&lt;/p&gt;

&lt;p&gt;But checking Alsa (alsamixer) revealed the issue and alsamixer can fix this, too:&lt;/p&gt;

&lt;p&gt;Step 1: run &lt;code&gt;alsamixer&lt;/code&gt; in a terminal and select your headset after pressing [F6]:&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:649 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;848&quot; height=&quot;655&quot;  src=&quot;https://daniel-lange.com/uploads/entries/180604_alsamixer_select_sound_card.png&quot; title=&quot;Alsamixer: Select sound card&quot; alt=&quot;Alsamixer: Select sound card&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Select the headset audio output with [&amp;lt;-] and [-&gt;] cursor keys:&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:649 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;848&quot; height=&quot;655&quot;  src=&quot;https://daniel-lange.com/uploads/entries/180604_alsamixer_headset_uneven_loudness.png&quot; title=&quot;Alsamixer: Unbalanced channels on the headset (left / right channel loudness are different)&quot; alt=&quot;Alsamixer: Unbalanced channels on the headset (left / right channel loudness are different)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Press [b] to balance the left and right channels:&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:649 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;848&quot; height=&quot;655&quot;  src=&quot;https://daniel-lange.com/uploads/entries/180604_alsamixer_headset_balanced_loudness.png&quot; title=&quot;Alsamixer: Balanced channels (left / right channel loudness) again&quot; alt=&quot;Alsamixer: Balanced channels (left / right channel loudness) again&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Step 4: Press [Esc] to exit &lt;code&gt;alsamixer&lt;/code&gt; which will keep the changed settings (... great choice of key, [q] raises the left channel&#039;s loundness ...).&lt;/p&gt;

&lt;p&gt;Step 5: Save this setting by running &lt;code&gt;sudo alsactl store&lt;/code&gt; which should update &lt;code&gt;/var/lib/alsa/asound.state&lt;/code&gt; with the fixed settings so they persist across reboots.&lt;/p&gt;

&lt;p&gt;Step 6: Enjoy music again &lt;img src=&quot;https://daniel-lange.com/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;

&lt;p&gt;If you need to script this, &lt;code&gt;amixer&lt;/code&gt; is the tool to use, e.g. &lt;code&gt;amixer -c 1 set &quot;Headset&quot; 36&lt;/code&gt;.&lt;br /&gt;
&lt;i&gt;1&lt;/i&gt; is the card number which you see in &lt;code&gt;alsamixer&lt;/code&gt;,  &lt;i&gt;&quot;Headset&quot;&lt;/i&gt; is the channel name, also from &lt;code&gt;alsamixer&lt;/code&gt; (which can contain blanks, hence the quotes around the name) and &lt;i&gt;36&lt;/i&gt; is the desired loundness level for both channels. See the screenshots above where to find the data or run &lt;code&gt;aplay -l&lt;/code&gt; to see the cards on your PC and &lt;code&gt;amixer -c 1&lt;/code&gt; (with your card id) to see the channels that (virtual, USB) sound card has.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Mon, 04 Jun 2018 12:08:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/144-guid.html</guid>
    <category>alsa</category>
<category>audio</category>
<category>debian</category>
<category>headset</category>
<category>linux</category>
<category>loundness</category>
<category>mono</category>
<category>pulseaudio</category>
<category>sound</category>
<category>stereo</category>
<category>ubuntu</category>

</item>
<item>
    <title>Debian Gitlab (salsa.debian.org) tricks</title>
    <link>https://daniel-lange.com/archives/140-Debian-Gitlab-salsa.debian.org-tricks.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/140-Debian-Gitlab-salsa.debian.org-tricks.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=140</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Debian is moving the git hosting from &lt;a href=&quot;https://alioth.debian.org&quot;&gt;alioth.debian.org&lt;/a&gt;, an instance of Fusionforge, to &lt;a href=&quot;https://salsa.debian.org&quot;&gt;salsa.debian.org&lt;/a&gt; which is a Gitlab instance.&lt;/p&gt;

&lt;p&gt;There is some background reading available on &lt;a href=&quot;https://wiki.debian.org/Salsa/&quot;&gt;https://wiki.debian.org/Salsa/&lt;/a&gt;. This also has pointers to an import script to ease migration for people that move repositories. It&#039;s definitely worth hanging out in &lt;a href=&quot;irc://irc.oftc.net/alioth&quot;&gt;#alioth on oftc&lt;/a&gt;, too, to learn more about salsa / gitlab in case you have a persistent irc connection.&lt;/p&gt;

&lt;p&gt;As of now() salsa has 15,320 projects, 2,655 users in 298 groups.&lt;br /&gt;
Alioth has 29,590 git repositories (which is roughly equivalent to a project in Gitlab), 30,498 users in 1,154 projects (which is roughly equivalent a group in Gitlab).&lt;/p&gt;

&lt;p&gt;So we currently have 50% of the git repositories migrated. One month after leaving beta. This is very impressive.&lt;br /&gt;
As Alioth has naturally accumulated some cruft, Alexander Wirt (formorer) estimates that 80% of the repositories in use have already been migrated.&lt;/p&gt;

&lt;p&gt;So it&#039;s time to update your local &lt;code&gt;.git/config&lt;/code&gt; URLs!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://dogguy.org&quot;&gt;Mehdi Dogguy&lt;/a&gt; has written &lt;a href=&quot;https://salsa.debian.org/mehdi/salsa-scripts/&quot;&gt;nice scripts&lt;/a&gt; to ease handling salsa / gitlab via the (extensive and very well documented) &lt;a href=&quot;https://docs.gitlab.com/ce/api/&quot;&gt;API&lt;/a&gt;. Among them is &lt;a href=&quot;https://salsa.debian.org/mehdi/salsa-scripts/blob/master/list_projects.sh&quot;&gt;list_projects&lt;/a&gt; that gets you nice overview of the projects in a specific group. This is especially true for the &quot;Debian&quot; group that contains the former &lt;a href=&quot;https://wiki.debian.org/Alioth/Git#Collab_Maint_project&quot;&gt;collab-maint&lt;/a&gt; repositories, so source code that can and shall be maintained by Debian Developers collectively.&lt;/p&gt;

&lt;h2&gt;Finding migrated repositories&lt;/h2&gt;

&lt;p&gt;Salsa can search quite quickly via the Web UI: &lt;a href=&quot;https://salsa.debian.org/search?utf8=✓&amp;amp;search=htop&quot;&gt;https://salsa.debian.org/search?utf8=✓&amp;amp;search=htop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;Salsa search screenshot&quot; href=&#039;https://salsa.debian.org/search?utf8=✓&amp;search=htop&#039; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:648 --&gt;&lt;img class=&quot;serendipity_image_center&quot; style=&quot;border:1px solid black&quot; width=&quot;774&quot; height=&quot;304&quot; src=&quot;https://daniel-lange.com/uploads/entries/180225_Salsa_search_screenshot.png&quot; title=&quot;Salsa search screenshot&quot; alt=&quot;Salsa search screenshot&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;but finding the URL to clone the repository from is more clicks and ~4MB of data each time (yeah, the modern web), so&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;$ curl &lt;span style=&quot;color: #660033;&quot;&gt;--silent&lt;/span&gt; https:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;salsa.debian.org&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;api&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;v4&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;projects?&lt;span style=&quot;color: #007800;&quot;&gt;search&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;htop&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;|&lt;/span&gt; jq .&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;br /&gt;&amp;#160; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;9546&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;description&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;interactive processes viewer&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;htop&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;name_with_namespace&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Debian / htop&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;path&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;htop&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;path_with_namespace&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;debian/htop&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;created_at&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;2018-02-05T12:44:35.017Z&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;default_branch&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;master&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;tag_list&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;ssh_url_to_repo&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;git@salsa.debian.org:debian/htop.git&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;http_url_to_repo&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;https://salsa.debian.org/debian/htop.git&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;web_url&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;https://salsa.debian.org/debian/htop&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;avatar_url&amp;quot;&lt;/span&gt;: null,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;star_count&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;forks_count&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;,&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;last_activity_at&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;2018-02-17T18:23:05.550Z&amp;quot;&lt;/span&gt;&lt;br /&gt;&amp;#160; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;is a bit nicer.&lt;/p&gt;

&lt;p&gt;Please notice the git url format is a bit odd, it&#039;s either&lt;br /&gt;
&lt;code&gt;git@salsa.debian.org:debian/htop.git&lt;/code&gt; or&lt;br /&gt;
&lt;code&gt;ssh://git@salsa.debian.org/debian/htop.git&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Notice the &quot;:&quot; -&gt; &quot;/&quot; after the hostname. Bit me once.&lt;/p&gt;

&lt;h2&gt;Finding repositories to update&lt;/h2&gt;

&lt;p&gt;At this time I found it useful to check which of the repositories I have cloned had not yet been updated in the local &lt;code&gt;.git/config&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;find&lt;/span&gt; ~&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;debconf&lt;/span&gt; ~&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;my_sources ~&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;shared &lt;span style=&quot;color: #660033;&quot;&gt;-ipath&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;*.git/config&#039;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-exec&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;grep&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-H&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;url.*git\.debian&#039;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;{}&#039;&lt;/span&gt; \;&lt;/div&gt;

&lt;p&gt;Thanks to Jörg Jaspert (Ganneff) the Debconf repositories have all been &lt;a href=&quot;https://salsa.debian.org/debconf-team/public&quot;&gt;moved to Salsa&lt;/a&gt; now.&lt;br /&gt;
Hint: Bug him for his scripts if you need to do complex moves.&lt;/p&gt;

&lt;p&gt;Updating the URLs has been an hours work on my side and there is little you can do to speed that up if - as in the Debconf case - teams have used the opportunity to clean up and things are not as easy as using &lt;code&gt;sed -i&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;But there is no reason to do this more than once, so for the laptops...&lt;/p&gt;

&lt;h2&gt;Speeding up migration on multiple devices&lt;/h2&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;rsync &lt;span style=&quot;color: #660033;&quot;&gt;-armuvz&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--existing&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--include&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;*/&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--include&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;.git/config&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--exclude&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt; ~&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;debconf&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt; laptop:debconf&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;will rsync the &lt;code&gt;.git/config&lt;/code&gt; files that you changed to other systems where you keep partial copies.&lt;/p&gt;

&lt;p&gt;On these a simple &lt;code&gt;git pull&lt;/code&gt; to get up to remote HEAD or using the &lt;code&gt;git_pull_all&lt;/code&gt; one-liner from &lt;a href=&quot;https://daniel-lange.com/archives/99-Managing-a-project-consisting-of-multiple-git-repositories.html&quot;&gt;https://daniel-lange.com/archives/99-Managing-a-project-consisting-of-multiple-git-repositories.html&lt;/a&gt; will suffice.&lt;/p&gt;

&lt;h2&gt;Git short URL&lt;/h2&gt;

&lt;p&gt;Stefano Rivera (tumbleweed) shared this clever trick:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;git config&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--global&lt;/span&gt; url.&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;ssh://git@salsa.debian.org/&amp;quot;&lt;/span&gt;.insteadOf salsa:&lt;/div&gt;

&lt;p&gt;This way you can &lt;code&gt;git clone salsa:debian/htop&lt;/code&gt;.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 25 Feb 2018 11:30:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/140-guid.html</guid>
    <category>bash</category>
<category>debian</category>
<category>find</category>
<category>git</category>
<category>gitlab</category>
<category>rsync</category>
<category>salsa</category>

</item>
<item>
    <title>IMAPFilter 2.6.11-1 backport for Debian Jessie AMD64 available</title>
    <link>https://daniel-lange.com/archives/139-IMAPFilter-2.6.11-1-backport-for-Debian-Jessie-AMD64-available.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/139-IMAPFilter-2.6.11-1-backport-for-Debian-Jessie-AMD64-available.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=139</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=139</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;One of the perks you get as a Debian Developer is a @debian.org email address. And because Debian is old and the Internet used to be a friendly place this email address is plastered all over the Internet. So you get email spam, a lot of spam.&lt;/p&gt;

&lt;p&gt;I&#039;m using a combination of server and client site filtering to keep spam at bay. Unfortunately the &lt;a href=&quot;https://github.com/lefcha/imapfilter&quot; title=&quot;IMAPFilter github page&quot;&gt;IMAPFilter&lt;/a&gt; version in Debian Jessie doesn&#039;t even support &quot;dry run&quot; (-n) which is not so cool when developing complex filter rules. So I backported the latest (sid) version and agreed with &lt;a href=&quot;http://sylvestre.ledru.info/blog/&quot; title=&quot;Sylvestre&#039;s blog&quot;&gt;Sylvestre Ledru&lt;/a&gt;, one of its maintainers, to share it here and see whether making an official backport is worth it. It&#039;s a straight recompile so no magic and no &lt;a href=&quot;https://packages.debian.org/sid/imapfilter&quot; title=&quot;Debian package site for IMAPFilter&quot;&gt;source code&lt;/a&gt; or &lt;a href=&quot;https://anonscm.debian.org/cgit/collab-maint/imapfilter.git/tree/&quot; title=&quot;Debian packaging for IMAPFilter&quot;&gt;packaging&lt;/a&gt; changes required.&lt;/p&gt;

&lt;p&gt;Get it while its hot:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://daniel-lange.com/software/imapfilter_2.6.11-1~bpo8+1_amd64.deb&quot; title=&quot;download for AMD64: 61kB&quot;&gt;imapfilter_2.6.11-1~bpo8+1_amd64.deb (IMAPFilter Jessie backport)&lt;/a&gt;&lt;br /&gt;
SHA1: bedb9c39e576a58acaf41395e667c84a1b400776&lt;/p&gt;

&lt;p&gt;Clever LUA snippets for &lt;tt&gt;~/.imapfilter/config.lua&lt;/tt&gt; appreciated.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 16 Dec 2017 14:59:22 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/139-guid.html</guid>
    <category>backport</category>
<category>debian</category>
<category>email</category>
<category>filter</category>
<category>imap</category>
<category>jessie</category>
<category>spam</category>

</item>
<item>
    <title>Thunderbird startup hang (hint: Add-Ons)</title>
    <link>https://daniel-lange.com/archives/131-Thunderbird-startup-hang-hint-Add-Ons.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/131-Thunderbird-startup-hang-hint-Add-Ons.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=131</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=131</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;If you see Thunderbird hanging during startup for a minute and then continuing to load fine, you are probably running into an issue similar to what I saw when Debian migrated Icedove back to the &quot;official&quot; Mozilla Thunderbird branding and changed &lt;code&gt;~/.icedove&lt;/code&gt; to &lt;code&gt;~/.thunderbird&lt;/code&gt; in the process (one symlinked to the other).&lt;/p&gt;

&lt;p&gt;Looking at the console log (=start Thunderbird from a terminal so you see its messages), I got:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;console.log: foxclocks.bootstrap._loadIntoWindow(): got xul-overlay-merged - waiting for overlay-loaded
[.. one minute delay ..]
console.log: foxclocks.bootstrap._windowListener(): got window load chrome://global/content/commonDialog.xul
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Stracing confirms it hangs because Thunderbird loops waiting for a &lt;abbr title=&quot;Fast Userspace muTual EXclusion locking mechanism. Who makes up these acronyms?&quot;&gt;FUTEX&lt;/abbr&gt; until that apparently gets kicked by a XUL core timeout.&lt;br /&gt;
(Thanks for defensive programming folks!)&lt;/p&gt;

&lt;p&gt;So in my case uninstalling the Add-On &lt;a href=&quot;https://addons.mozilla.org/eN-US/thunderbird/addon/foxclocks/&quot; title=&quot;A world clock Add-On for Thunderbird / Firefox&quot;&gt;Foxclocks&lt;/a&gt; easily solved the problem.&lt;/p&gt;

&lt;p&gt;I assume other Thunderbird Add-Ons may cause the same issue, hence the more generic description above.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 11 May 2017 08:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/131-guid.html</guid>
    <category>addon</category>
<category>bug</category>
<category>debian</category>
<category>mozilla</category>
<category>thunderbird</category>

</item>
<item>
    <title>Netatalk 3.1.9 .debs for Debian Jessie available (Apple Timemachine backup to Linux servers)</title>
    <link>https://daniel-lange.com/archives/119-Netatalk-3.1.9-.debs-for-Debian-Jessie-available-Apple-Timemachine-backup-to-Linux-servers.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/119-Netatalk-3.1.9-.debs-for-Debian-Jessie-available-Apple-Timemachine-backup-to-Linux-servers.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=119</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=119</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Netatalk 3.1.9 has been released with two interesting fixes / amendments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FIX: afpd: fix &quot;admin group&quot; option&lt;/li&gt;
&lt;li&gt;NEW: afpd: new options &quot;force user&quot; and &quot;force group&quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are the full &lt;a href=&quot;http://netatalk.sourceforge.net/3.1/ReleaseNotes3.1.9.html&quot; title=&quot;Release Notes / Changelog for Netatalk 3.1.9&quot;&gt;release notes for 3.1.9&lt;/a&gt; for your reading pleasure.&lt;/p&gt;

&lt;p&gt;Due to upstream now differentiating between SysVinit and systemd packages I&#039;ve followed that for simplicity&#039;s sake and built libgcrypt-only builds.
If you need the openssl-based tools continue to use the &lt;a href=&quot;https://daniel-lange.com/archives/102-Apple-Timemachine-backups-on-Debian-8-Jessie.html&quot; title=&quot;netatalk 3.1.8 .debs for Debian Jessie&quot;&gt;3.1.8 openssl build&lt;/a&gt; until you have finished your migration to a safer password storage.&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;img class=&quot;serendipity_image_noborder&quot; width=&quot;48&quot; height=&quot;48&quot; hspace=&quot;20&quot; src=&quot;https://daniel-lange.com/uploads/icons/markup/important.png&quot; title=&quot;Warning: Read the original blog post before installing for the first time.&quot; alt=&quot;Warning: Read the original blog post before installing for the first time.&quot; /&gt;
&lt;/td&gt;
&lt;td&gt;
Be sure to read the &lt;a href=&quot;https://daniel-lange.com/archives/102-Apple-Timemachine-backups-on-Debian-8-Jessie.html&quot; title=&quot;Blog entry: Apple Timemachine backups on Debian 8 Jessie&quot;&gt;original blog post&lt;/a&gt; if you are new to Netatalk3 on Debian Jessie!&lt;br /&gt;
You&#039;ll get nowhere if you install the .debs below and don&#039;t know about the upgrade path. So &lt;abbr title=&quot;Read The Fine Article&quot;&gt;RTFA&lt;/abbr&gt;.
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Now with that out of the way:&lt;/p&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/119-Netatalk-3.1.9-.debs-for-Debian-Jessie-available-Apple-Timemachine-backup-to-Linux-servers.html#extended&quot;&gt;Continue reading &quot;Netatalk 3.1.9 .debs for Debian Jessie available (Apple Timemachine backup to Linux servers)&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 07 Aug 2016 12:30:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/119-guid.html</guid>
    <category>apple</category>
<category>backup</category>
<category>debian</category>
<category>jessie</category>
<category>netatalk</category>
<category>systemd</category>
<category>sysvinit</category>
<category>timemachine</category>

</item>
<item>
    <title>Netatalk 3.1.8 .debs for Debian Jessie available (Apple Timemachine backup to Linux servers)</title>
    <link>https://daniel-lange.com/archives/115-Netatalk-3.1.8-.debs-for-Debian-Jessie-available-Apple-Timemachine-backup-to-Linux-servers.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/115-Netatalk-3.1.8-.debs-for-Debian-Jessie-available-Apple-Timemachine-backup-to-Linux-servers.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=115</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=115</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;The Debian Netatalk3 saga continues at &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685878&quot; title=&quot;Debian bugtracker: newer upstream versions available&quot;&gt;bug #685878&lt;/a&gt;. In season 4 of the epic the main issue still seems to be unclear license indications of a (very) few source files. And the usual &quot;you go fix it&quot;, &quot;no! you go fix it!&quot;. May be the fact that Firefox will be &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815006&quot; title=&quot;Debian bugtracker: Renaming Iceweasel to Firefox&quot;&gt;Firefox again in Debian&lt;/a&gt; [yeah!] could serve as an inspiration to the Netatalk maintainers?&lt;/p&gt;

&lt;p&gt;Ah, well, until we have the eureka moment for Netatalk3 (4?) ...&lt;br /&gt;
&lt;font color=&quot;green&quot;&gt;&amp;lt;pragmatism style=&quot;priority-on-users:yes&quot;&amp;gt;&lt;/font&gt; ... I&#039;ll post my .debs of the new 3.1.8 version of Netatalk as well.&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;img class=&quot;serendipity_image_left&quot; width=&quot;48&quot; height=&quot;48&quot; hspace=&quot;20&quot; src=&quot;https://daniel-lange.com/uploads/icons/markup/important.png&quot; title=&quot;Warning: Read the original blog post before installing for the first time.&quot; alt=&quot;Warning: Read the original blog post before installing for the first time.&quot; /&gt;
&lt;/td&gt;
&lt;td&gt;
Be sure to read the &lt;a href=&quot;https://daniel-lange.com/archives/102-Apple-Timemachine-backups-on-Debian-8-Jessie.html&quot; title=&quot;Blog entry: Apple Timemachine backups on Debian 8 Jessie&quot;&gt;original blog post&lt;/a&gt; if you are new to Netatalk3 on Debian Jessie!&lt;br /&gt;
You&#039;ll get nowhere if you install the .debs below and don&#039;t know about the upgrade path. So &lt;abbr title=&quot;Read The Fine Article&quot;&gt;RTFA&lt;/abbr&gt;.
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;The &lt;a href=&quot;http://netatalk.sourceforge.net/3.1/ReleaseNotes3.1.8.html&quot; title=&quot;Release Notes / Changelog for Netatalk 3.1.8&quot;&gt;release notes for 3.1.8&lt;/a&gt; don&#039;t list anything that makes the update look mandatory but there is a nice compatibility fix for shares also exported via Samba (compatible xattrs handling). And it&#039;s faster.&lt;/p&gt;

&lt;p&gt;The update instructions (assuming you have installed 3.1.7 before) are:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# install new debs&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;dpkg&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-i&lt;/span&gt; libatalk17_3.1.8-&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;_amd64.deb netatalk_3.1.8-&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;_amd64.deb&lt;br /&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# reboot the box (restart of netatalk may not be sufficient)&lt;/span&gt;&lt;br /&gt;reboot&lt;br /&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# After reboot: remove the obsolete libatalk16 (3.1.8 uses libatalk17)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;dpkg&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-r&lt;/span&gt; libatalk16&lt;/div&gt;

&lt;p&gt;And here are the files:&lt;/p&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/115-Netatalk-3.1.8-.debs-for-Debian-Jessie-available-Apple-Timemachine-backup-to-Linux-servers.html#extended&quot;&gt;Continue reading &quot;Netatalk 3.1.8 .debs for Debian Jessie available (Apple Timemachine backup to Linux servers)&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 18 Feb 2016 10:37:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/115-guid.html</guid>
    <category>apple</category>
<category>debian</category>
<category>jessie</category>
<category>samba</category>
<category>timemachine</category>
<category>update</category>
<category>xattrs</category>

</item>
<item>
    <title>Apple Timemachine backups on Debian 8 (Jessie)</title>
    <link>https://daniel-lange.com/archives/102-Apple-Timemachine-backups-on-Debian-8-Jessie.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/102-Apple-Timemachine-backups-on-Debian-8-Jessie.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=102</wfw:comment>

    <slash:comments>31</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=102</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Upgrading Debian 7 (Wheezy) servers to Debian 8 (Jessie) proves (unexpectedly) quite rough around the edges.&lt;/p&gt;

&lt;p&gt;That&#039;s what you get for using a version x.0, we should have known better &lt;img src=&quot;https://daniel-lange.com/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;

&lt;p&gt;And - of course - the &lt;a href=&quot;https://www.debian.org/releases/jessie/releasenotes&quot; title=&quot;Debian 8 Jessie release notes&quot;&gt;release notes&lt;/a&gt; follow the common practice of not even mentioning any of the issues we encountered so far.&lt;/p&gt;

&lt;p&gt;Ah, well, let&#039;s go through the first one:&lt;/p&gt;

&lt;p&gt;In Debian 7 (Wheezy) there was netatalk 2.2.2 (&lt;a href=&quot;https://packages.debian.org/wheezy/net/netatalk&quot; title=&quot;netatalk in Debian Wheezy&quot;&gt;packages link&lt;/a&gt;). Now during upgrades that package may or may not get &lt;em&gt;removed&lt;/em&gt;. There is no netatalk in Debian 8 (Jessie) anymore. Duh.
There is in sid (aka Debian unstable) (&lt;a href=&quot;https://packages.debian.org/sid/net/netatalk&quot; title=&quot;netatalk in Debian Sid&quot;&gt;packages link&lt;/a&gt;) so we may see a backport some time. Or not. In any case this is still 2.2.5 at the time of writing and as Adrian Knoth put it in the three year old &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690227#81&quot; title=&quot;Debian bugtracker bug report page&quot;&gt;bug&lt;/a&gt;  asking for a upgrade to Netatalk 3:&lt;/p&gt;

&lt;blockquote&gt;
Let&#039;s not ship another release without netatalk3, it&#039;s embarrassing.
&lt;/blockquote&gt;

&lt;p&gt;Yes. It is. Removing a working version and not even mentioning it in the release notes is even worse though. So no cookies there.&lt;/p&gt;

&lt;p&gt;Luckily the absolutely awesome Debian and greater FLOSS community have sorted 90% of the problem out for us already:&lt;/p&gt;

&lt;p&gt;A quick Google search turns up an excellent article on netatalk&#039;s wiki that details &lt;a href=&quot;&quot; title=&quot;Netatalk wiki entry: Install Netatalk 3.1.7 on Debian 8 Jessie&quot;&gt;installing Netatalk 3.1.7 on Debian 8 Jessie&lt;/a&gt;. There are two shortcomings to this: First it doesn&#039;t compile to .debs but installs besides apt and friends. And second it compiles with Spotlight search, courtesy of Gnome tracker, which doesn&#039;t really work well on servers yet. Hence we&#039;re lucky that &lt;a href=&quot;https://github.com/adiknoth/netatalk-debian&quot; title=&quot;Github repository for Debian netalk packages version 3.x&quot;&gt;Adrian Knoth&#039;s debified install&lt;/a&gt; has not yet added the tracker dependencies. It does compile for systemd use (the default for Debian 8 Jessie). If you want to continue using SysVInit, you need to modify &lt;code&gt;debian/rules&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Compiling to .debs becomes as easy as:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# get build dependencies and a few helpers&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-get install&lt;/span&gt; build-essential devscripts debhelper cdbs autotools-dev dh-buildinfo libdb-dev libwrap0-dev libpam0g-dev libcups2-dev libkrb5-dev libltdl3-dev libgcrypt11-dev libcrack2-dev libavahi-client-dev libldap2-dev libacl1-dev libevent-dev d-shlibs dh-systemd&lt;br /&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# in case you want to try the tracker support (you need to ammend the debian/ build config as well)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# apt-get install tracker libtracker-sparql-1.0-dev libtracker-miner-1.0-dev &amp;#160;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;git clone&lt;/span&gt; https:&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;//&lt;/span&gt;github.com&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;adiknoth&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;netatalk-debian&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;cd&lt;/span&gt; netatalk-debian&lt;br /&gt;debuild &lt;span style=&quot;color: #660033;&quot;&gt;-b&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-uc&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-us&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;This should leave you with (at the time of writing this):&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;File&lt;/th&gt;
  &lt;th&gt;Function&lt;/th&gt;
  &lt;th&gt;md5&lt;/th&gt;
  &lt;th&gt;sha1&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;a href=&quot;https://daniel-lange.com/software/netatalk/gcrypt/libatalk-dev_3.1.7-1_amd64.deb&quot; title=&quot;download for AMD64: 304kB&quot;&gt;libatalk-dev_3.1.7-1_amd64.deb&lt;/a&gt;&lt;/td&gt;
  &lt;td&gt;Development files for the libatalk library (dev only)&lt;/td&gt;
  &lt;td&gt;e5a465e39a8560c919d8db85c8e5a83b&lt;/td&gt;
  &lt;td&gt;0b924cf75f22ab42406289c6f18ae0243d6396a3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;a href=&quot;https://daniel-lange.com/software/netatalk/gcrypt/libatalk16_3.1.7-1_amd64.deb&quot; title=&quot;download for AMD64: 253kB&quot;&gt;libatalk16_3.1.7-1_amd64.deb&lt;/a&gt;&lt;/td&gt;
  &lt;td&gt;libatalk library (needed)&lt;/td&gt;
  &lt;td&gt;17a3d677ed0b3df1c2f4c1a8ab9045fd&lt;/td&gt;
  &lt;td&gt;7345ed3edd442716c99c2fe979140703204c0826&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;a href=&quot;https://daniel-lange.com/software/netatalk/gcrypt/netatalk_3.1.7-1_amd64.deb&quot; title=&quot;download for AMD64: 302kB&quot;&gt;netatalk_3.1.7-1_amd64.deb&lt;/a&gt;&lt;/td&gt;
  &lt;td&gt;netatalk daemons (needed)&lt;/td&gt;
  &lt;td&gt;c694abca7f3cdc0070b2b3e7d528324a&lt;/td&gt;
  &lt;td&gt;932d1e3d5899958f29e79a7ba40e858d4ac272e8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Obviously you can download the files above if you run the AMD64 architecture and trust me enough to compile them for you.&lt;/p&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/102-Apple-Timemachine-backups-on-Debian-8-Jessie.html#extended&quot;&gt;Continue reading &quot;Apple Timemachine backups on Debian 8 (Jessie)&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 18 May 2015 18:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/102-guid.html</guid>
    <category>apple</category>
<category>backup</category>
<category>debian</category>
<category>jessie</category>
<category>netatalk</category>
<category>timemachine</category>
<category>updated</category>
<category>wheezy</category>

</item>
<item>
    <title>Managing a project consisting of multiple git repositories</title>
    <link>https://daniel-lange.com/archives/99-Managing-a-project-consisting-of-multiple-git-repositories.html</link>
            <category>IT</category>
    
    <comments>https://daniel-lange.com/archives/99-Managing-a-project-consisting-of-multiple-git-repositories.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=99</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=99</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;The core team organizing DebConf, the annual Debian developer conference, reached out to me two weeks ago to help support this year&#039;s effort a bit.&lt;/p&gt;

&lt;p&gt;I&#039;m very happy to do so as Debian is a cornerstone of everything I do in the Open Source/Free Software space.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:612 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;459&quot; height=&quot;494&quot;  src=&quot;https://daniel-lange.com/uploads/entries/150329_git_pull_all_screenshot.png&quot; title=&quot;Screenshot of git_pull_all with color&quot; alt=&quot;Screenshot of git_pull_all with color&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To get me started I got access to a lot of mailing lists and irc channels. And even more git repositories. So many that the DebConf team even has an &lt;a href=&quot;https://wiki.debconf.org/wiki/GitMigration&quot; title=&quot;DebConf explanation of git repository structure&quot;&gt;instruction page&lt;/a&gt; on how the repositories all fit together.&lt;/p&gt;

&lt;p&gt;It&#039;s unfortunately quite common to split a bigger project into many git repositories to ease access rights management and reduce the noise and data transfer volume for the average user. The downside is, everybody ends up with a dozen or more individual repositories to keep pulling. And then there&#039;s git annex for yet another &lt;a href=&quot;http://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering&quot; title=&quot;Wikipedia: The Fundamental theorem of software engineering&quot;&gt;level of indirection&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://joeyh.name/&quot; title=&quot;Joey Hess&#039; homepage&quot;&gt;Joey Hess&lt;/a&gt;, a former Debian developer, has even written an extensive tool, &lt;a href=&quot;http://myrepos.branchable.com/&quot; title=&quot;Myrepos (mr) homepage&quot;&gt;myrepos&lt;/a&gt;, to meta-manage the different repositories and it can do quite some magic across different SCMSs&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. In my case this is a bit of an overkill though.&lt;/p&gt;

&lt;p&gt;And using myrepos may get you confused at some point whether to now run &lt;code&gt;mr&lt;/code&gt; or &lt;code&gt;git&lt;/code&gt; directly for each batch of repos you have inherited over some time of working on multiple projects.&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; Thus I prefer the simple route:&lt;/p&gt;

&lt;p&gt;Check out each repository into a common top-level directory (&lt;code&gt;~/debconf/&lt;/code&gt; in this case) and then put the following two lines into an executable script &lt;code&gt;git_pull_all&lt;/code&gt; into that top level directory:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;find&lt;/span&gt; ~&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;debconf&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-mindepth&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-maxdepth&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-type&lt;/span&gt; d &lt;span style=&quot;color: #660033;&quot;&gt;-exec&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sh&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;cd {}; test -r .git/config &amp;amp;&amp;amp; git pull $*&amp;quot;&lt;/span&gt; \;&lt;/div&gt;

&lt;p&gt;This will allow you to pull all git repos with one command and keep the normal syntax for everything else you do with each repo.&lt;/p&gt;

&lt;p&gt;The --mindepth and --maxdepth will instruct &lt;code&gt;find&lt;/code&gt; to just go and run your &lt;code&gt;git pull&lt;/code&gt; only inside each direct child of the top level directory. So recursion depth = 1. That is the single trick there is to this.&lt;/p&gt;

&lt;h3&gt;Updates:&lt;/h3&gt;

&lt;p&gt;If you like to have some color and a bit of a spaced layout for improved readability, try:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;find&lt;/span&gt; ~&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;debconf&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-mindepth&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-maxdepth&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-type&lt;/span&gt; d &lt;span style=&quot;color: #660033;&quot;&gt;-exec&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sh&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-c&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;cd {}; test -r .git/config &amp;amp;&amp;amp; (printf &lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\&amp;quot;&lt;/span&gt;\033[1m\033[34m%-50s\033[0m&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\$&lt;/span&gt;{PWD}:&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\&amp;quot;&lt;/span&gt; ; git pull $*)&amp;quot;&lt;/span&gt; \;&lt;/div&gt;

&lt;p&gt;When you have &lt;strong&gt;pull.rebase=true&lt;/strong&gt; set in your .gitconfig, you can run &lt;code&gt;./git_pull_all --no-rebase&lt;/code&gt; to avoid rebases in case you work somewhere and want to have the merge commits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P.S.:&lt;/strong&gt; The DebConf15 Heidelberg registration just opened, please check &lt;a href=&quot;http://debconf15.debconf.org&quot; title=&quot;DebConf15 Heidelberg home page&quot;&gt;the DebConf15 homepage&lt;/a&gt; for news, venue information and please register if you want to come around.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;

&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;Source Code Management Systems, like git, mercurial (hg) or subversion (svn). Or God forbid ... &lt;a href=&quot;https://git.wiki.kernel.org/index.php/LinusTalk200705Transcript&quot; title=&quot;Linus&#039; talk of git with a lot of .... info on cvs; transcript&quot;&gt;cvs&lt;/a&gt;. I don&#039;t like the (D)VCS (Distributed) Version Control Systems moniker. Because that&#039;s not really all these systems do. Not even the most important piece of what they do these days.&amp;#160;&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&quot;fn:2&quot;&gt;
&lt;p&gt;With myrepos you can still work with each individual repository via git. Just so nobody will write in &quot;but...&quot;.&amp;#160;&lt;a href=&quot;#fnref:2&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
 
    </content:encoded>

    <pubDate>Thu, 05 Mar 2015 13:30:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/99-guid.html</guid>
    <category>debian</category>
<category>git</category>
<category>scms</category>
<category>script</category>
<category>shell</category>
<category>updated</category>

</item>

</channel>
</rss>
