<?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>Apt on inetshell</title><link>https://inet.sh/es/tags/apt/</link><description>Recent content in Apt 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/apt/index.xml" rel="self" type="application/rss+xml"/><item><title>Proxmox VE sin suscripción: repositorios no-subscription en PVE 9 (deb822) y PVE 8</title><link>https://inet.sh/es/posts/proxmox/repositorios-sin-suscripcion/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/es/posts/proxmox/repositorios-sin-suscripcion/</guid><description>Cómo dejar un Proxmox VE sin suscripción actualizando sin errores 401: apagar pve-enterprise y activar pve-no-subscription (y el de Ceph) en PVE 9 con archivos .sources deb822 y en PVE 8 con .list. Incluye apt modernize-sources y el equivalente para Proxmox Backup Server.</description><content:encoded><![CDATA[<h2 id="en-corto">En corto</h2>
<p><strong>PVE 9</strong> (Debian 13 <em>trixie</em>, formato deb822):</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><span class="lnt">12
</span><span class="lnt">13
</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">cat &gt; /etc/apt/sources.list.d/proxmox.sources <span class="s">&lt;&lt;&#39;EOF&#39;
</span></span></span><span class="line"><span class="cl"><span class="s">Types: deb
</span></span></span><span class="line"><span class="cl"><span class="s">URIs: http://download.proxmox.com/debian/pve
</span></span></span><span class="line"><span class="cl"><span class="s">Suites: trixie
</span></span></span><span class="line"><span class="cl"><span class="s">Components: pve-no-subscription
</span></span></span><span class="line"><span class="cl"><span class="s">Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
</span></span></span><span class="line"><span class="cl"><span class="s">EOF</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Apagar enterprise (sin suscripción devuelve 401 en cada apt update)</span>
</span></span><span class="line"><span class="cl">grep -q <span class="s1">&#39;^Enabled:&#39;</span> /etc/apt/sources.list.d/pve-enterprise.sources <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  <span class="o">||</span> <span class="nb">echo</span> <span class="s1">&#39;Enabled: false&#39;</span> &gt;&gt; /etc/apt/sources.list.d/pve-enterprise.sources
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">apt update <span class="o">&amp;&amp;</span> apt full-upgrade
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>PVE 8</strong> (Debian 12 <em>bookworm</em>, formato de una línea):</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></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="nb">echo</span> <span class="s1">&#39;deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&#39;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  &gt; /etc/apt/sources.list.d/pve-no-subscription.list
</span></span><span class="line"><span class="cl">sed -i <span class="s1">&#39;s/^deb /# deb /&#39;</span> /etc/apt/sources.list.d/pve-enterprise.list
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">apt update <span class="o">&amp;&amp;</span> apt full-upgrade
</span></span></code></pre></td></tr></table>
</div>
</div><p>Si el host tiene Ceph, el repo enterprise de Ceph también hay que apagarlo y cambiarlo por su <code>no-subscription</code> (<a href="/es/posts/proxmox/repositorios-sin-suscripcion/#ceph">abajo</a>).</p>
<h2 id="qué-hace-cada-repositorio">Qué hace cada repositorio</h2>
<table>
  <thead>
      <tr>
          <th>Repo</th>
          <th>Para qué</th>
          <th>Sin suscripción</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>pve-enterprise</code></td>
          <td>Paquetes estables, los más probados. Requiere clave de suscripción</td>
          <td><code>apt update</code> da <strong>401 Unauthorized</strong></td>
      </tr>
      <tr>
          <td><code>pve-no-subscription</code></td>
          <td>Público. Mismos paquetes, un poco antes y con menos pruebas</td>
          <td>Funciona</td>
      </tr>
      <tr>
          <td><code>pve-test</code></td>
          <td>Lo más nuevo, para probar</td>
          <td>Funciona</td>
      </tr>
  </tbody>
