Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Installierte Pakete, die nicht mehr im Portage Tree sind
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
sschlueter
Guru
Guru


Joined: 26 Jul 2002
Posts: 578
Location: Dortmund, Germany

PostPosted: Sun Oct 30, 2005 3:06 pm    Post subject: Installierte Pakete, die nicht mehr im Portage Tree sind Reply with quote

Um möchte herrausfinden, welche installierten Pakete nicht mehr im Portage Tree sind.

Ich mache das jetzt erstmal so, daß ich eine Liste der installierten Pakete erstelle:

equery --quiet --nocolor list > installed-packages.txt

Und dann überprüfe, ob Portage jedes einzelne Paket in genau dieser Version re-emergen würde:

cat installed-packages.txt | sed 's/\(.*\)/=\1/g' | xargs emerge --pretend --oneshot

Die Sache ist ziemlich aufwendig, weil Portage dann nur das erste Paket bemängelt, das nicht mehr im Tree ist.

Ich deinstalliere das dann, entferne den Eintrag aus der Liste der installierten Pakete und führe

cat installed-packages.txt | sed 's/\(.*\)/=\1/g' | xargs emerge --pretend --oneshot

erneut aus. Und dann wiederhole ich das ganze erneut.


Das Verfahren ist natürlich nur unkritisch, solange Versionen von Paketen deinstalliert werden, von denen sowieso mehrere Versionen installiert sind (Bibliotheken etc.). Es kann jedoch auch passieren, daß man durch dieses Verahren eine Anwendung, von der nur eine Version installiert ist, deinstalliert und die Anwendung dann nicht mehr benutzt werden kann. Vor einiger Zeit hatte ich so einen Fall bei einem von mir benutzten DynDNS-Client, der irgendwann nicht mehr im Tree gewesen ist. War für mich nicht so schlimm, weil ich einfach auf einen anderen DynDNS-Client umgestiegen bin. Natürlich kann man, wenn man sich von der Anwendung nicht verabschieden will, auch die alte Version weiterhin in seinem eigenen Overlay-Tree behalten.

Naja, aber meine eigentlich Frage lautet: Das von mir beschriebene verfahren ist ja ziemlich aufwendig. Gibt es da keinen einfacheren Weg?

Ich hatte schon daran gedacht, daß man die Liste der installierten Pakete vielleicht mit der Ausgabe von emerge --emptytree world vergleichen könnte, aber da wüßte ich nicht, wie.


Last edited by sschlueter on Sun Oct 30, 2005 3:28 pm; edited 2 times in total
Back to top
View user's profile Send private message
sschlueter
Guru
Guru


Joined: 26 Jul 2002
Posts: 578
Location: Dortmund, Germany

PostPosted: Sun Oct 30, 2005 3:24 pm    Post subject: Reply with quote

Achso, ich sollte vielleicht noch schreiben, daß ich das ganze auch nutze, um in /etc/portage/package.keywords aufzuräumen.

Ich habe ein 'x86' System, aber es kommt regelmäßig vor, daß ich ein Paket einfach früher haben möchte. Also trage ich regelmäßig etwas in /etc/portage/package.keywords ein. Mit der Zeit wird die Datei also immer größer, obwohl immer nur ein paar Einträge wirklich notwendig sind, weil die meisten Pakete schon längst für 'stable' freigegeben worden sind.

Um die tatsächliche notwendigen Pakete herauszufinden, kommentiere ich alle Zeilen in /etc/portage/package.keywords aus. Wenn ich dann

emerge --ask --verbose --update --deep world

sehe ich schon einige Einträge, die notwendig in package.keywords sind, weil Portage mir von denen ein Downgrade ankündigt.

Es ist nur so, daß man damit anscheinend nicht alle Fälle findet. Wenn ich ein Paket installiert habe, von dem es keine 'stable' Version gibt, also wo Portage auch kein Downgrade anzeigen könnte, beschwert Portage sich bei emerge --ask --verbose --update --deep world darüber überhaupt nicht. Finde ich irgendwie ein wenig unlogisch, aber ich kann diese Fälle ebenfalls über das beschriebene Verfahren mit dem

cat installed-packages.txt | sed 's/\(.*\)/=\1/g' | xargs emerge --pretend --oneshot

herausfinden.
Back to top
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Sun Oct 30, 2005 4:47 pm    Post subject: Reply with quote

Um dein package.keywords clean zu halten, schau dir dieses Script an.

Ist von mir.

Code:



grep ~x86 /var/db/pkg/*/*/*.ebuild |sed s'#/var/db/pkg/##'|gawk -F / {'print $1  echo "/"  $2'}| sed s'#^#=#'|sed s'#$# ~x86#'

echo "In keywords eintragen?"

read -e RUECK

if [ $RUECK == "j" ]; then

grep ~x86 /var/db/pkg/*/*/*.ebuild |sed s'#/var/db/pkg/##'|gawk -F / {'print $1  echo "/"  $2'}| sed s'#^#=#'|sed s'#$# ~x86#' > /etc/portage/package.keywords

echo ''
echo ''

cat /etc/portage/package.keywords |wc

fi

if [ $RUECK == "n" ]; then
exit
fi


Grundgedanke:
Es werden alle Ebuilds von installierten Paketen nach ~x86 durchsucht.

Diese werden dann mit = vor dem namen und ~x86 in die Datei reingeschrieben.

Damit sind alle Fälle komplett abgedeckt.

Ciao
Back to top
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Sun Oct 30, 2005 4:56 pm    Post subject: Reply with quote

Und zu deinem ersten Post.

Unter /var/db/pkg/*/*/*.ebuild müsstest du alle ebuilds finden, von den Programmen, die installiert worden sind, egal ob es sie noch im Portage gibt oder nicht.

Lass die dir ausgeben:
Code:

/usr/bin/ls -1 /var/db/pkg/*/*/*.ebuild |gawk -F / {'print $7'} >> installierte ebuils
/usr/bin/ls -1 /usr/portage/*/*/*.ebuild |gawk -F / {'print $6'} >> alle ebuilds



und vergleiche sie dann.

Ciao

Tobi
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum