<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Knowledge Base (Posts about dependencies)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/dependencies.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2023 &lt;a href="mailto:bgstack15@gmail.com"&gt;bgstack15&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-SA"
style="border-width:0; margin-bottom:12px;"
src="https://bgstack15.ddns.net/.images/l_by-sa_4.0_88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Thu, 12 Jan 2023 14:15:32 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Devuan updates for January 2023 and FreeIPA</title><link>https://bgstack15.ddns.net/blog/posts/2023/01/12/devuan-updates-for-january-2023-and-freeipa/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;As of January 10, the latest monthly OS updates has introduced a problem only for new installs. Package &lt;code&gt;freeipa-client&lt;/code&gt; depends on a package, python3-ipalib-hbac, that has a hard dependency on python3&amp;lt;3.11.&lt;/p&gt;
&lt;p&gt;And of course I wanted to set up a system with Devuan Ceres at that exact day. It has since been fixed, with the release of &lt;a href="http://snapshot.debian.org/package/sssd/2.8.1-2/"&gt;src:sssd_2.8.1-2&lt;/a&gt; today.&lt;/p&gt;
&lt;p&gt;I had to set up an apt repo connection to snapshot.debian.org, in file &lt;code&gt;/etc/apt/sources.list.d/snapshot.list&lt;/code&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;deb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sx"&gt;[check-valid-until=no]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;http://snapshot.debian.org/archive/debian/20221215T151605Z/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;unstable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;main&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then run:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo apt-get install python3=3.10.6-3 python3-minimal=3.10.6-3 libpython3-stdlib=3.10.6-3
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The FreeIPA client install process also needs this:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo apt-get install python3-cryptography=3.4.8-2
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To get around this error on the &lt;code&gt;ipa-client-install&lt;/code&gt; invocation.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;AttributeError&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'cryptography.utils'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;has&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;attribute&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'register_interface'&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Did&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;you&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'verify_interface'&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>dependencies</category><category>devuan</category><category>freeipa</category><category>updates</category><guid>https://bgstack15.ddns.net/blog/posts/2023/01/12/devuan-updates-for-january-2023-and-freeipa/</guid><pubDate>Thu, 12 Jan 2023 14:00:41 GMT</pubDate></item><item><title>Devuan updates for November 2022 and sssd error</title><link>https://bgstack15.ddns.net/blog/posts/2022/11/01/devuan-updates-nov-2022-and-sssd-error/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;After running OS updates on Devuan unstable, I got this failure.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;be[ipa.internal.com&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dp_load_module&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x0400&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;About&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;load&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;ipa&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;be[ipa.internal.com&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dp_module_open_lib&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Loading&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;ipa&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;/usr/lib/x86_64-linux-gnu/sssd/libsss_ipa.so&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;be[ipa.internal.com&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dp_module_open_lib&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x0010&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Unable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;load&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;ipa&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;/usr/lib/x86_64-linux-gnu/sssd/libsss_ipa.so&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;libndr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;so&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cannot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;open&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shared&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;file&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;No&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;such&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;file&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;be[ipa.internal.com&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dp_load_module&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x0020&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Unable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;be[ipa.internal.com&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dp_target_init&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x0010&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Unable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;load&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ipa&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;be[ipa.internal.com&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dp_load_targets&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x0020&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Unable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;load&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;80&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Accessing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;corrupted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;shared&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;library&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;be[ipa.internal.com&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dp_init_done&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x0020&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Unable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;initialize&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;targets&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;1432158209&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Internal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Needed to add file &lt;code&gt;/etc/apt/sources.list.d/temp.list&lt;/code&gt; with contents.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;deb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sx"&gt;[check-valid-until=no]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;http://snapshot.debian.org/archive/debian/20221001T092433Z/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;unstable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;main&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;contrib&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And then downgrade samba-libs, either with aptitude which can dynamically identify other dependencies to also downgrade, or just with apt-get.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo apt-get install libsmbclient=2:4.16.5+dfsg-1 samba-libs=2:4.16.5+dfsg-1
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Downgrading sssd to 2.7.4-1 from 2.7.4-1+b1 is not necessary.&lt;/p&gt;
&lt;p&gt;I could have avoided this this time by running this first:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo apt-mark hold samba-libs
&lt;/pre&gt;&lt;/div&gt;</description><category>dependencies</category><category>devuan</category><category>sssd</category><category>updates</category><guid>https://bgstack15.ddns.net/blog/posts/2022/11/01/devuan-updates-nov-2022-and-sssd-error/</guid><pubDate>Tue, 01 Nov 2022 13:23:34 GMT</pubDate></item><item><title>Update ipasam rpm</title><link>https://bgstack15.ddns.net/blog/posts/2022/05/13/update-ipasam-rm/</link><dc:creator>bgstack15</dc:creator><description>&lt;h3&gt;Overview&lt;/h3&gt;
&lt;p&gt;Update-ipasam-rpm is a project that facilitates building a custom rpm with just the one file that samba needs to authenticate users to ipa.&lt;/p&gt;
&lt;h3&gt;Update-ipasam-rpm upstream&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/bgstack15/ipasam/"&gt;Gitlab&lt;/a&gt; is the upstream. This is original work.&lt;/p&gt;
&lt;h3&gt;Reason for existing&lt;/h3&gt;
&lt;p&gt;The proper &lt;code&gt;ipa-server-trust-ad&lt;/code&gt; rpm has a large number of dependencies which are not necessary merely when using samba with ipa user authentication, so this project copies that file out and builds a small rpm just for the one file. This makes my samba file server need fewer packages installed.&lt;/p&gt;
&lt;h3&gt;Alternatives&lt;/h3&gt;
&lt;p&gt;Install &lt;code&gt;ipa-server-trust-ad&lt;/code&gt; with all of its dependencies, which is way more than I want to use when I just need ipasam.so.&lt;/p&gt;
&lt;h3&gt;Dependencies&lt;/h3&gt;
&lt;p&gt;For any rpm-based system, but primarily AlmaLinux 8, the server that runs the cron job needs a few things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Http/s access to a package mirror&lt;/li&gt;
&lt;li&gt;Https access to &lt;a href="https://copr.fedorainfracloud.org/"&gt;copr&lt;/a&gt; to initiate builds&lt;/li&gt;
&lt;li&gt;Https access to &lt;a href="https://gitlab.com/bgstack15/ipasam/"&gt;gitlab&lt;/a&gt; to pull ipasam.spec template&lt;/li&gt;
&lt;li&gt;Packages: &lt;code&gt;copr-cli&lt;/code&gt;, &lt;code&gt;rpmbuild&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Unprivileged user, shown in this documentation as username &lt;code&gt;copruser&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The copr api can be used with a copr user with a generated api key (&lt;a href="https://copr.fedorainfracloud.org/api/"&gt;Reference 1&lt;/a&gt;).&lt;/p&gt;
&lt;h3&gt;Files in the project&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~copruser/.config/copr&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~copruser/.config/ipasam&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~copruser/bin/update-ipasam-rpm.sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/cron/70_ipasam_cron&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~copruser/.cache/ipasam.spec&lt;/code&gt; (generated by modifying spec from this repo)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~copruser/.cache/ipa-server-trust-ad.ver&lt;/code&gt; (generated)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~copruser/rpmbuild/SRPMS/iapsam*.srpm&lt;/code&gt; (generated)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Usage&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Create user &lt;code&gt;copruser&lt;/code&gt; or other unprivileged user as desired. &lt;/li&gt;
&lt;li&gt;Deploy the non-generated files from this repository to the above locations and inspect the config files.&lt;/li&gt;
&lt;li&gt;Prepare a user on the &lt;a href="https://copr.fedorainfracloud.org/"&gt;copr&lt;/a&gt; and generate an api key and place in file &lt;code&gt;~copruser/.config/copr&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the command manually to see it operate.&lt;/p&gt;
&lt;p&gt;~/bin/update-ipasam-rpm.sh&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Visit your copr project to see the ipasam rpm that you built!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Differences from upstream&lt;/h3&gt;
&lt;p&gt;N/A&lt;/p&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://copr.fedorainfracloud.org/api/"&gt;COPR API introduction&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><category>cron</category><category>dependencies</category><category>ipa</category><category>ipasam</category><guid>https://bgstack15.ddns.net/blog/posts/2022/05/13/update-ipasam-rm/</guid><pubDate>Fri, 13 May 2022 13:02:37 GMT</pubDate></item><item><title>Deplist improved, with suggested and recommended entries</title><link>https://bgstack15.ddns.net/blog/posts/2020/04/27/deplist-improved-with-suggested-and-recommended-entries/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;STUB make sure to document how to use &lt;code&gt;make DEPLIST DEPTYPE=sug DISTRO=devuan&lt;/code&gt;
and default of &lt;code&gt;make DEPLIST DEPTYPE=dep DISTRO=devuan&lt;/code&gt; and make DEPLIST
DEPTYPE=rec DISTRO=devuan Here is my improved method for using target
&lt;strong&gt;deplist&lt;/strong&gt;. In the Makefile:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;deplist:
   @# deplist 2020-04-18 input must be comma separated
   @# DEPTYPE( dep , rec , sug ) for depends, recommends, or suggests
   @if test -z "&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;DISTRO&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;" ; then &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;echobin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; "Please run \`make deplist\` with DISTRO= one of: `make deplist_opts 2&amp;gt;&lt;span class="err"&gt;&amp;amp;&lt;/span&gt;1 1&amp;gt;/dev/null | &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;xargsbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;`. Aborted." 1&amp;gt;&lt;span class="err"&gt;&amp;amp;&lt;/span&gt;2 ; exit 1 ; fi
   @if ! &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;echobin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; "&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;DEPTYPE&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;" | grep -qE "^(dep|rec|sug)$$" ; then &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;echobin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; "Please run \`make deplist\` with DEPTYPE= one of: dep, rec, sug. Undefined will use \`dep\`. Aborted." 1&amp;gt;&lt;span class="err"&gt;&amp;amp;&lt;/span&gt;2 ; exit 1; fi
   @&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;grepbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; -h --exclude-dir='doc' -riIE "\&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;DEPTYPE&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;&lt;span class="nt"&gt;-&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;SRCDIR&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;awkbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;-v&lt;/span&gt; &lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="na"&gt;domain=&lt;/span&gt;&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;DISTRO&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;&lt;span class="s"&gt;" -v "&lt;/span&gt;&lt;span class="na"&gt;deptype=&lt;/span&gt;&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;DEPTYPE&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;&lt;span class="s"&gt;" 'tolower($$2) ~ deptype"&lt;/span&gt;&lt;span class="err"&gt;-"domain&lt;/span&gt; &lt;span class="err"&gt;{$$&lt;/span&gt;&lt;span class="na"&gt;1=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="err"&gt;;$$&lt;/span&gt;&lt;span class="na"&gt;2=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="err"&gt;;print}'&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="err"&gt;tr&lt;/span&gt; &lt;span class="err"&gt;','&lt;/span&gt; &lt;span class="err"&gt;'\n'&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;sortbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;uniqbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;sedbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;-r&lt;/span&gt; &lt;span class="err"&gt;-e&lt;/span&gt; &lt;span class="err"&gt;'s/^\s*//'&lt;/span&gt; &lt;span class="err"&gt;-e&lt;/span&gt; &lt;span class="err"&gt;"s/\s*\$$/&lt;/span&gt;&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;SEPARATOR&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;&lt;span class="err"&gt;/"&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;xargsbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;

