[Arch] Comandos prohibidos

Arch Linux es una distribución rolling release. Eso quiere decir que cuando una nueva librería se actualiza, los desarrolladores reconstruyen todos los paquetes de los repositorios oficiales a los que afecta dicha librería. De esta manera, el contenido de los repositorios está siempre actualizado. Lo contrario al rolling release es el point release, modelo en el que el conjunto del software se va lanzando en versiones que se sustituyen unas a otras. La mayoría de distribuciones (por ejemplo, Ubuntu) son point release.

El caso es que, cuando tienes un sistema rolling release tipo Arch, no puedes hacer actualizaciones parciales. Es decir, no puedes actualizar un paquete sin actualizar todo el sistema. Porque si dos paquetes dependen de la misma librería, actualizar solo un paquete puede actualizar la librería, haciendo que el segundo paquete deje de funcionar, por depender de una versión antigua de la librería.

:computer: ¿Qué supone esto a efectos prácticos? Pues que los comandos que actualizan solo algunos paquetes están terminantemente prohibidos. Por ejemplo:

pacman -Sy
pacman -Syuw

En su lugar, debemos hacer una actualización completa de las bases de datos y del sistema, empleando:

pacman -Syu

:bangbang: IMPORTANTE: Si la actualización no se completa debido a un error, el efecto de este último comando es el mismo que el de pacman -Sy y, por tanto, estamos obligados a resolver el error y completar la actualización, so pena de romper nuestro sistema.

:link: Podéis, y debéis, aprender más sobre este tema en la Arch Wiki.

1 me gusta

Observo algunos errores.
El primero es que pacman -Sy no actualiza ningún paquete, solo sincroniza los repositorios. Y si fuese algo peligroso la Wiki de Arch lo indicaría y no lo hace.
Por otro lado desconozco el comando pacman -Syuw, me parece que no existe. De existir, me gustaría el enlace a la fuente.
Saludos.

2 Me gusta

La fuente está al final del post: es la Arch Wiki. Efectivamente, pacman -Sy no actualiza nada, solo actualiza la lista de paquetes. Pero está desaconsejado hacerlo si no se efectúa una actualización completa del sistema… De nuevo, la fuente es la Arch Wiki, cito del artículo sobre pacman:

Warning: When installing packages in Arch, avoid refreshing the package list without upgrading the system (for example, when a package is no longer found in the official repositories). In practice, do not run pacman -Sy package_name instead of pacman -Syu package_name , as this could lead to dependency issues. See System maintenance#Partial upgrades are unsupported and BBS#89328.

Por cierto, esta es tu primera publicación. Bienvenido al foro :partying_face: y gracias por contribuir!

2 Me gusta

Que no falte el clasico:

sudo rm -rf /
3 Me gusta

Ahora tiene una medida de seguridad extra. El comando completo sería:

sudo rm -rf / –no-preserve-root

(En Debian me tocó hacerlo ayer, desconozco si es igual en Arch)

1 me gusta

Que estupidez, le quitan lo divertido y practico a la vida.

1 me gusta

Envío captura de mi intento en este momento sólo para mostrarles a todos que pasa si deseas utilizar el comando original.

screenshot-22

El intento fue en el terminal desde donde estoy escribiendo ahora mismo, para que se note la seguridad en mis acciones jajajaja :joy:

  • EDIT: Me acabo de dar cuenta de que me olvidé de la flag -f, pero voy a dejar de tentar al destino.
2 Me gusta

Los huevos que te cargas no son pocos. :rofl: :rofl:

1 me gusta

Hace dos semanas me hice un script de bash que:

  • Me instala y configura todos los programas.
  • Copia el backup actualizado.
  • Cambia al usuario propietario y permisos de todos los archivos del backup (con algunos casos puntuales especificados).
  • Me configura el DE.
  • Cambia la shell por defecto a ZSH y copia los archivos de configuración correspondientes.
  • Por último, me deshabilita los servicios innecesarios.

