Aller au contenu principal
Sujet résolu
Ce sujet a été marqué résolu et ne nécessite aucune autre attention.
Sujet: can't create transaction lock on /var/lib/rpm/.rpm.lock (Lu 9253 fois) sujet précédent - sujet suivant

can't create transaction lock on /var/lib/rpm/.rpm.lock

Bonjour à toutes et tous.

La série noire continue....

Suite à mes problèmes avec le pilote Nvidia (voir autre post), je me suis retrouvé après des tests (un peu osés ?) avec une définition d'écran impossible à changer et des pilotes Nvidia, bien qu'aucun paquet Nvidia ne soit installé.
Bref, J'ai voulu donc redémarrer avec un snapshot système plus ancien à partir de l'affichage de Grub.
Cela a bien fonctionné et j'ai retrouvé ma configuration graphique stable.

Par contre, je ne peux plus installer de paquet (zypper ou YaST).
Quelque soit le zypper in paquet , j'obtiens :
Erreur: Subprocess failed. Error: Échec RPM : error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Read-only file system)

Help!

Merci

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #1
Il se passe quoi en essayant les commandes :
sudo zypper clean && sudo zypper ref
?

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #2
Bonjour @Jomo

Voici :
sudo zypper clean && sudo zypper ref
[Tous les dépôts ont été nettoyés.
Le dépôt 'dvd' est à jour.                                                     
Le dépôt 'packman' est à jour.                                                 
Le dépôt 'Dépôt Non-OSS' est à jour.                                           
Le dépôt 'Dépôt principal' est à jour.                                         
Le dépôt 'Dépôt principal de mise à jour' est à jour.                          
Le dépôt 'Dépôt de mises à jour (Non-OSS)' est à jour.                         
Tous les dépôts ont été rafraichis.

Par contre, toujours le même message d'erreur :
sudo zypper in php7-bcmath
Chargement des données du dépôt...
Lecture des paquets installés...
Résolution des dépendances des paquets...

Le NOUVEAU paquet suivant va être installé :
  php7-bcmath

1 nouveau paquet à installer.
Taille de téléchargement totale : 49,1 KiB. Déjà en cache : 0 B. Après
l'opération, 38,6 KiB d'espace disque supplémentaire sera utilisé.
Continuer ? [o/n/v/...? affiche toutes les options] (o):
Récupération de paquet php7-bcmath-7.4.6-lp152.1.11.x86_64
                                        (1/1),  49,1 KiB ( 38,6 KiB décompressé)
Récupération : php7-bcmath-7.4.6-lp152.1.11.x86_64.rpm ...................[fait]

Recherche de conflits de fichiers : ......................................[fait]
(1/1) Installation de : php7-bcmath-7.4.6-lp152.1.11.x86_64 ............[erreur]
L'installation de php7-bcmath-7.4.6-lp152.1.11.x86_64 a échoué :
Erreur: Subprocess failed. Error: Échec RPM : error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Read-only file system)

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #3
Je ne connais pas entièrement le fonctionnement d'Open Suse, mais est-ce-que Le répétoire en question a été effacé pendant la manip ? A vérifier avec :
ls -l /var/lib/rpm

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #4
Voici

 ls -l /var/lib/rpm
lrwxrwxrwx 1 root root 26  4 juil. 12:04 /var/lib/rpm -> ../../usr/lib/sysimage/rpm

et