</table>
<p>Proxmox lo dice claro: <code>pve-no-subscription</code> es para <strong>pruebas y uso no productivo</strong>; en producción quieren que pagues la suscripción y uses enterprise. Para un lab o un homelab es el repo normal.</p>
<p>El 401 de enterprise no rompe nada por sí mismo, pero cada <code>apt update</code> termina con error y el resto de repos queda a medio refrescar. Apagarlo es el arreglo; no hace falta borrarlo.</p>
<h2 id="pve-9-archivos-sources-deb822">PVE 9: archivos .sources (deb822)</h2>
<p>Desde PVE 9 el instalador ya escribe <code>/etc/apt/sources.list.d/pve-enterprise.sources</code> en formato deb822. Un <code>.sources</code> es un bloque de claves:</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl"># /etc/apt/sources.list.d/pve-enterprise.sources
</span></span><span class="line"><span class="cl">Types: deb
</span></span><span class="line"><span class="cl">URIs: https://enterprise.proxmox.com/debian/pve
</span></span><span class="line"><span class="cl">Suites: trixie
</span></span><span class="line"><span class="cl">Components: pve-enterprise
</span></span><span class="line"><span class="cl">Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
</span></span><span class="line"><span class="cl">Enabled: false
</span></span></code></pre></td></tr></table>
</div>
</div><p><code>Enabled: false</code> lo deja escrito pero inactivo. El de no-subscription es el bloque del <a href="/es/posts/proxmox/repositorios-sin-suscripcion/#en-corto">En corto</a>; el de test es igual con <code>Components: pve-test</code>.</p>
<p>Si arrastras archivos <code>.list</code> de una actualización desde PVE 8, apt 3 los convierte solo:</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">apt modernize-sources
</span></span></code></pre></td></tr></table>
</div>
</div><p>Reescribe cada <code>.list</code> como <code>.sources</code> y deja el original como <code>.list.bak</code>.</p>
<h2 id="pve-8-archivos-list">PVE 8: archivos .list</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><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</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"># /etc/apt/sources.list.d/pve-enterprise.list
</span></span><span class="line"><span class="cl"># deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># /etc/apt/sources.list.d/pve-no-subscription.list
</span></span><span class="line"><span class="cl">deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
</span></span></code></pre></td></tr></table>
</div>
</div><p>Comentar la línea enterprise con <code>#</code> equivale al <code>Enabled: false</code> de deb822.</p>
<h2 id="ceph">Ceph</h2>
<p>El instalador también deja el repo <strong>enterprise</strong> de Ceph. Mismo tratamiento; el nombre del repo lleva la versión de Ceph que corre el clúster (<code>ceph -v</code>):</p>
<p>PVE 9:</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-text" data-lang="text"><span class="line"><span class="cl"># /etc/apt/sources.list.d/ceph.sources
</span></span><span class="line"><span class="cl">Types: deb
</span></span><span class="line"><span class="cl">URIs: http://download.proxmox.com/debian/ceph-tentacle
</span></span><span class="line"><span class="cl">Suites: trixie
</span></span><span class="line"><span class="cl">Components: no-subscription
</span></span><span class="line"><span class="cl">Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
</span></span></code></pre></td></tr></table>
</div>
</div><p>Cambia <code>ceph-tentacle</code> por <code>ceph-squid</code> si sigues en Squid. Si el archivo original tenía <code>Components: enterprise</code>, reemplázalo entero por este.</p>
<p>PVE 8:</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl"># /etc/apt/sources.list.d/ceph.list
</span></span><span class="line"><span class="cl"># deb https://enterprise.proxmox.com/debian/ceph-squid bookworm enterprise
</span></span><span class="line"><span class="cl">deb http://download.proxmox.com/debian/ceph-squid bookworm no-subscription
</span></span></code></pre></td></tr></table>
</div>
</div><p>En bookworm existen <code>ceph-quincy</code>, <code>ceph-reef</code> y <code>ceph-squid</code>; usa el que corresponda a tu clúster, no el más nuevo.</p>
<h2 id="proxmox-backup-server">Proxmox Backup Server</h2>
<p>Idéntico patrón con <code>pbs</code> en la URI y <code>pbs-no-subscription</code> como componente:</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-text" data-lang="text"><span class="line"><span class="cl"># /etc/apt/sources.list.d/proxmox.sources (PBS 4, trixie)
</span></span><span class="line"><span class="cl">Types: deb
</span></span><span class="line"><span class="cl">URIs: http://download.proxmox.com/debian/pbs
</span></span><span class="line"><span class="cl">Suites: trixie
</span></span><span class="line"><span class="cl">Components: pbs-no-subscription
</span></span><span class="line"><span class="cl">Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
</span></span></code></pre></td></tr></table>
</div>
</div><p>Y <code>Enabled: false</code> en <code>pbs-enterprise.sources</code>.</p>
<h2 id="trampas">Trampas</h2>
<ul>
<li><strong>No mezcles suites.</strong> <code>bookworm</code> en PVE 8, <code>trixie</code> en PVE 9. Una línea con la suite equivocada rompe el siguiente <code>full-upgrade</code>.</li>
<li><strong>El keyring ya está.</strong> <code>/usr/share/keyrings/proxmox-archive-keyring.gpg</code> viene con cualquier instalación desde ISO. Solo hace falta descargarlo cuando instalas Proxmox encima de un Debian limpio (lo explica la guía oficial de esa vía).</li>
<li><strong><code>Signed-By</code> es obligatorio en deb822</strong>; sin esa línea apt ignora el repo con un aviso.</li>
<li><strong>Si apt falla con <code>pve-apt-hook: not found</code></strong>, no es un problema de repos: <a href="/es/posts/proxmox/pve-apt-hook-not-found/">ese es otro post</a>.</li>
<li><strong>El aviso de &ldquo;no valid subscription&rdquo; de la GUI</strong> es independiente de los repos y no se arregla aquí; una suscripción Community lo quita y de paso te da el repo enterprise.</li>
</ul>
<p>Referencia: <a href="https://pve.proxmox.com/wiki/Package_Repositories">Package Repositories</a> en la wiki de Proxmox.</p>
]]></content:encoded></item><item><title>Proxmox: /usr/share/proxmox-ve/pve-apt-hook: not found al actualizar</title><link>https://inet.sh/es/posts/proxmox/pve-apt-hook-not-found/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/es/posts/proxmox/pve-apt-hook-not-found/</guid><description>apt falla en Proxmox VE con &amp;#39;/bin/sh: 1: /usr/share/proxmox-ve/pve-apt-hook: not found&amp;#39; porque el paquete proxmox-ve desapareció pero su snippet de apt sigue ahí. Cómo destrabar apt con un hook vacío y reinstalar proxmox-ve, o quitar el snippet si de verdad quitaste Proxmox.</description><content:encoded><![CDATA[<h2 id="en-corto">En corto</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><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</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">mkdir -p /usr/share/proxmox-ve
</span></span><span class="line"><span class="cl">touch /usr/share/proxmox-ve/pve-apt-hook
</span></span><span class="line"><span class="cl">chmod +x /usr/share/proxmox-ve/pve-apt-hook
</span></span><span class="line"><span class="cl">apt install -f
</span></span><span class="line"><span class="cl">apt install proxmox-ve
</span></span></code></pre></td></tr></table>
</div>
</div><p>Con <code>proxmox-ve</code> reinstalado, el hook real reemplaza al vacío y <code>apt</code> vuelve a la normalidad.</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><span class="lnt">2
</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">/bin/sh: 1: /usr/share/proxmox-ve/pve-apt-hook: not found
</span></span><span class="line"><span class="cl">E: Failure running script /usr/share/proxmox-ve/pve-apt-hook
</span></span></code></pre></td></tr></table>
</div>
</div><p>Sale en cualquier <code>apt install</code>, <code>apt upgrade</code> o <code>apt full-upgrade</code>, y bloquea todo, incluido lo que intentas hacer para arreglarlo.</p>
<h2 id="por-qué-pasa">Por qué pasa</h2>
<p>El paquete <code>proxmox-ve</code> instala dos cosas que van juntas:</p>
<table>
  <thead>
      <tr>
          <th>Archivo</th>
          <th>Qué es</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>/etc/apt/apt.conf.d/10pveapthook</code></td>
          <td>Configura apt para ejecutar el hook antes de cada operación de dpkg</td>
      </tr>
      <tr>
          <td><code>/usr/share/proxmox-ve/pve-apt-hook</code></td>
          <td>El hook: protege <code>proxmox-ve</code> y el kernel de Proxmox de ser eliminados por error</td>
      </tr>
  </tbody>
