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.
¿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
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.
Podéis, y debéis, aprender más sobre este tema en la Arch Wiki.
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.
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:
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.
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
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…
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.