ls -al /usr/lib/sysimage/rpm
total 115592
drwxr-xr-x 1 root root      420  4 juil. 12:04 .
drwxr-xr-x 1 root root        6  4 juil. 12:04 ..
-rw-r--r-- 1 root root  8110080  7 juil. 18:30 Basenames
-rw-r--r-- 1 root root    20480  6 juil. 18:34 Conflictname
-rw-r--r-- 1 root root  2879488  7 juil. 18:30 Dirnames
-rw-r--r-- 1 root root     8192  6 juil. 18:34 Enhancename
-rw-r--r-- 1 root root     8192  4 juil. 12:01 Filetriggername
-rw-r--r-- 1 root root    49152  7 juil. 18:30 Group
-rw-r--r-- 1 root root    49152  7 juil. 18:30 Installtid
-rw-r--r-- 1 root root   131072  7 juil. 18:30 Name
-rw-r--r-- 1 root root    69632  7 juil. 18:30 Obsoletename
-rw-r--r-- 1 root root 99905536  7 juil. 18:30 Packages
-rw-r--r-- 1 root root  5951488  7 juil. 18:30 Providename
-rw-r--r-- 1 root root    57344  7 juil. 18:30 Recommendname
-rw-r--r-- 1 root root   692224  7 juil. 18:30 Requirename
-rw-r--r-- 1 root root        0  4 juil. 11:57 .rpm.lock
-rw-r--r-- 1 root root   241664  7 juil. 18:30 Sha1header
-rw-r--r-- 1 root root   139264  7 juil. 18:30 Sigmd5
-rw-r--r-- 1 root root    16384  4 juil. 16:52 Suggestname
-rw-r--r-- 1 root root    32768  6 juil. 18:34 Supplementname
-rw-r--r-- 1 root root     8192  4 juil. 11:57 Transfiletriggername
-rw-r--r-- 1 root root     8192  4 juil. 11:59 Triggername

Du coup, j'ai essayé d'effacer le fichier .rpm.lock et j'ai le même message d'erreur ! Pourtant, le fichier n'est pas en read only.
J'ai l'impression qu'il y a un problème sur le montage du répertoire mais je n'arrive pas à déterminer quoi...

sudo rm .rpm.lock
[sudo] Mot de passe de root :
rm: impossible de supprimer '.rpm.lock': Système de fichiers accessible en lecture seulement

A+

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #5
En fait, j'ai maintenant tout mon répertoire /usr qui est en lecture seule malgré des permissions qui autorisent l'écriture.
Comment est-ce possible ?

sudo touch /usr/test.txt
touch: impossible de faire un touch '/usr/test.txt': Système de fichiers accessible en lecture seulement

mais

ls -al /usr
total 0
drwxr-xr-x 1 root root   104 20 sept.  2019 .
drwxr-xr-x 1 root root   188  4 juil. 13:06 ..
drwxr-xr-x 1 root root 45592  7 juil. 18:30 bin
drwxr-xr-x 1 root root    56  5 juil. 14:03 include
drwxr-xr-x 1 root root  2894  5 juil. 19:33 lib
drwxr-xr-x 1 root root 99874  7 juil. 18:30 lib64
drwxr-xr-x 1 root root    94  9 juil. 14:25 local
drwxr-xr-x 1 root root 13948  7 juil. 14:24 sbin
drwxr-xr-x 1 root root  4976  5 juil. 11:43 share
drwxr-xr-x 1 root root    16  4 juil. 11:57 src
drwxr-xr-x 1 root root    26  4 juil. 11:57 x86_64-suse-linux

A+

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #6
En essayant
sudo rm -rf .rpm.lock
?
Il faut se méfier des options -rf : ça force l'effacement (mal utilisé : ça peut dégager le répertoire /). Il vaut mieux vérifier ce qu'on supprime avec ls -rf .rpm.lock avant

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #7
En essayant
sudo rm -rf .rpm.lock
?
Il faut se méfier des options -rf : ça force l'effacement (mal utilisé : ça peut dégager le répertoire /). Il vaut mieux vérifier ce qu'on supprime avec ls -rf .rpm.lock avant

Même erreur. La machine est têtue !  :D

sudo rm -rf .rpm.lock
rm: impossible de supprimer '.rpm.lock': Système de fichiers accessible en lecture seulement

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #8
En fait, j'ai maintenant tout mon répertoire /usr qui est en lecture seule malgré des permissions qui autorisent l'écriture.
Comment est-ce possible ?

sudo touch /usr/test.txt
touch: impossible de faire un touch '/usr/test.txt': Système de fichiers accessible en lecture seulement

mais