&lt;span class="err"&gt;deplist_opts:&lt;/span&gt;
   &lt;span class="err"&gt;@#&lt;/span&gt; &lt;span class="err"&gt;deplist_opts&lt;/span&gt; &lt;span class="err"&gt;2020-04-18&lt;/span&gt; &lt;span class="err"&gt;find&lt;/span&gt; &lt;span class="err"&gt;all&lt;/span&gt; &lt;span class="err"&gt;available&lt;/span&gt; &lt;span class="err"&gt;dependency&lt;/span&gt; &lt;span class="err"&gt;domains&lt;/span&gt;
   &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;grepbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;-h&lt;/span&gt; &lt;span class="err"&gt;-o&lt;/span&gt; &lt;span class="err"&gt;-riIE&lt;/span&gt; &lt;span class="err"&gt;'\&amp;lt;(dep|rec|sug)-[^\&lt;/span&gt; &lt;span class="err"&gt;:]+:'&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;SRCDIR&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;sedbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;-r&lt;/span&gt; &lt;span class="err"&gt;-e&lt;/span&gt; &lt;span class="err"&gt;'s/(dep|rec|sug)-//;'&lt;/span&gt; &lt;span class="err"&gt;-e&lt;/span&gt; &lt;span class="err"&gt;'s/:$$//;'&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;sortbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;uniqbin&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; &lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;&amp;amp;&lt;/span&gt;2
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Observe how these all depend on variables being defined earlier:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;awkbin     :=$(shell which awk)
chmodbin   :=$(shell which chmod)
cpbin      :=$(shell which cp)
echobin    :=$(shell which echo)
falsebin   :=$(shell which false)
findbin    :=$(shell which find)
grepbin    :=$(shell which grep)
gzipbin    :=$(shell which gzip)
installbin :=$(shell which install)
rmbin      :=$(shell which rm)
rmdirbin   :=$(shell which rmdir)
sedbin     :=$(shell which sed)
sortbin    :=$(shell which sort)
truebin    :=$(shell which true)
uniqbin    :=$(shell which uniq)
xargsbin   :=$(shell which xargs)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In the source files in the project, you can use entries like these:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# dep-devuan: mawk | gawk, lightdm, upower
# dep-raw: awk, grep, sed, lightdm
# rec-devuan: lightdm-gtk-greeter
# sug-devuan: logout-manager
# dep-centos: lightdm, upower
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Obviously this is a poor substitute for the make_shlibs from debhelper (which
probably just wraps around ldd). But for my shell-driven packages, it's pretty
nice if you add the dependencies to each individual file.&lt;/p&gt;</description><category>dependencies</category><category>dpkg</category><category>make</category><category>makefile</category><guid>https://bgstack15.ddns.net/blog/posts/2020/04/27/deplist-improved-with-suggested-and-recommended-entries/</guid><pubDate>Mon, 27 Apr 2020 12:53:10 GMT</pubDate></item><item><title>Makefile trick: deplist</title><link>https://bgstack15.ddns.net/blog/posts/2020/03/18/makefile-trick-deplist/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I whipped together a snippet for a Makefile I plan on using more in the
future. This target, deplist, searches the entire source tree for my "#
Dependencies:" tags, by distribution name, and lists them on standard out.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nf"&gt;deplist&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    @if &lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;DISTRO&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Please run \`make deplist\` with DISTRO= one of: `make deplist_opts 2&amp;gt;&amp;amp;1 1&amp;gt;/dev/null | xargs`. Aborted."&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;fi&lt;/span&gt;
    @grep -h --exclude&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Makefile'&lt;/span&gt; --exclude-dir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'doc'&lt;/span&gt; -A5 -riIE dependencies &lt;span class="k"&gt;$(&lt;/span&gt;SRCDIR&lt;span class="k"&gt;)&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       awk -v &lt;span class="s1"&gt;'distro=$(DISTRO)'&lt;/span&gt; &lt;span class="s1"&gt;'tolower($$0) ~ distro {$$1="";$$2="";print}'&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       awk &lt;span class="s1"&gt;'BEGIN{cmd="xargs -n1"} $$0 !~ /\(/{print $$0 | cmd ; close(cmd);} $$0 ~ /\(/{print;}'&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       sort &lt;span class="p"&gt;|&lt;/span&gt; uniq &lt;span class="p"&gt;|&lt;/span&gt; sed -r -e &lt;span class="s1"&gt;'s/$$/$(SEPARATOR)/'&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; xargs

&lt;span class="nf"&gt;deplist_opts&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    @echo &lt;span class="s2"&gt;"el7"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
    @echo &lt;span class="s2"&gt;"devuan"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And, of course, probably place these in your .PHONY list because these &lt;a href="https://stackoverflow.com/questions/2145590/what-is-the-purpose-of-phony-in-a-makefile"&gt;are
not real files to be built&lt;/a&gt;.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nl"&gt;.PHONY:&lt;/span&gt; &lt;span class="nf"&gt;clean&lt;/span&gt; &lt;span class="no"&gt;install&lt;/span&gt; &lt;span class="no"&gt;uninstall&lt;/span&gt; &lt;span class="no"&gt;list&lt;/span&gt; &lt;span class="no"&gt;deplist&lt;/span&gt; &lt;span class="no"&gt;deplist_opts&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Every file in the project that has an external dependency should have some
comments in this format:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# Dependencies:
#    devuan: python3-tk python3-pil
#    el7: python36 python36-pil
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To use this target in a debuild recipe, so that it will dynamically build the
dpkg dependency list, use:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;override_dh_gencontrol&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt; &lt;span class="s2"&gt;"misc:Depends="&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;$&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="n"&gt;APPNAME&lt;/span&gt;&lt;span class="o"&gt;}.&lt;/span&gt;&lt;span class="n"&gt;substvars&lt;/span&gt;
    &lt;span class="n"&gt;make&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="n"&gt;src&lt;/span&gt; &lt;span class="n"&gt;deplist&lt;/span&gt; &lt;span class="n"&gt;DISTRO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;devuan&lt;/span&gt; &lt;span class="n"&gt;SEPARATOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;','&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;grep&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;vE&lt;/span&gt; &lt;span class="s1"&gt;'make\[[0-9]'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;$&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="n"&gt;APPNAME&lt;/span&gt;&lt;span class="o"&gt;}.&lt;/span&gt;&lt;span class="n"&gt;substvars&lt;/span&gt;
    &lt;span class="n"&gt;dh_gencontrol&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;References&lt;/h2&gt;
&lt;p&gt;Inspiration from rpm's &lt;a href="https://github.com/rpm-software-management/rpm/pull/593"&gt;Dynamic Build Dependency&lt;/a&gt; feature. Original research.&lt;/p&gt;</description><category>dependencies</category><category>dpkg</category><category>make</category><category>makefile</category><guid>https://bgstack15.ddns.net/blog/posts/2020/03/18/makefile-trick-deplist/</guid><pubDate>Wed, 18 Mar 2020 13:12:51 GMT</pubDate></item><item><title>Depending on third-party packages or repos</title><link>https://bgstack15.ddns.net/blog/posts/2019/12/22/depending-on-third-party-packages-or-repos/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;A recent incident has caught my attention, where a Ubuntu PPA owner decided to
&lt;a href="https://old.reddit.com/r/linux/comments/eamh3n/jonathon_f_removed_his_popular_ppas_from_public/"&gt;restrict access to his
PPAs&lt;/a&gt;
after some bad feelings he got from an interaction with a stingy company. As
many in the reddit thread commented, it is unwise to pull in dependencies from
third-parties. You cannot always expect them to remain available, or always
trust them. In fact, you probably &lt;a href="https://it.slashdot.org/story/19/06/08/1940204/how-npm-stopped-a-malicious-upstream-code-update-from-stealing-cryptocurrency"&gt;shouldn't trust
them&lt;/a&gt;. Obviously, there
is a wide spectrum of opinions on the topic. This isn't a moral issue, but it
is an important possibly business-continuity one.&lt;/p&gt;
&lt;h2&gt;Disclosures for my public repositories&lt;/h2&gt;
&lt;p&gt;I package some programs myself, for
&lt;a href="https://copr.fedorainfracloud.org/coprs/bgstack15/stackrpms/"&gt;Fedora/CentOS&lt;/a&gt;
and &lt;a href="https://build.opensuse.org/project/show/home:bgstack15"&gt;Devuan ceres&lt;/a&gt;. Of
course they have dependencies, and a few even have some third-party
dependencies. For some of my projects, I have actually taken the effort to
package up their dependencies as well so my repositories are sufficient (with
main distro repos of course) for the actual package I care about. I made the
decision on CentOS 6, because I don't actually have any extant systems myself,
that I will rely on third-party repositories for some key dependencies. I am
uncertain this information is publicly viewable on the copr, and I do not wish
to hide it. The copr front page shows that the various repos are "[Modified]"
but they do not provide links to what additional repositories they depend on.
And the EPEL8 dependencies are because there were no official repos hosting
certain packages yet, but that should rectified over time.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://copr-be.cloud.fedoraproject.org/results/bgstack15/stackrpms/epel-6-i386/"&gt;copr://bgstack15/stackrpms/epel-6-i386&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://copr-be.cloud.fedoraproject.org/results/ewdurbin/pythons-el6/epel-6-%24basearch/"&gt;copr://ewdurbin/pythons-el6 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://copr-be.cloud.fedoraproject.org/results/mlampe/devtoolset-7/epel-6-%24basearch/"&gt;copr://mlampe/devtoolset-7 &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://copr-be.cloud.fedoraproject.org/results/bgstack15/stackrpms/epel-8-x86_64/"&gt;copr://bgstack15/stackrpms/epel-8-x86_64&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;https://download.fedoraproject.org/pub/epel/playground/$releasever/Everything/$basearch/os&lt;/li&gt;
&lt;li&gt;My own repo for a few things that couldn't be built on copr because of weird dependency issues at the time: http://example.no-ip.biz/repo/rpm/ (redacted). Of course I trust this one, but should you?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://copr.fedorainfracloud.org/coprs/nikitines/XFCE/"&gt;copr://nikitines/XFCE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Holiday greetings&lt;/h2&gt;
&lt;p&gt;Also, happy holidays or Merry Christmas or whatever holiday greetings you
want. This post was originally published on December 22, 2019 so it's the last
one before Christmas.&lt;/p&gt;</description><category>dependencies</category><category>news</category><category>rant</category><category>repo</category><category>trust</category><guid>https://bgstack15.ddns.net/blog/posts/2019/12/22/depending-on-third-party-packages-or-repos/</guid><pubDate>Sun, 22 Dec 2019 14:12:56 GMT</pubDate></item><item><title>Fedora and scanners</title><link>https://bgstack15.ddns.net/blog/posts/2019/01/13/fedora-and-scanners/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;If you are running Fedora and you want to use a scanner, you probably already
have sane (backends at least) and simple-scan installed. What is incredibly
frustrating is when &lt;strong&gt;scanimage -L&lt;/strong&gt; shows you the scanner, but simple-scan
does not list it. What you are missing is&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo dnf install libnsl
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This package is different from libnsl2, which is probably already installed.
But some applications must depend on libnsl, including simple-scan. Thanks to
&lt;a href="https://ask.fedoraproject.org/en/users/24686/suspiciousmilk/"&gt;suspiciousmilk&lt;/a&gt;
of Ask Fedora.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;h3&gt;Weblinks&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://ask.fedoraproject.org/en/question/92021/brother-scanner-driver-dont-work/?answer=123174#post-id-123174"&gt; Brother scanner driver don't work&lt;/a&gt; [ask.fedoraproject.org]&lt;/li&gt;
&lt;/ol&gt;</description><category>dependencies</category><category>fedora</category><category>linux</category><category>oneliner</category><category>scanner</category><guid>https://bgstack15.ddns.net/blog/posts/2019/01/13/fedora-and-scanners/</guid><pubDate>Sun, 13 Jan 2019 14:12:04 GMT</pubDate></item><item><title>dnf install build deps</title><link>https://bgstack15.ddns.net/blog/posts/2018/11/29/dnf-install-build-deps/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;If you want to build a package, but need all of its buildrequires packages,
use this command:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo dnf builddep wxGTK3
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I leave my source repositories off, so be sure to do any
&lt;strong&gt;--enablerepo=fedora-source,updates-source&lt;/strong&gt; as necessary.&lt;/p&gt;
&lt;h2&gt;For debian family&lt;/h2&gt;
&lt;p&gt;Try a cool tool named "mk-build-deps" as documented over at
&lt;a href="https://www.guyrutenberg.com/2017/09/23/use-mk-build-deps-instead-of-apt-get-%0Abuild-dep/"&gt;https://www.guyrutenberg.com/2017/09/23/use-mk-build-deps-instead-of-apt-get-
build-dep/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;h3&gt;Weblinks&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/13227162/automatically-install-build-dependencies-prior-to-building-an-rpm-package/13228992#13228992"&gt;Automatically install build dependencies prior to building an RPM
package&lt;/a&gt;
[stackoverflow.com]&lt;/p&gt;</description><category>build</category><category>compile</category><category>dependencies</category><category>dnf</category><category>repo</category><guid>https://bgstack15.ddns.net/blog/posts/2018/11/29/dnf-install-build-deps/</guid><pubDate>Thu, 29 Nov 2018 13:42:53 GMT</pubDate></item><item><title>Dnf ignore weak dependencies</title><link>https://bgstack15.ddns.net/blog/posts/2017/05/13/dnf-ignore-weak-dependencies/</link><dc:creator>bgstack15</dc:creator><description>&lt;h2&gt;tl;dr&lt;/h2&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;dnf --setopt=install_weak_deps=False --best install newpackage
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;dnf do not install weak dependencies&lt;/h2&gt;
&lt;p&gt;In the new paradigm for rpm package management (rpmpm?), we use dnf. I am fine
with using the latest and greatest, but sometimes yum looks nicer in hindsight
than dnf. One of the more recent features added to rpms is &lt;a href="https://fedoraproject.org/wiki/PackagingDrafts/WeakDependencies"&gt;weak
dependencies&lt;/a&gt;.
Debian has had weak dependencies for a longer time, so it's nice to see rpm
adding such a feature. I recently went through a spell where I wanted to
install my own package but exclude the recommended options. After a lot of
research and man dnf dnf.conf, I derived the command I needed.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;dnf --setopt=install_weak_deps=False --best install newpackage
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;History&lt;/h2&gt;
&lt;p&gt;I tried an ugly hack, which technically worked.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;dnf --disablerepo=* install ./bgscripts*
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But all it does is disable all repos. I was using a local file, so it could
get to the rpm I required, but any hard dependencies would be not found. I
then tried another option, which technically worked.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;dnf install ./bgscripts* -x freerdp
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But I had to run a dnf command to see what packages would be installed, and
then manually named the packages in the exclude list.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;h3&gt;Weblinks&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://fedoraproject.org/wiki/PackagingDrafts/WeakDependencies"&gt;https://fedoraproject.org/wiki/PackagingDrafts/WeakDependencies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.debian.org/doc/debian-policy/ch-relationships.html"&gt;https://www.debian.org/doc/debian-policy/ch-relationships.html&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Man pages&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://dnf.readthedocs.io/en/latest/command_ref.html"&gt;dnf&lt;/a&gt;
&lt;a href="https://www.mankier.com/5/dnf.conf"&gt;dnf.conf&lt;/a&gt;&lt;/p&gt;</description><category>dependencies</category><category>dnf</category><category>packages</category><category>rpm</category><guid>https://bgstack15.ddns.net/blog/posts/2017/05/13/dnf-ignore-weak-dependencies/</guid><pubDate>Sat, 13 May 2017 12:57:23 GMT</pubDate></item></channel></rss>