Risolvere il problema "Zypper bloccato da un altro processo" in SUSE Linux Enterprise

Il messaggio "Zypper è bloccato da un altro processo" indica che un'altra attività di gestione dei pacchetti sta mantenendo il blocco di gestione del software del sistema. Potrebbe trattarsi di un normale aggiornamento in corso, di un programma di aggiornamento grafico, di YaST, di un'attività di automazione o, meno comunemente, di uno stato di blocco obsoleto dopo un'attività interrotta. La soluzione corretta dipende dal caso specifico. Attendere protegge una transazione attiva; interrompere un'attività identificata ma bloccata può essere appropriato durante una finestra di manutenzione. Eliminare i file di blocco o terminare i processi dei pacchetti senza verificarne la presenza può interrompere le modifiche ai pacchetti e creare un problema di ripristino più complesso.

Innanzitutto, conferma che tipo di serratura stai vedendo

Un blocco di processo e un blocco di pacchetto sono diversi. Il blocco di processo impedisce a due transazioni di gestione dei pacchetti di modificare il sistema contemporaneamente. Un blocco di pacchetto, al contrario, è una regola dell'amministratore che impedisce l'installazione, l'aggiornamento o la rimozione di determinati pacchetti. SUSE documenta i blocchi di pacchetto separatamente; il zypper lockscomando elenca le regole relative a tali pacchetti, ma non identifica il processo che detiene un blocco di transazione.

Verifica il testo esatto dell'errore. Se indica un ID di processo (PID), annotalo. Se il comando è in attesa anziché fallire, lascialo in esecuzione per un breve periodo e verifica se l'altro aggiornamento sta procedendo. Non avviare YaST Software, un altro zyppercomando o un aggiornamento dell'agente di gestione mentre è attiva una transazione.

Scegli la risposta più adatta alla situazione

Ciò che troviMigliore azione successivaScambio
È in corso l'installazione o l'aggiornamento di un pacchetto.Attendi che finiscaLa scelta più sicura, anche se potrebbe ritardare il tuo compito.
Uno strumento software grafico o un amministratore lo ha avviatoLascia che finisca o coordinati con il proprietarioEvita di interrompere il loro lavoro; richiede l'accesso a quella sessione
È attivo un lavoro di gestione programmato o remotoVerifica lo stato dei lavori e il programma di manutenzione.Mantiene gli aggiornamenti gestiti, ma potrebbe essere necessario l'amministratore di sistema
Il PID è sparito ma lo stesso errore di blocco persisteRiprova una volta, poi raccogli i dati diagnostici oppure riavvia il sistema solo in un intervallo di tempo sicuro.Potrebbe risolvere uno stato transitorio, ma un riavvio interrompe altri servizi

1. Individua il processo che mantiene il blocco

Esegui questo controllo di sola lettura da un terminale:

ps -eo pid,ppid,stat,etime,user,cmd | grep -E '[z]ypper|[y]ast|[p]ackagekit|[r]pm|[z]md'

L'output può rivelare un aggiornamento da riga di comando, YaST, un client PackageKit o un processo di gestione come l'agente client di SUSE Manager. Il solo nome del processo non è sufficiente per stabilire che sia sicuro arrestarlo: un'attività di pacchetto in esecuzione potrebbe svolgere un lavoro importante. Controlla il tempo trascorso, lo stato del processo, il processo padre e qualsiasi finestra di aggiornamento di cui sei a conoscenza. Se non sei root, chiedi a un amministratore di eseguire il controllo o conferma il proprietario del processo.

Se l'errore segnala un PID, esaminate quello specifico processo anziché affidarvi solo a una ricerca testuale:

ps -p 1234 -o pid,ppid,stat,etime,user,cmd

Sostituisci 1234con il PID presente nel tuo messaggio. Un processo che sta utilizzando la CPU, che sta cambiando stato o che appartiene a un servizio di aggiornamento noto dovrebbe generalmente essere lasciato terminare. Se si tratta di un comando da terminale che hai avviato tu stesso, torna a quel terminale e leggi il suo prompt corrente o l'output di avanzamento.

2. Decidere se attendere o interrompere un'attività

Attendi che la transazione sia attiva

Se i pacchetti sono in fase di download, installazione o se il comando è in attesa di conferma, attendere è l'opzione a minor rischio. L'aggiornamento di un pacchetto può richiedere più tempo su dispositivi di archiviazione lenti, batch di aggiornamenti di grandi dimensioni o sistemi con molti pacchetti. Al termine, riprovare a eseguire il comando originale. Se non si registrano progressi per un periodo di tempo insolitamente lungo, annotare il PID e l'ora, quindi controllare il terminale o i log del servizio di aggiornamento pertinenti prima di decidere come procedere.