ls -al /usr
total 0
drwxr-xr-x 1 root root   104 20 sept.  2019 .
drwxr-xr-x 1 root root   188  4 juil. 13:06 ..
drwxr-xr-x 1 root root 45592  7 juil. 18:30 bin
drwxr-xr-x 1 root root    56  5 juil. 14:03 include
drwxr-xr-x 1 root root  2894  5 juil. 19:33 lib
drwxr-xr-x 1 root root 99874  7 juil. 18:30 lib64
drwxr-xr-x 1 root root    94  9 juil. 14:25 local
drwxr-xr-x 1 root root 13948  7 juil. 14:24 sbin
drwxr-xr-x 1 root root  4976  5 juil. 11:43 share
drwxr-xr-x 1 root root    16  4 juil. 11:57 src
drwxr-xr-x 1 root root    26  4 juil. 11:57 x86_64-suse-linux

A+
Etonnant ça ! Ca a modifié les droits de sudo ? Vérifier dans yast- >sécurité & utilisateur ->sudo donne bien les droits de root
Ou essayer la commande
su -
pour avoir une console sous root

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #9
Bonjour

j'ai essayé avec su - et cela ne marchait pas.
Je peux passer d'autres commandes avec sudo, donc j'ai bien les droits d'administration...

Galère...

A+

 

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #10
En cherchant sur le web : j'ai trouvé une discutions similaire en anglais : https://forums.opensuse.org/showthread.php/534159-Read-only-lock-on-var-lib-rpm-rpm-lock
Après traduction, ça donne :
Citer
L'instantané précédent est, par définition, en lecture seule. Si vous voulez continuer à l'utiliser, vous devez effectuer un rollback qui clone l'instantané en lecture seule dans un sous-volume inscriptible et définit ce sous-volume comme nouvelle racine du système. Étonnamment, cela est même assez bien documenté, il y a un chapitre entier consacré à la récupération à partir d'instantanés ; et lorsque vous démarrez à partir d'un instantané précédent, le système devrait en fait avoir affiché un indice sur la façon d'effectuer la restauration.

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #11
En fait, c'est normal que /usr soit en lecture seule si j'ai bien compris ci-dessous. On doit utiliser /usr/local.
Donc, la question est pourquoi zypper essaye d'écrire dedans ??

Citer
/usr/local

    The original idea behind '/usr/local' was to have a separate ('local') '/usr' directory on every machine besides '/usr', which might be just mounted read-only from somewhere else. It copies the structure of '/usr'. These days, '/usr/local' is widely regarded as a good place in which to keep self-compiled or third-party programs. The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable amongst a group of hosts, but not found in /usr. Locally installed software must be placed within /usr/local rather than /usr unless it is being installed to replace or upgrade software in /usr.

A+

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #12
En cherchant sur le web : j'ai trouvé une discutions similaire en anglais : https://forums.opensuse.org/showthread.php/534159-Read-only-lock-on-var-lib-rpm-rpm-lock
Après traduction, ça donne :
Citer
L'instantané précédent est, par définition, en lecture seule. Si vous voulez continuer à l'utiliser, vous devez effectuer un rollback qui clone l'instantané en lecture seule dans un sous-volume inscriptible et définit ce sous-volume comme nouvelle racine du système. Étonnamment, cela est même assez bien documenté, il y a un chapitre entier consacré à la récupération à partir d'instantanés ; et lorsque vous démarrez à partir d'un instantané précédent, le système devrait en fait avoir affiché un indice sur la façon d'effectuer la restauration.

Merci @Jomo

Cela doit être la raison !

Je regarde cela après le repas.

A+

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #13
Merci @Jomo

Ta piste était la bonne.

Les commandes suivantes m'ont sorti de l’ornière :

sudo snapper rollback
systemctl reboot

A+

Re : can't create transaction lock on /var/lib/rpm/.rpm.lock

Répondre #14
Salut ;=)
Si j'ai bien compris tu as voulu te sauver la mise en revenant en arrière via les snapshots de Btrfs mais tu n'as pas utilisé la bonne commande/manip,  et donc ne pouvait pas agir en écriture.
Sais tu quelle manip avait entrainé ce pépin ?