<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Pkg on inetshell</title><link>https://inet.sh/es/tags/pkg/</link><description>Recent content in Pkg on inetshell</description><generator>Hugo</generator><language>es</language><lastBuildDate>Fri, 25 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://inet.sh/es/tags/pkg/index.xml" rel="self" type="application/rss+xml"/><item><title>pfSense: ld-elf.so.1: Shared object "libssl.so.30" not found, required by "pkg"</title><link>https://inet.sh/es/posts/pfsense/libssl-so-30-not-found-pkg/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/es/posts/pfsense/libssl-so-30-not-found-pkg/</guid><description>pkg update y el Package Manager de pfSense mueren con &amp;#39;Shared object libssl.so.30 not found, required by pkg&amp;#39;: el binario pkg quedó enlazado contra un OpenSSL que el sistema base todavía no tiene. Recuperación con pkg-static (certctl rehash, reinstalar pkg, pfSense-repo y pfSense-upgrade) y cómo terminar la actualización bien.</description><content:encoded><![CDATA[<h2 id="en-corto">En corto</h2>
<p>Desde la consola (opción 8) o <strong>Diagnostics → Command Prompt</strong>:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">certctl rehash
</span></span><span class="line"><span class="cl">pkg-static clean -ay
</span></span><span class="line"><span class="cl">pkg-static install -fy pkg
</span></span><span class="line"><span class="cl">pkg-static install -xfy pfSense-repo pfSense-upgrade
</span></span><span class="line"><span class="cl">pkg-static update -f
</span></span><span class="line"><span class="cl">pfSense-upgrade -d -c        <span class="c1"># muestra qué versión ofrece la rama configurada</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Con <code>pkg</code> vivo otra vez, termina la actualización pendiente por <strong>System → Update</strong> (o <code>pfSense-upgrade -d</code>), no con <code>pkg upgrade</code>.</p>
<h2 id="el-error">El error</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">ld-elf.so.1: Shared object &#34;libssl.so.30&#34; not found, required by &#34;pkg&#34;
</span></span></code></pre></td></tr></table>
</div>
</div><p>Lo verás al hacer <code>pkg update</code>, al instalar un paquete, o de forma indirecta: <strong>System → Package Manager</strong> aparece vacío y <strong>System → Update</strong> no puede comprobar versiones. A veces el binario que se queja es <code>pfSense-repoc</code> en vez de <code>pkg</code>; es el mismo problema.</p>
<h2 id="por-qué-pasa">Por qué pasa</h2>
<p>pfSense es FreeBSD, y <code>pkg</code> es un binario enlazado dinámicamente contra la <code>libssl</code> del sistema. Cuando el repositorio configurado corresponde a una versión de pfSense construida sobre un FreeBSD más nuevo, sus paquetes vienen enlazados contra un OpenSSL más nuevo (<code>libssl.so.30</code> = OpenSSL 3). Si <code>pkg</code>, o <code>pfSense-repoc</code>, se actualiza desde ese repo <strong>antes</strong> que el sistema base, el binario nuevo pide una biblioteca que en tu instalación todavía no existe.</p>
<p>Cómo se llega ahí:</p>
<ul>
<li>Un <code>pkg upgrade</code> a mano desde la shell. En pfSense no se hace nunca.</li>
<li>Instalar o reinstalar un paquete después de cambiar la <strong>Branch</strong> en System → Update a una versión mayor, sin haber actualizado.</li>
<li>Una actualización interrumpida a medias (fue típico en el salto 2.7.0 → 2.7.1/2.7.2, cuando la base cambió a OpenSSL 3).</li>
<li>En pfSense Plus, volver a un boot environment anterior con el repo apuntando al nuevo (Redmine #15070).</li>
</ul>
<p>El nombre de la biblioteca cambiará con las versiones; la mecánica y el arreglo son los mismos.</p>
<h2 id="arreglo">Arreglo</h2>
<p><code>pkg-static</code> es la copia de <code>pkg</code> enlazada estáticamente: no necesita <code>libssl</code> y por eso funciona cuando <code>pkg</code> no.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># 1. Que pkg-static pueda hablar TLS con el repo (vale hasta el siguiente reinicio)</span>
</span></span><span class="line"><span class="cl">certctl rehash
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 2. Tirar la caché y reinstalar pkg y la configuración del repo</span>
</span></span><span class="line"><span class="cl">pkg-static clean -ay
</span></span><span class="line"><span class="cl">pkg-static install -fy pkg
</span></span><span class="line"><span class="cl">pkg-static install -xfy pfSense-repo pfSense-upgrade   <span class="c1"># -x: regex, así entra también pfSense-repoc</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 3. Refrescar metadatos y comprobar</span>
</span></span><span class="line"><span class="cl">pkg-static update -f
</span></span><span class="line"><span class="cl">pfSense-upgrade -d -c
</span></span></code></pre></td></tr></table>
</div>
</div><p>Si <code>pkg-static update</code> sigue fallando, <code>pkg-static -d update</code> da la traza completa (certificados, DNS, rama equivocada).</p>
<p>Antes del paso 3 revisa la <strong>Branch</strong> en System → Update: debe ser la versión a la que quieres ir, no una intermedia. Y termina el trabajo por la GUI o con <code>pfSense-upgrade -d</code>: un <code>pkg upgrade</code> suelto te deja a medio camino otra vez.</p>
<p>Si el sistema base está tan mezclado que ni así arranca, el último recurso documentado por Netgate es <code>pkg-static upgrade -f</code> (reinstala todo), y tras eso reiniciar.</p>
<h2 id="trampas">Trampas</h2>
<ul>
<li><strong><code>pkg upgrade</code> no existe en pfSense.</strong> El único camino soportado es System → Update / <code>pfSense-upgrade</code>. Toda esta situación nace de saltárselo.</li>
<li><strong>Respaldo antes</strong>: Diagnostics → Backup &amp; Restore. Con ZFS, además un boot environment (System → Boot Environments) te deja volver atrás en un reinicio.</li>
<li><strong>No copies <code>libssl.so.30</code> de otro FreeBSD.</strong> Circula como truco; deja el sistema con bibliotecas de dos versiones y rompe la siguiente actualización.</li>
<li><strong>Paquetes primero, no.</strong> Con una actualización pendiente, actualiza el sistema y luego instala paquetes, no al revés.</li>
<li>El repo y el upgrade usan HTTPS: si <code>certctl rehash</code> no basta, revisa hora del sistema y DNS del firewall.</li>
</ul>
<p>Referencia: <a href="https://docs.netgate.com/pfsense/en/latest/troubleshooting/upgrades.html">Upgrade Troubleshooting</a> en la documentación de Netgate.</p>
]]></content:encoded></item></channel></rss>