Interrompi solo un'attività che puoi identificare e interrompere in modo sicuro

Se hai avviato l'altro comando e ti trovi ancora in una finestra di dialogo interattiva, rispondi o annullalo utilizzando l'opzione predefinita del prompt. Per un programma di aggiornamento desktop, utilizza la sua funzione di annullamento o chiusura, se chiaramente disponibile. Non utilizzare questa kill -9opzione come scorciatoia. L'interruzione improvvisa può interrompere una transazione RPM o lasciare il sistema in uno stato che richiede ulteriori interventi di riparazione. Su un server di produzione, coordinati con il responsabile dell'aggiornamento e segui la procedura di manutenzione anziché interrompere un processo sconosciuto.

3. Verifica gli strumenti software di automazione e grafici

Sui sistemi SLES gestiti, gli aggiornamenti possono essere attivati ​​da un amministratore, da un pianificatore o da un server di gestione centrale. Prima di avviare un'altra transazione, controlla il calendario di manutenzione della tua organizzazione e lo stato di qualsiasi processo di aggiornamento. Se il blocco si verifica ripetutamente nello stesso momento, confronta i timestamp con i processi pianificati. La soluzione definitiva potrebbe essere quella di riprogrammare la manutenzione manuale o di coordinare un'unica finestra di aggiornamento, anziché disabilitare il servizio di gestione.

Su una workstation, un centro software o una sessione YaST potrebbero utilizzare la stessa libreria di gestione dei pacchetti di Zypper. Chiudere o terminare l'operazione software tramite tale applicazione. Non dare per scontato che "PackageKit" sia presente in ogni installazione di SLES; verificare il processo effettivo prima di tentare di eseguire comandi di servizio. Disabilitare un programma di aggiornamento a livello globale può anche impedire la manutenzione di sicurezza prevista, quindi modificare tale criterio solo se l'amministratore di sistema intende farlo.

4. Se il PID registrato non è più in esecuzione

Se l'errore specifica un PID, controllalo di nuovo con ps -p PID. Se non esiste alcun processo, riprova il comando Zypper originale una volta. Alcune versioni della libreria possono rilevare che un processo registrato è terminato e ripulire lo stato transitorio, ma il comportamento può variare a seconda della versione e di come è terminato il comando precedente. Non rimuovere manualmente /run/zypp.pido un altro file di blocco solo perché il PID è assente. La documentazione di AutoYaST di SUSE avverte esplicitamente che la rimozione del blocco di gestione dei pacchetti è a rischio dell'utente.

Se l'errore persiste dopo il tentativo successivo, interrompere l'operazione e raccogliere l'errore esatto, il service pack di SLES, l'ora e la cronologia degli aggiornamenti recenti. Un riavvio controllato potrebbe risolvere un problema temporaneo, ma è consigliabile programmarlo solo dopo aver verificato che non vi siano operazioni di installazione di pacchetti attive e dopo averne controllato l'impatto sui servizi in esecuzione. Sui sistemi critici, chiedere prima all'amministratore o al supporto SUSE di esaminare la situazione.

5. Utilizzare il comando diagnostico corretto

zypper psÈ utile dopo le modifiche ai pacchetti, ma viene spesso frainteso. Nella Guida di amministrazione di SLES, elenca i processi che utilizzano ancora file che sono stati eliminati o sostituiti durante l'applicazione di patch, aggiornamenti o la rimozione di pacchetti. Non è il comando per scoprire chi detiene attualmente il blocco della transazione Zypper. psPer questo scopo, utilizzare il comando e il PID dal messaggio di blocco.

Analogamente, zypper lockselenca i blocchi a livello di pacchetto. Vale la pena verificare se un singolo pacchetto rimane non disponibile dopo la rimozione del blocco di processo, ma ciò non rilascerà un blocco di transazione attivo. La distinzione è importante: eliminare un blocco di pacchetto o modificare la selezione di un pacchetto non può risolvere un altro processo che sta ancora utilizzando il gestore di pacchetti.

Quando è opportuno intensificare la procedura

