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
Dificultad Realizable (rss)
Privilegios de root No
Requisitos LXD en Linux
Hora 2m



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