</table>
<p>Si <code>proxmox-ve</code> se fue (un <code>apt remove</code> o <code>autoremove</code> mal calculado, un <code>dist-upgrade</code> interrumpido, un paquete a medio instalar), el script desaparece pero el archivo de <code>/etc/apt/apt.conf.d/</code> es un <em>conffile</em> y se queda. apt sigue intentando ejecutar un script que ya no existe y falla antes de tocar nada.</p>
<h2 id="arreglo-si-quieres-seguir-con-proxmox">Arreglo si quieres seguir con Proxmox</h2>
<p>El hook vacío solo sirve para que apt arranque; lo importante es reinstalar <code>proxmox-ve</code>:</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">mkdir -p /usr/share/proxmox-ve
</span></span><span class="line"><span class="cl">touch /usr/share/proxmox-ve/pve-apt-hook
</span></span><span class="line"><span class="cl">chmod +x /usr/share/proxmox-ve/pve-apt-hook
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">apt install -f            <span class="c1"># cierra dependencias rotas primero (recomendación del staff de Proxmox)</span>
</span></span><span class="line"><span class="cl">apt install proxmox-ve    <span class="c1"># trae de vuelta el hook real y lo que falte</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Comprueba que el hook ya es el de verdad y no tu archivo vacío:</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">dpkg -S /usr/share/proxmox-ve/pve-apt-hook   <span class="c1"># proxmox-ve: /usr/share/proxmox-ve/pve-apt-hook</span>
</span></span><span class="line"><span class="cl">head -1 /usr/share/proxmox-ve/pve-apt-hook   <span class="c1"># #!/usr/bin/perl</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Después de esto, <code>apt full-upgrade</code> y un reinicio para confirmar que arranca el kernel de Proxmox.</p>
<h2 id="arreglo-si-quitaste-proxmox-a-propósito">Arreglo si quitaste Proxmox a propósito</h2>
<p>Si la máquina está volviendo a ser un Debian normal, el snippet sobra:</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">rm /etc/apt/apt.conf.d/10pveapthook
</span></span><span class="line"><span class="cl"><span class="c1"># o, más limpio, purgar lo que quedó del paquete:</span>
</span></span><span class="line"><span class="cl">dpkg --purge proxmox-ve
</span></span></code></pre></td></tr></table>
</div>
</div><p><code>apt remove</code> deja los conffiles; <code>purge</code> se los lleva.</p>
<h2 id="trampas">Trampas</h2>
<ul>
<li><strong>No dejes el hook vacío.</strong> Existe para que apt no te borre <code>proxmox-ve</code> ni el kernel <code>proxmox-kernel-*</code> por accidente. Con el archivo vacío esa protección no está.</li>
<li><strong>Revisa qué se fue con <code>proxmox-ve</code>.</strong> Si apt lo quitó, probablemente también se llevó dependencias; el <code>apt install proxmox-ve</code> las regresa, pero mira la lista antes de aceptar.</li>
<li><strong>Si <code>apt install proxmox-ve</code> no encuentra el paquete</strong>, el problema está en los repos: <a href="/es/posts/proxmox/repositorios-sin-suscripcion/">repositorios sin suscripción</a>.</li>
<li>Referencia: <a href="https://forum.proxmox.com/threads/error-with-update-bin-sh-1-usr-share-proxmox-ve-pve-apt-hook-not-found.45436/">hilo del foro de Proxmox</a>.</li>
</ul>
]]></content:encoded></item></channel></rss>