Se il blocco si ripresenta dopo ogni riavvio, se un processo sembra bloccarsi durante un aggiornamento critico, se il database dei pacchetti segnala ulteriori errori o se il sistema è gestito centralmente, è necessario contattare l'amministratore di sistema. È necessario includere il comando esatto, il testo completo dell'errore, il PID, la versione o il service pack di SLES e l'output del controllo del processo in sola lettura. SUSE documenta il problema /var/log/zypper.logcome file di log di Zypper; un amministratore può esaminare le voci relative al momento dell'errore. Evitare di condividere pubblicamente i log se contengono nomi host, dettagli del repository, nomi utente o percorsi interni.

Verifica che Zypper sia nuovamente disponibile.

Dopo che la transazione nota è stata completata, o dopo che l'amministratore ha risolto la condizione di obsolescenza, eseguire un comando di sola lettura innocuo come zypper --versiono zypper repos. Se viene completato senza l'avviso di blocco, riprovare il comando del pacchetto desiderato durante una finestra di aggiornamento approvata. Esaminare le modifiche proposte da Zypper prima di confermare. Un comando eseguito correttamente dovrebbe essere completato senza che venga interrotto un secondo processo di gestione dei pacchetti; se il messaggio di blocco viene ricomparso, identificare il nuovo PID invece di eliminare i file o ripetere la transazione.

Riferimenti ufficiali di SUSE

Lascia un commento

Come rimuovere un repository APT da Debian

Come rimuovere un repository APT da Debian

Scopri come trovare, disabilitare o rimuovere definitivamente un repository APT da Debian utilizzando i moderni file .sources o le vecchie voci .list, quindi aggiorna APT in modo sicuro.

Debian: come disinstallare un pacchetto con APT o Synaptic

Debian: come disinstallare un pacchetto con APT o Synaptic

Scopri come disinstallare un pacchetto su Debian utilizzando apt remove, purge, autoremove, apt-get o Synaptic, inclusa la procedura per trovare i nomi dei pacchetti in modo sicuro.

Come utilizzare EA Origin su Linux con l'app EA e Lutris

Come utilizzare EA Origin su Linux con l'app EA e Lutris

Origin è stato sostituito dall'app EA. Scopri come eseguire la tua libreria EA su Linux con Lutris, Wine, Vulkan e segui le pratiche procedure di risoluzione dei problemi.

Come installare GParted Partition Editor su Linux

Come installare GParted Partition Editor su Linux

Scopri come installare GParted su Ubuntu, Debian, Fedora, Arch Linux e openSUSE, e quando utilizzare GParted Live per le partizioni di sistema.

Come copiare un file da una directory all'altra in Ubuntu Linux

Come copiare un file da una directory all'altra in Ubuntu Linux

Copiare un file tra directory in Ubuntu utilizzando Files o il comando cp, con scorciatoie da tastiera, protezione dalla sovrascrittura, esempi di percorsi e suggerimenti per la risoluzione dei problemi.

7-Zip su Ubuntu: come installarlo e utilizzarlo

7-Zip su Ubuntu: come installarlo e utilizzarlo

Installa 7-Zip su Ubuntu con il pacchetto 7zip più recente, verifica il comando e impara come creare, ispezionare, testare ed estrarre archivi .7z.

Ubuntu: come ridimensionare una partizione in modo sicuro con GParted

Ubuntu: come ridimensionare una partizione in modo sicuro con GParted

Scopri come ridimensionare una partizione Ubuntu con GParted, incluse le partizioni root/di sistema da una chiavetta USB avviabile e le partizioni dati dal desktop.

Come giocare a Stardew Valley su Linux con Steam

Come giocare a Stardew Valley su Linux con Steam

Stardew Valley ha una versione nativa per Linux, quindi non hai bisogno di Proton o Wine. Installa Steam, scarica la versione per Linux, avviala e risolvi i problemi più comuni.

Come montare un'unità USB in Ubuntu Linux (tramite interfaccia grafica e terminale)

Come montare un'unità USB in Ubuntu Linux (tramite interfaccia grafica e terminale)

Scopri come montare un'unità USB in Ubuntu Linux utilizzando File, GNOME Disk o il terminale, incluse le procedure di smontaggio sicuro e la risoluzione rapida dei problemi.

Come giocare a The Elder Scrolls V: Skyrim Special Edition su Linux

Come giocare a The Elder Scrolls V: Skyrim Special Edition su Linux

Scopri come giocare a Skyrim Special Edition su Linux con Steam Play e Proton, incluse le impostazioni di compatibilità attuali, i passaggi per l'installazione e le soluzioni ai problemi.