<?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>Debian on inetshell</title><link>https://inet.sh/es/tags/debian/</link><description>Recent content in Debian 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/debian/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><item><title>Instalar ssacli en Proxmox (HPE Smart Storage) cuando la guía falla</title><link>https://inet.sh/es/posts/proxmox/ssacli-proxmox/</link><pubDate>Thu, 24 Sep 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/es/posts/proxmox/ssacli-proxmox/</guid><description>Instalar ssacli en Proxmox / Debian bookworm para administrar controladoras HPE Smart Array. La guía típica falla en 3 puntos: HTTP muerto, clave GPG vieja y un aviso de deprecación falso. Procedimiento corregido copy/paste.</description><content:encoded><![CDATA[<h2 id="en-corto">En corto</h2>
<p>Para administrar una controladora <strong>HPE Smart Array</strong> desde Proxmox necesitas <code>ssacli</code>. La guía que sale primero en Google (<a href="https://aljax.us/install-ssacli-on-pve/">aljax.us</a>) está desactualizada y, tal cual, <strong>falla</strong>. Tres cosas cambiaron:</p>
<ol>
<li>El repo HPE <strong>ya no responde por HTTP</strong> (puerto 80) → usa <code>https://</code>.</li>
<li>La <strong>clave GPG de la guía es la vieja</strong> → hoy firma con <code>GPG-KEY2-mcp</code>.</li>
<li>La guía avisa que &ldquo;HPE eliminó el repo en feb-2026&rdquo; → <strong>falso</strong>, sigue vivo.</li>
</ol>
<p>Salta directo al <a href="/es/posts/proxmox/ssacli-proxmox/#procedimiento-corregido-copypaste">procedimiento corregido</a> si solo quieres el copy/paste.</p>
<p>Probado en <strong>Proxmox VE 8 (Debian bookworm)</strong> sobre un host con controladora <strong>HPE Smart Array P840ar</strong>, el 2026-09-23.</p>
<h2 id="el-problema">El problema</h2>
<p><code>ssacli</code> (antes <code>hpssacli</code>) es la CLI de HPE para las Smart Array: te deja ver controladoras, discos físicos, arrays lógicos y su salud sin entrar a iLO ni reiniciar a la ROM. En un nodo Proxmox es la forma práctica de identificar bahías y revisar discos en caliente.</p>
<p>El camino &ldquo;oficial&rdquo; de la comunidad es agregar el repo MCP de HPE a <code>apt</code>. Pero si copias los pasos de las guías viejas te topas con dos errores, uno tras otro:</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-text" data-lang="text"><span class="line"><span class="cl">Connection failed [IP: ... 80]
</span></span></code></pre></td></tr></table>
</div>
</div><p>y, si arreglas el primero pero no el segundo:</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">W: GPG error: https://downloads.linux.hpe.com/SDR/repo/mcp bookworm/current Release:
</span></span><span class="line"><span class="cl">   The following signatures couldn&#39;t be verified because the public key is not available:
</span></span><span class="line"><span class="cl">   NO_PUBKEY E3FE26E774C3A4A2
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="1-el-endpoint-http-está-muerto">1. El endpoint HTTP está muerto</h3>
<p>El repo MCP dejó de servir por HTTP en texto claro. Las guías registran <code>deb http://downloads.linux.hpe.com/...</code> y <code>apt update</code> se cuelga con <em>Connection failed</em> en el puerto 80. La solución es simplemente usar <strong>HTTPS</strong> en el <code>sources.list</code> (<code>apt-transport-https</code> ya viene en bookworm).</p>
<h3 id="2-la-clave-gpg-de-la-guía-es-la-incorrecta">2. La clave GPG de la guía es la incorrecta</h3>
<p>Las guías apuntan a <code>hpePublicKey2048_key1.pub</code>. El repo <strong>ya no firma con esa llave</strong>: hoy usa <code>GPG-KEY2-mcp</code>.</p>
<ul>
<li><strong>Archivo:</strong> <code>GPG-KEY2-mcp</code></li>
<li><strong>Tipo:</strong> RSA-4096</li>
<li><strong>Fingerprint:</strong> <code>9E8C 4A25 C494 08EF A8D0 9D96 E3FE 26E7 74C3 A4A2</code></li>
<li><strong>Vigencia:</strong> 2024-09-05 → 2034-09-05</li>
</ul>
<p>Sin ella, <code>apt update</code> falla con <code>NO_PUBKEY E3FE26E774C3A4A2</code> (los últimos 16 hex del fingerprint).</p>
<h3 id="3-el-aviso-de-repo-eliminado-es-falso-por-ahora">3. El aviso de &ldquo;repo eliminado&rdquo; es falso (por ahora)</h3>
<p>Varias guías advierten que HPE tumbó su repositorio público en febrero de 2026. Al día de hoy (2026-09-23) el repo <strong>MCP para bookworm sigue activo</strong> y sirve <code>ssacli 6.15-11.0</code> sin problema. Aun así, más abajo dejo un <a href="/es/posts/proxmox/ssacli-proxmox/#fallback-si-el-repo-desaparece">fallback con el RPM</a> por si algún día se cumple la profecía.</p>
<h2 id="procedimiento-corregido-copypaste">Procedimiento corregido (copy/paste)</h2>
<p>Como <code>root</code> en el host Proxmox:</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><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</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. Instalar la clave GPG correcta (GPG-KEY2-mcp)</span>
</span></span><span class="line"><span class="cl">mkdir -p /etc/apt/keyrings
</span></span><span class="line"><span class="cl">curl -fsSL https://downloads.linux.hpe.com/SDR/repo/mcp/GPG-KEY2-mcp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  <span class="p">|</span> gpg --dearmor &gt; /etc/apt/keyrings/hpePublicKey2-mcp.gpg
</span></span><span class="line"><span class="cl">chmod <span class="m">0644</span> /etc/apt/keyrings/hpePublicKey2-mcp.gpg
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 2. Registrar el repo (HTTPS, no HTTP; ajusta el codename si no es bookworm)</span>
</span></span><span class="line"><span class="cl">cat &gt; /etc/apt/sources.list.d/hp-mcp.list <span class="s">&lt;&lt;&#39;EOT&#39;
</span></span></span><span class="line"><span class="cl"><span class="s">deb [signed-by=/etc/apt/keyrings/hpePublicKey2-mcp.gpg] https://downloads.linux.hpe.com/SDR/repo/mcp bookworm/current non-free
</span></span></span><span class="line"><span class="cl"><span class="s">EOT</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 3. Actualizar índices e instalar</span>
</span></span><span class="line"><span class="cl">apt-get update
</span></span><span class="line"><span class="cl">apt-get install -y ssacli
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 4. Verificar</span>
</span></span><span class="line"><span class="cl">ssacli version
</span></span><span class="line"><span class="cl">ssacli ctrl all show
</span></span></code></pre></td></tr></table>
</div>
</div><p>En un nodo del lab la verificación se vio así:</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">root@pve-node1:~# ssacli version
</span></span><span class="line"><span class="cl">   SSACLI Version:  6.15.11.0  2022-11-01
</span></span><span class="line"><span class="cl">   SOULAPI Version: 6.15.11.0  2022-11-01
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">root@pve-node1:~# ssacli ctrl all show
</span></span><span class="line"><span class="cl">Smart Array P840ar in Slot 0 (Embedded)   (sn: &lt;serial&gt;)
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="comandos-útiles-de-ssacli">Comandos útiles de ssacli</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><span class="lnt">6
</span><span class="lnt">7
</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">ssacli ctrl all show                     <span class="c1"># lista controladoras</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> show detail           <span class="c1"># detalle de la controladora en slot 0</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> pd all show status    <span class="c1"># estado de discos físicos</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> ld all show status    <span class="c1"># estado de arrays lógicos</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> show config           <span class="c1"># topología completa (arrays, LDs, PDs)</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> modify <span class="nv">drivewritecache</span><span class="o">=</span><span class="nb">enable</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> ld <span class="m">1</span> modify <span class="nv">caching</span><span class="o">=</span><span class="nb">enable</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Para identificar una bahía física por número de serie (útil cuando alguien está frente al rack cambiando un disco), <code>ssacli ctrl slot=0 pd all show detail</code> te da serie, bahía y estado de cada disco. En HBA mode, insertar un disco puede marcar transitoriamente <em>&ldquo;Degraded (Not authenticated)&rdquo;</em> y luego aclarar a OK; no cambia nada funcional.</p>
<h2 id="fallback-si-el-repo-desaparece">Fallback si el repo desaparece</h2>
<p>Si en el futuro <code>downloads.linux.hpe.com/SDR/repo/mcp</code> deja de responder, descarga el <code>.rpm</code> desde el portal de soporte HPE y extráelo a mano (Debian no usa RPM, así que solo lo desempaquetamos):</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">rpm2cpio ssacli-*.rpm <span class="p">|</span> cpio -idmv
</span></span><span class="line"><span class="cl">cp -rv ./opt/* /opt
</span></span><span class="line"><span class="cl">cp -rv ./usr/* /usr
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="aplica-a">Aplica a</h2>
<p>El mismo procedimiento sirve para cualquier nodo <strong>Proxmox / Debian bookworm</strong> con controladora HPE Smart Array (Gen8 / Gen9 / Gen10). Para <strong>bullseye</strong> o <strong>trixie</strong>, cambia el codename en el <code>sources.list</code>.</p>
]]></content:encoded></item></channel></rss>