Tutoriales

Error del sistema de archivos de Linux: la transacción falló al usar LXD

I Soy un gran admirador de LXD, un administrador de contenedores del sistema Linux de próxima reproducción y predeterminado en Ubuntu. Me permite ejecutar aplicaciones de escritorio o aplicaciones de servidor en un entorno retirado. Ubuntu proporciona a LXD una seguridad sólida en mente. Sin requisa, esto podría dar circunstancia a género secundarios no deseados, como que los paquetes individuales en OpenSUSE o CentOS Linux no se actualicen. Uno de esos paquetes es el paquete del sistema de archivos. Veamos cómo solucionar el error: la transacción falló cuando intenta renovar el paquete del sistema de archivos en CentOS, OpenSUSE y otros contenedores de Linux que se ejecutan en LXD.

Detalles del tutorial
DificultadRealizable (rss)
Privilegios de rootNo
RequisitosLXD en Linux
Hora2m



Error del sistema de archivos de Linux: la transacción falló al usar LXD

Analicemos el error aquí. Por ejemplo, cuando uso CentOS en LXD, veo:
# dnf update
Esto es lo que vi:

Last metadata expiration check: 2:31:48 ago on Sat Mar  6 06:03:50 2021.
Dependencies resolved.
===============================================================================
 Package             Architecture    Version             Repository       Size
===============================================================================
Upgrading:
 filesystem          x86_64          3.8-3.el8           baseos          1.1 M
 
Transaction Summary
===============================================================================
Upgrade  1 Package
 
Total download size: 1.1 M
Is this ok [y/N]: y
Downloading Packages:
filesystem-3.8-3.el8.x86_64.rpm                1.8 MB/s | 1.1 MB     00:00    
-------------------------------------------------------------------------------
Total                                          932 kB/s | 1.1 MB     00:01     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: filesystem-3.8-3.el8.x86_64                           1/1 
  Preparing        :                                                       1/1 
  Upgrading        : filesystem-3.8-3.el8.x86_64                           1/2 
Error unpacking rpm package filesystem-3.8-3.el8.x86_64
  Verifying        : filesystem-3.8-3.el8.x86_64                           1/2 
  Verifying        : filesystem-3.8-2.el8.x86_64                           2/2 
 
Failed:
  filesystem-3.8-2.el8.x86_64            filesystem-3.8-3.el8.x86_64           
 
Error: Transaction failed

Dos tipos de contenedores LXD

LXD nos permite configurar dos tipos diferentes de contenedores Linux:

  1. Contenedores privilegiados – Los contenedores inseguros y un heredero con root en dicho contenedor podrán DoS al host y encontrar formas de escapar del confinamiento. Ayudaría si los evitara a toda costa.
  2. Contenedores sin privilegios (predeterminado): contenedores seguros. Significa que operan internamente de un espacio de nombres de heredero, restringiendo las capacidades de los usuarios en el contenedor de Linux a las de los usuarios normales en el host con privilegios limitados en los dispositivos que posee el contenedor. La protección del host y la prevención de fugas se realiza en su totalidad a través del control de golpe obligatorio, como AppArmor o SElinux. Esta protección es la que está causando el error. Por lo tanto, podemos desactivar temporalmente la protección. Aplicar actualizaciones pendientes y activar la seguridad
    proteccion.

Corregir el error LXD «Error: Transaction failed» y aplicar parches

Para enumerar todas sus instancias LXD, ejecute:
$ lxc list

+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
|       NAME       |  STATE  |         IPV4         |                     IPV6                      |   TYPE    | SNAPSHOTS |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| archbox          | RUNNING | 10.83.200.161 (eth0) | fd42:87d0:ec52:7d50:216:3eff:fe9d:f205 (eth0) | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| centos-6         | STOPPED |                      |                                               | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| centos-7         | STOPPED |                      |                                               | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| centos-8         | RUNNING | 10.83.200.129 (eth0) | fd42:87d0:ec52:7d50:216:3eff:fe6c:f3ed (eth0) | CONTAINER | 1         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| debian-8-jessie  | STOPPED |                      |                                               | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| debian-9-stretch | STOPPED |                      |                                               | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| debian-test      | STOPPED |                      |                                               | CONTAINER | 3         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| fedora-33        | RUNNING | 10.83.200.41 (eth0)  | fd42:87d0:ec52:7d50:216:3eff:fe8c:5088 (eth0) | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| gentoo           | STOPPED |                      |                                               | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| gui1604          | STOPPED |                      |                                               | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| gui-1804-gimp    | RUNNING | 10.83.200.28 (eth0)  | fd42:87d0:ec52:7d50:216:3eff:fea3:9da8 (eth0) | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| opensuse-15-1    | STOPPED |                      |                                               | CONTAINER | 1         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| oracle-7         | STOPPED |                      |                                               | CONTAINER | 0         |
+------------------+---------+----------------------+-----------------------------------------------+-----------+-----------+

Para ver la ejecución del modo coetáneo:
$ lxc config get centos-8 security.privileged
$ lxc config get opensuse-leap security.privileged

A continuación, establezca seguridad privilegiada a cierto por instancias:
$ lxc config set centos-8 security.privileged true
$ lxc config set opensuse-leap security.privileged true

Reinicie las instancias para activar la política de seguridad:
$ lxc restart centos-8
$ lxc restart opensuse-leap

Consigamos un shell raíz para nuestro contenedor CentOS 8:
$ lxc exec centos-8 bash
Ejecute la aggiornamento con el comando dnf:
# dnf update
# exit

Para la instancia de OpenSUSE, use el comando zypper:
$ lxc exec opensuse-leap bash
# zypper up
# exit

Apágalo:
$ lxc config set centos-8 security.privileged false
$ lxc config set opensuse-leap security.privileged false

Finalmente, reinicie nuevamente sus instancias para comprobar de que aparezcan posteriormente del reinicio y de que la política de seguridad vuelva a un modo sin privilegios:
$ lxc restart centos-8
$ lxc restart opensuse-leap
$ lxc exec centos-8 bash
$ lxc config get centos-8 security.privileged

Resumiendo

Este problema específico no está muy acertadamente documentado. Por lo tanto, escribí esta publicación rápida para ayudar a otros. Consulte la documentación de LXD para obtener más información.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba