Accueil
» Comment faire
»
Supprimer un verrou Zypper en toute sécurité sous SUSE Linux Enterprise
Supprimer un verrou Zypper en toute sécurité sous SUSE Linux Enterprise
Si SUSE Linux Enterprise signale que Zypper est verrouillé par un autre processus, attendez la fin de toute mise à jour logicielle, opération sur un paquet YaST ou tâche de maintenance automatisée en cours. Vérifiez quel processus de gestion de paquets est en train de bloquer l'activité avant d'interrompre toute opération. Si aucune opération n'est en cours et que le verrouillage persiste, examinez l'état du système sans supprimer les fichiers de verrouillage sans précaution ; puis relancez Zypper. Un verrouillage créé avec une autre méthode zypper addlockconstitue un problème différent et nécessite une solution différente.
Que signifie « verrouillé par un autre processus » ?
Zypper et les outils de gestion de paquets sous-jacents protègent les transactions de paquets contre les modifications simultanées. Une actualisation, un correctif, une installation, une tâche logicielle YaST ou une mise à jour planifiée peut temporairement empêcher une seconde transaction. Le verrou est un mécanisme de coordination : le supprimer pendant que RPM ou Zypper modifie encore des paquets peut rendre la base de données de paquets ou le système incohérent.
Distinction vérifiée : un verrouillage de processus empêche les opérations simultanées sur les paquets ; un verrouillage de paquet empêche la sélection d'un paquet spécifique pour installation, mise à jour ou suppression. La documentation SUSE décrit les verrouillages de paquets comme une fonctionnalité distincte. Le guide de SUSE sur la création de paquets RPM explique les verrouillages de paquets Zypper . Si l'erreur mentionne un autre processus ou indique que le gestionnaire de paquets est occupé, commencez par les vérifications de processus ci-dessous. Si elle indique qu'un paquet particulier est verrouillé ou exclu, exécutez sudo zypper lockset examinez plutôt les règles de paquets listées.
1. Vérifiez si une opération de paquetage est toujours en cours.
Veuillez patienter quelques minutes si une mise à jour, une installation ou une actualisation de dépôt vient de démarrer. Sur un serveur, vérifiez d'abord auprès de l'administrateur ou du responsable de la maintenance automatisée ; une tâche de correctif en arrière-plan peut ne pas afficher de terminal.
Recherchez une tâche Zypper, RPM, YaST ou PackageKit et notez son PID, son temps d'exécution et sa commande. L'expression grep évite de prendre en compte la commande de recherche elle-même pour Zypper et RPM. La liste des processus étant un instantané, répétez l'opération après une courte attente si le résultat n'est pas clair. L'exemple ci-dessous est une illustration de la sortie du terminal, et non un rapport provenant d'une machine réelle.
Vérifiez le nom du processus, son PID et le temps écoulé avant de décider si le gestionnaire de paquets est toujours actif.
Ce qui n'est pas encore établi : l'affichage d'un processus ne prouve pas qu'il est bloqué. Une transaction de paquet peut être en train de télécharger des métadonnées ou d'attendre de l'espace de stockage ou un dépôt. Ne l'interrompez pas simplement parce que la commande est restée silencieuse. Si elle progresse, laissez-la se terminer et relancez ensuite la commande Zypper d'origine.
2. Vérifier les tâches de service et de maintenance des logiciels de gestion
Les installations de bureau peuvent utiliser PackageKit, tandis que les serveurs gérés peuvent exécuter des mises à jour planifiées via les minuteurs systemd ou SUSE Manager. Cochez uniquement les services présents sur votre hôte :
systemctl status packagekit
systemctl list-timers --all
Si PackageKit est absent, systemd signale que l'unité est introuvable ; cela ne signifie pas que Zypper est défectueux. S'il est actif, consultez ses entrées de journal récentes et vérifiez qu'aucune installation ou mise à jour n'est en cours avant d'envisager son arrêt.
Lorsqu'une opération PackageKit confirmée est terminée mais que son service reste actif et bloque Zypper, veuillez contacter la personne ou l'automatisation en charge des mises à jour. Sur un hôte où son arrêt est approprié, utilisez la commande appropriée sudo systemctl stop packagekit, puis vérifiez avec la commande `package-service` systemctl status packagekit. Ne désactivez pas le service ni n'arrêtez les minuteurs de mise à jour non liés comme solution générale. Les noms et les planifications de mise à jour dépendent des composants installés sur le système et de sa politique de gestion.
Utilisez l'état du service et le journal pour déterminer si PackageKit effectue des opérations sur les paquets avant de l'arrêter.
3. Si aucun propriétaire n'est actif, vérifiez la serrure inactive en toute sécurité.
Un verrou obsolète peut survenir suite à une interruption de session, un redémarrage ou l'échec d'une tâche de gestion, mais sa présence seule n'en identifie pas la cause. La documentation utilisateur de SUSE ne fournit pas d'instruction universelle pour supprimer un fichier de verrou pour toutes les versions et configurations de SLES. Évitez d'utiliser des commandes telles que ` rmdelete` sur des chemins indéterminés et ne les utilisez pas kill -9sur un PID inconnu. Un fichier de verrou peut être recréé ou remplacé pendant qu'une transaction est active, et sa suppression n'arrête pas le processus propriétaire de la transaction.
Revérifiez la liste des processus, examinez les journaux de service pertinents et assurez-vous qu'aucune opération de paquetage n'est en cours. Si vous identifiez un fichier PID obsolète ou un chemin de verrouillage, vérifiez son propriétaire et confirmez avec la procédure documentée pour votre Service Pack SLES ou les instructions du support avant de le modifier. Pour les systèmes de production, capturez l'erreur exacte et les journaux, puis suivez la procédure de support SUSE de votre organisation. C'est à ce stade que les détails locaux sont importants : le texte de l'erreur, le Service Pack SLES, les outils de bureau installés et l'agent de gestion peuvent influencer la mesure de récupération appropriée.
4. Réessayez Zypper et vérifiez la transaction.
Une fois l'opération concurrente terminée, actualisez les métadonnées du référentiel :
sudo zypper refresh
Une actualisation réussie confirme que Zypper peut désormais accéder à ses dépôts et que le verrouillage du processus ne bloque plus cette commande. Si votre tâche initiale consistait à corriger le système, veuillez prévisualiser les modifications proposées avant de les appliquer :
sudo zypper patch --dry-run
Examinez les paquets et les actions dans le résultat. Une exécution à blanc est une vérification de planification ; elle n'installe pas les mises à jour listées. Lorsque la proposition est attendue et que votre fenêtre de maintenance le permet, exécutez la commande sudo zypper patch. La documentation SUSE SLES 15 SP7 couvre la gestion des logiciels en ligne de commande, notamment l'installation et la désinstallation ; le comportement des commandes et les options disponibles peuvent varier selon la version. Consultez la documentation de gestion des logiciels SLES 15 SP7 et la référence Zypper de SUSE .
Une fois la tâche concurrente terminée, actualisez les métadonnées du dépôt pour confirmer que Zypper peut continuer.Prévisualisez la transaction de correctif et examinez les modifications proposées avant d'appliquer les mises à jour.
Hypothèses courantes à éviter
« Le verrou est toujours obsolète. » Ce message seul ne permet pas de le confirmer. Il peut s'agir d'une mise à jour réelle. Vérifiez d'abord les processus actifs et les journaux.
« Un verrou de package et un verrou de processus sont identiques. » Ce sont des mécanismes de contrôle distincts. Utilisez-les zypper lockslorsqu'un package nommé est explicitement verrouillé ; ne supprimez pas les règles de package pour effacer une transaction en cours.
La suppression d'un fichier de verrouillage corrige le problème du propriétaire. Elle n'interrompt pas un processus en cours et ne termine pas sa transaction en toute sécurité. Identifiez d'abord le propriétaire et suivez les instructions spécifiques à votre version concernant les états obsolètes.
« Le redémarrage du serveur est la solution habituelle. » Un redémarrage peut interrompre les modifications de paquets et n'est pas justifié par la seule erreur. N'y recourez que si votre procédure de maintenance ou vos instructions d'assistance le prévoient.
Vérifier la correction
Le problème est résolu lorsque sudo zypper refreshl'opération s'achève sans erreur de verrouillage et que la commande prévue peut être exécutée. sudo zypper patch --dry-runAvant toute application de correctif, examinez et confirmez les actions proposées. Si le verrouillage se reproduit, notez l'erreur exacte, la liste des processus, l'état des services concernés, les dernières entrées du journal et la version de SLES. Ensuite, recherchez le processus ou l'outil de gestion qui réacquiert le verrouillage plutôt que de supprimer systématiquement l'état du verrou.