Básicamente, sólo tengo que dejarlo ahí y en menos de una hora tengo el sistema arriba de nuevo. Es como un archinstall pero para Debian y totalmente personalizado a mi situación en particular.

3 Me gusta

Este tío los tiene cuadrados.

1 me gusta

Todo sea por encontrar la verdad. /s

“Debemos saber, ¡Sabremos!”.
David Hilbert

Aplicar esa medida de seguridad tiene sentido para evitar que alguien borre su sistema por error si es principiante y le dijeron eso como una broma por ejemplo

1 me gusta

Bueno. se me ocurrió hacer una pequeña investigación de que pasa cuando se escribe sudo rm -rf / --no-preserve-root inspirado por el proceso que hizo @5ombr4, simplemente porque tengo tiempo y espacio en disco… xD

Hardware que voy a utilizar
  • Sistema operativo: Adélie Linux
  • Hardware: Lenovo ideapad 330-14IGM
  • RAM: 4GB
  • Tamaño de partición: 8GB

procedimentación.

se booteará el LiveUSB Adélie para su posterior instalación en una partición aparte.

copiaré la partición entera en otra del mismo tamaño por medio de DD

posteriormente (con el sistema arrancando la partición original instalada) se ejecuta rm -rf / --no-preserve root

una vez que el sistema falle, se reinicia y se bootea el sistema principal, después de ello, se tiene que ejecutar un script para tener una idea de que archivos fueron afectados.

Script de ejemplo

este es un script de ejemplo a lo que pienso que debería ser, pero no funciona bién, intentaría mejorarlo pero simplemente lo dejo así porque no soy experto en programación. :c

# sintaxis: {archivo.sh} {directorio backup} {directorio del sistema afectado}

# lo hice en ASH, no sé si funcionará en BASH

# comprobación inicial
[ ! -d $1 ] || [ ! -d $2 ] && echo "alguno de los primeros directorios no exísten" && exit
[ $(id -u) != 0 ] && echo "necesitas ser superusuario" && exit

# variables
count=1 # un simple contador
bad_dir=$( find -maxdepth 2 -type d $2 )
back_dir=$(find -maxdepth 2 -type d $1)

# lógica principal
while (( count < $(echo "$back_dir" | wc -l) )); do
	line=$(echo "bad_dir" sed -n "${count}p")
	[ echo $back_dir | grep -q $(basename $line) ] && echo $line
	((count++))
done

Hipotesis

probablemente el sistema cuando se ejecute en el disco, seguirá funcionando mientras corre rm -rf / --no-preserve mientras los directorios /bin, /dev y otros no se borren, si se llegan a borrar probablemente ocurra un kernel panic, los archivos quedarán corruptos y será dificil rehacer la partición sin usar fsck al principio, supongo yo.

lo dejo así porque me cansó un poco escribirlo, pero prometo que agregaré el resultado de mi experimento en cuanto pueda arreglar el tema del script… :confused:

1 me gusta

En efecto, como es el sistema el que ejecuta el comand, va a borrar hasta donde pueda, lo cual alcanza para quedar inservible en la mayoría de casos.

Me encantan estas cosas.

En sí el pacman -Sy no es malo, solo actualiza la lista de paquetes, lo que no se debe de hacer es pacman -Sy mariadb por poner un ejemplo, ya que puede romper el sistema de dependencias.

Claro que si haces pacman -Sy no debes instalar ningun paquete antes de actualizar el sistema la proxima vez con pacman -Syu(todo esto lo aprendí por las malas).

Pues no se mucho del mundo Arch, pero me puedo imaginar a los mantenedores de Arch cada vez que se actualiza una aplicación, como ardillas con cafeína, corriendo a empaquetar cada dependencia.

Solo estoy especulando supongo que debe ser un proceso bien automatizado.

Lo que me causa curiosidad es como controlan el tema de la estabilidad del sistema siempre teniendo la última versión de todo.