Sie können app-portage/genlop
dies verwenden.
genlop -l --date some_date
listet alle Pakete auf, die an oder nach diesem Datum zusammengeführt wurden. (Sie können auch ein Enddatum angeben.)
emerge --unmerge
Versuchen Sie Folgendes, um eine Liste der Pakete zu erhalten, für die Folgendes geeignet ist:
genlop -ln --date 2011/10/02 | perl -ne '/>>> (.*)/ and print " =$1";'
Überprüfen Sie diese Liste noch einmal, bevor Sie sie tatsächlich entfernen. Das versehentliche Entfernen von Systempaketen macht keinen Spaß.
Eine andere Möglichkeit, eine Liste von Dingen zu erhalten, die nach einem bestimmten Datum zusammengeführt wurden, besteht darin, die BUILD_TIME
in der Portage-Datenbank gespeicherten Daten zu betrachten.
#!/bin/bash
stime=$(date -d "$1" +%s)
for dir in /var/db/pkg/*/* ; do
if [ -f $dir/BUILD_TIME ] ; then
btime=$(<$dir/BUILD_TIME)
if [ $btime -ge $stime ] ; then
package=$(basename $dir)
category=$(basename $(dirname $dir))
echo $category/$package
fi
fi
done
Rufen Sie dies mit einem Datum (dh ./script "2001/09/30 21:32"
) auf und Sie erhalten eine Liste der Pakete, die seit diesem Datum zusammengeführt wurden.
Portage speichert nicht, ob eine Zusammenführung eine Neuinstallation oder ein Update in seiner Datenbank war. Sie können diese Informationen aus der emerge.log
Datei rekonstruieren, vorausgesetzt, Sie haben den gesamten Systemverlauf dort.
Eine einfachere Möglichkeit, all dies zu handhaben, wäre die Verwendung von Paketsätzen. Erstellen Sie jedes Mal ein Set, wenn Sie ein neues Rezept ausprobieren, und verwenden Sie dieses, um Ihre Aufräumarbeiten durchzuführen. (Depclean ist noch notwendig.)
# echo dev-perl/IO-AIO > /etc/portage/sets/my_set
# emerge -a @my_set
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] dev-perl/IO-AIO-2.33
Would you like to merge these packages? [Yes/No] y
>>> Recording @my_set in "world" favorites file...
...
>>> Installing (1 of 1) dev-perl/IO-AIO-2.33
>>> Auto-cleaning packages...
>>> No outdated packages were found on your system.
* GNU info directory index is up-to-date.
# emerge -a --unmerge @my_set
* This action can remove important packages! In order to be safer, use
* `emerge -pv --depclean <atom>` to check for reverse dependencies before
* removing packages.
>>> These are the packages that would be unmerged:
dev-perl/IO-AIO
selected: 2.33
protected: none
omitted: none
All selected packages: dev-perl/IO-AIO-2.33
>>> 'Selected' packages are slated for removal.
>>> 'Protected' and 'omitted' packages will not be removed.
Would you like to unmerge these packages? [Yes/No]
genlop
das Parsen von Portage-Protokolldateien erforderlich und spiegelt nicht den aktuellen Systemstatus wider, sodass die Ausgabe bereits entfernte Pakete enthält und einige Pakete mehrfach enthalten sind, da sie mehrfach installiert wurden, und es sind auch einige Pakete enthalten, die zufällig gleichzeitig aktualisiert wurden Zeitraum. Also muss ich immer noch alle Pakete einzeln überprüfen, was ich vermeiden möchte./var/pkg/db
viel besser. Ich habe Ihr Skript so geändert, dassequery depends
es Pakete überspringt, von denen alles abhängt, damit ich eine Liste der Pakete erhalten kann, die sicher entfernt werden können, ohne andere Pakete zu beschädigen. Sets ist eine interessante Funktion, konnte jedoch den Anwendungsfall nicht lösen, wenn das im Set enthaltene Paket auch von einem anderen Paket verwendet wird, das nicht im Set enthalten ist. Wenn Sie also das Set entfernen, wird dieses andere Paket beschädigt.www-clients/firefox
zieht eine Reihe von Abhängigkeiten ein, aber nur sehr wenige Pakete hängen davon ab. Wennwww-clients/firefox
undmedia-libs/mesa
im selben Satz sind, können Sie einfach fortfahren und entfernenmedia-libs/mesa
. Wenn Sie die eingestellte Mesa entfernen, wird sie nicht entfernt. Nur wenn Sie es ausführenemerge --depclean
, wird es entfernt und nur, wenn keine andere Welt oder Set-Pakete es benötigen.--oneshot
Flag verwenden müssen, um zu vermeiden, dass Pakete in das "Welt" -Set eingefügt werden (was effektiv bedeutet, dass sie beim nächsten Ausführen entfernt werdenemerge --depclean
), wann Sie benutzerdefinierte Sets verwenden und wann Sie Ihre eigenen Ebuilds schreiben für inoffizielle Software (damit Sie alle Bibliotheksabhängigkeiten dauerhaft installieren können, ohne sie dem "Welt" -Satz hinzuzufügen).Dieses Skript
emerged-after
listet alle Pakete auf, die nach einem bestimmten Datum veröffentlicht wurdenSie müssen
eix
installiert haben (wenn nicht dannemerge eix && eix-update
) und dann zbash emerged-after 31/12/2016
quelle