RPM Deinstallation benötigter Pakete ???

A

aspire_5652

Tripel-As
Folgendes Szenario:

Ich möchte ein Paket A im RPM Format installieren (bsp über Yast), dieses Paket ist jedoch abhängig von Paket B,C und D. (zb. benötigte Libs)
Paket D ist schon installiert, da ein weiteres Paket Z von ihm abhängig ist. Also wird bei der Installation von Paket A, Paket B und C hinzugefügt.

Nach einer Weile möchte ich jedoch Paket A deinstallieren. Wie kann man RPM nun dazu bringen, dass die anfangs benötigten Pakete die zur Installation mit ausgewählt wurden auch mit deinstalliert werden? Mit Paket A soll auch Paket B und C deinstalliert werden, Paket D soll jedoch erhalten bleiben, da ein weiteres Paket Z von Ihm abhägig ist.

Wäre doch schlecht wenn man die Übersicht verliert und man einige sinnlose Programmleichen installiert hat.
 
Es gibt zumindest ein Programm namens "rpmorphan", das folgendes tut:
rpmorphan finds "orphaned" packages on your system. It determines
which packages have no other packages depending on their installation,
and shows you a list of these packages.
It intends to be clone of deborphan debian tools for rpm packages.

It will try to help you to remove unused packages, for exemple :
- after a distribution upgrade
- when you want to suppress packages after some tests

Du kannst auch mit einer Kommandozeile die Abhängigkeiten eines installierten Paketes sehen und diese mit deinstallieren. Haben diese dann aber selber noch Abhängigkeiten, kriegst du dafür eine Rückmeldung und wenn du die Deinstallation nicht erzwingst, bleiben die auch.

Was anderes vermute ich mal macht rpmorphan auch nicht, nur noch mit Unterstützung durch eine Oberfläche.
 
Es gibt zumindest ein Programm namens "rpmorphan", das folgendes tut:


Du kannst auch mit einer Kommandozeile die Abhängigkeiten eines installierten Paketes sehen und diese mit deinstallieren. Haben diese dann aber selber noch Abhängigkeiten, kriegst du dafür eine Rückmeldung und wenn du die Deinstallation nicht erzwingst, bleiben die auch.

Was anderes vermute ich mal macht rpmorphan auch nicht, nur noch mit Unterstützung durch eine Oberfläche.

Klingt genau nach dem was ich gesucht habe, Danke!
Du kannst auch mit einer Kommandozeile die Abhängigkeiten eines installierten Paketes sehen und diese mit deinstallieren.
Das würde micht mal interessieren, mit welchen Befehlen/Parametern das geht.
 
Dann lies in einer ruhigen Minute (na gut, 10 ;) ) mal die manpage von rpm. Du kannst ein Paket befragen, woraus es besteht oder eine (von rpm installierte!) Datei, zu welchem Paket sie gehört.

rpmorphan baut wohl daraus eine Logik zusammen und bietet dir die so gefundenen Pakete zur Deinstallation an.

Ansonsten ist es denke ich mal eher die Philosophie, da Pakete ja als Abhängigkeit auftauchen können, aber daran nicht gebunden sind für sich (also einen eigenen Sinn haben), sie nicht ständig drauf und wieder runter zu bügeln. Wie gesagt, es ist verfolgbar, aber wenn du das Paket, das die Abhängigkeit hat, deinstallierst, macht das das als Abhängigkeit installierte Paket ja nicht wertlos. Es ist z.B. dann schon da, wenn ein drittes es bei seiner Installation braucht. Die rpm-Datenbank "weiß" dann, daß es da ist und die Abhängigkeit ist erfüllt, ohne es neu einbauen zu müssen. Oder man kann auch "solo" damit irgend was anstellen und rpm nimmt dir nicht einfach die Entscheidung ab, ob du das möchtest.

Zu dieser "Politik" kann man stehen wie man will.... aber wie gesagt, es ist ja lösbar und sogar schon gelöst :)
 
Glaube es wahr

Code:
rpm -q --provides

Bin mir aber auch nicht 100 % sicher
 
ah dann sry,

wie gesagt war mir da auch nicht so 100% mehr sicher, aber der einfachste weg ist doch Yast um die Nötigen Abhängikeiten anzeigen zu lassen.
 
aber der einfachste weg ist doch Yast um die Nötigen Abhängikeiten anzeigen zu lassen.
Aber das zeigt doch nur, wovon eine ausgewählte RPM abhägt, aber nicht, welche anderen von dieser abhängen? (Neuestes YaST habe ich gar nicht..) Aber das war ja das Problem: Wie merke ich D an, daß A von ihm abhängt, welches aber gar nicht mehr da ist und sonst auch keines mehr.
 
So, es gibt Neuigkeiten. Ich hab mich mit diesem Problem mal etwas intensiver auseinandergesetzt. Und habe die RPM Befehle logisch verknüpft und bekomme eine Ausgabe, welche Pakete von einen bestimmten benötigt werden.

Hier der Code:
Code:
#!/bin/bash

if [ -z $1 ]
then
	echo "missing argument, please enter your target-RPM and type: ./rpmcheck <RPM-package>"
	exit 1
fi

PACKAGE=$1

REQUIRED_RPMS=$(rpm -qf $(whereis $(rpm -qR ${PACKAGE} | awk -F "(" '{print $1}' | awk '{print $1}' | egrep -v 'rpmlib|/bin/sh|/bin/bash' | sort | uniq) | awk '{print $2}') | sort | uniq | grep -v ${PACKAGE})

echo "-> required rpm's: "
for RPM in ${REQUIRED_RPMS}
do
	echo ${RPM}
done

Ich frage nach den Dateien, die vom Paket A benötigt werden, suche dann ihren Speicherort und schaue dann in welchem weiteren Paket B...Z sie enthalten sind. Wichtige Sachen, die jedes Paket braucht habe ich außen vorgelassen: 'rpmlib|/bin/sh|/bin/bash'. Jedes Paket B...Z kommt auch nur einmal vor, zb wenn zwei verschiedene benötigte Dateien in einem Paket stecken.

Nun hab eich also eine Liste, mit weiteren benötigten Paketen. Aber wie prüfe ich nun die Abhängikeiten von den gelisteten benötigten Paketen B...Z, das die se nur vom Paket A verwendet werden und daher entfernt werden können?
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

RPM Paketbau - %pre Probleme

YUM, Fedora 12, Pakete deinstallieren, die nicht mehr angeboten werden

E-Mail Empfang, Aliases unter Debian Squeeze

SuSE, XP und Win 7

Zurück
Oben