La rimozione RPM non rimuove le directory consegnate e lascia immondizia


6

Fornisco un'applicazione tramite un RPM.

Questa applicazione fornisce varie directory e file.
Ad esempio, /opt/internal/com
una struttura di file viene copiata.

Mi aspettavo che su rpm -etutta la struttura dei file consegnata sotto /opt/internal/comverrà rimosso.
Ma non lo fa.
Ci sono directory nella struttura dei file che non sono vuote.

È questa la ragione? Ma queste directory (non vuote) sono state create dall'installazione RPM. Quindi mi aspetto che siano "posseduti" da RPM e rimossi automaticamente.

È sbagliato? Devo rimuoverli manualmente?

Risposte:


6

RPM non eliminerà tutti i file di cui non è a conoscenza, quindi se nuovi file sono stati creati in una directory che non fa parte di un pacchetto, RPM non li rimuoverà o le directory.

Eliminerà le directory se sono vuote e ne sono a conoscenza. Dipende da come è stato scritto il file delle specifiche.


1
Eliminerà le directory NON vuote e le conosce? (i giri li consegnarono)
Jim

It depends how the spec file was written.Vuoi dire che avrei dovuto rimuoverli in una %postunsezione?
Jim,

1
Jim, James sta dicendo che non rimuoverà le directory non vuote perché contengono file di cui non è a conoscenza. Se ritieni di dover rimuovere queste directory durante la disinstallazione a %postunè appropriato, ma sappi che è così che funziona la maggior parte degli RPM.
Kyle Smith,

@Jim Potresti usare un% postun rm -rfnelle directory, ma normalmente RPM non lo fa perché non è sicuro farlo. Potresti perdere i dati che non avevi intenzione di fare solo perché hai rimosso un pacchetto (ad es. Modifiche al file di configurazione).
James O'Gorman,

1
@Jim È stato foo/bar/stuff/file1.txtinstallato da RPM e specificato in %files? In tal caso, rpm -erimuoverà è purché non sia stato modificato. Se non è stato installato dall'RPM, non verrà rimosso.
James O'Gorman,

1

La risposta di James O'Gorman è assolutamente giusta.

Un altro scenario da aggiungere, che ho riscontrato di recente, è che devi dire alle directory di proprietà del pacchetto RPM nella sezione% files con una riga "% dir / dir / path", in modo da ricordare tutti i file e le directory nel database RPM quando installato e può essere rimosso (a meno che il contenuto della directory non sia di proprietà di quel pacchetto) durante la cancellazione degli RPM.

È necessario prestare maggiore attenzione durante la specifica delle directory di proprietà in quanto esistono diversi metodi per elaborare la cancellazione degli RPM su diverse distribuzioni.

ad esempio se il pacchetto contiene i seguenti file e directory:

**DIR:** /opt/dir1/empty_dir **FILE:** /opt/dir1/file1 **FILE:** /opt/dir1/dir2/file2

allora dovrebbe apparire la tua sezione% files

%files
%dir /opt/dir1
%dir /opt/dir1/empty_dir
%dir /opt/dir1/dir2
/opt/dir1/file1
/opt/dir1/dir2/file2

La parte complicata è che potresti perdere %dir /opt/dir1e non verrà rimosso anche se è vuoto in alcune distro.


Questo non è corretto " ... se una directory viene specificata nell'elenco% files, il contenuto di quella directory e il contenuto di ogni directory sotto di essa verranno automaticamente inclusi nel pacchetto. " Vedi la sezione% dir in questo documento rpm.org
CivFan,

Ti suggerirò di leggere di nuovo la sezione completa. Se ancora non capisci, modificherò il mio ans per spiegare in dettaglio.
avg598,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.