Holy grail of packaging; yum history

Through the years I have often found myself asking this question “Which packages have I installed?” which comes in handy when you want to reinstall your system from scratch, or want to remove cruft. Unfortunately there has never been a proper way to answer it. One way would be to save somewhere all the packages that came with the installation, and compare with the current ones. However you would also see the packages that where installed as dependencies, which might be a lot. But finally, I noticed a new feature (to me) of yum; history.

In itself it’s very simple; store the history of package management, however, somebody decided to differentiate manually installed packages (Install) from packages installed as dependencies (Dep-Install), updates, and other stuff, and that’s all we need to do the magic.

Here’s a little script that simply goes through the history and finds which packages you installed (and are still installed) and list them in chronological order.

In order to demonstrate how is this useful I’ll go through my packaging history and try to explain it. It’s not that interesting but the post is too short otherwise :p Also, you can imagine what kind of findings you would get on your own system.

hunspell-en (noarch)

No idea.

hwloc (x86_64)

Very nice package to see how my new laptop CPU is organized 🙂 (how many cores and so on)

rpmfusion-free-release (noarch)
rpmfusion-nonfree-release (noarch)

Not everything is free in life.

kmod-nvidia (x86_64)
nvidia-settings (x86_64)

I want 3D stuff on my machine.

xfconf (x86_64)
mousepad (x86_64)
orage (x86_64)
thunar-archive-plugin (x86_64)
xfce4-settings (x86_64)
xfce4-session-engines (x86_64)
xfce4-session (x86_64)
xfce4-appfinder (x86_64)
Thunar (x86_64)
desktop-backgrounds-compat (noarch)
xfwm4-theme-nodoka (noarch)
xfce4-icon-theme (noarch)
xfce-utils (x86_64)
thunar-volman (x86_64)
Terminal (x86_64)
xfdesktop (x86_64)
xarchiver (x86_64)
libxfcegui4 (x86_64)
xfce4-mixer (x86_64)
imsettings-xfce (x86_64)
libxfce4menu (x86_64)
xfce4-panel (x86_64)
xfwm4 (x86_64)
libxfce4util (x86_64)

I decided to step away from GNOME and give XFCE a try.

google-chrome-stable (x86_64)

The best browser, of course.

wine-pulseaudio (x86_64)
wine (x86_64)

I want to run Starcraft 2 🙂

xorg-x11-drv-nvidia-libs (i686)

It turns out wine needs 32-bit packages.

xchat (x86_64)

Need some chatting.

vim-X11 (x86_64)
vim-enhanced (x86_64)
gitk (noarch)
git (x86_64)
zsh (x86_64)

Time to start some hacking I guess.

gcc (x86_64)
kernel-devel (x86_64)
mesa-libGL-devel (x86_64)
mesa-libGL-devel (i686)

Looks like I want to compile something.

gnome-mplayer (x86_64)

And maybe I want to watch some TV series or something.

akmod-nvidia (x86_64)

This is the best way to get nvidia kernel modules, specially if you build your own kernels.

libmp4v2 (x86_64)

I need mp4info a lot, mostly for work-related stuff (to check clips).

isync (x86_64)
socat (x86_64)
mutt (x86_64)
notmuch (x86_64)
xapian-core-devel (x86_64)
gmime-devel (x86_64)
libtalloc-devel (x86_64)
gcc-c++ (x86_64)
msmtp (x86_64)

Time to steup my mail stuff; sometimes I use mutt, but mostly I use notmuch (compile and hack), msmtp to send mails through multiple accounts, and isync to synchronize my IMAP folders.

google-droid-serif-fonts (noarch)
google-droid-sans-mono-fonts (noarch)
google-droid-sans-fonts (noarch)

I like these fonts 🙂

git-email (noarch)
davfs2 (x86_64)

I probably need to get some work done; send patches, mount a shared folder.

ruby (x86_64)
ruby-irb (noarch)
rubygems (noarch)
ruby-devel (x86_64)

I love my ruby scripts 🙂

openoffice.org-langpack-en (x86_64)
openoffice.org-calc (x86_64)

Agh, somebody forced me to open some Microsoft document.

gstreamer-devel (x86_64)
gstreamer-ffmpeg (x86_64)
ffmpeg (x86_64)
ffmpeg-devel (x86_64)
gstreamer-plugins-base-devel (x86_64)

Looks like I want to do some GStreamer development, and watch some stuff.

libtool (x86_64)
gettext-devel (x86_64)
bison (x86_64)
flex (x86_64)
sqlite-devel (x86_64)
libxslt-devel (x86_64)
libglade2-devel (x86_64)
startup-notification-devel (x86_64)
GConf2-devel (x86_64)
intltool (noarch)
libSM-devel (x86_64)
dbus-glib-devel (x86_64)
libwnck-devel (x86_64)
rpmreaper (x86_64)
lzop (x86_64)
gnome-password-generator (noarch)
lua-devel (x86_64)
popt-devel (x86_64)
ncurses-devel (x86_64)
libcurl-devel (x86_64)
openssl-devel (x86_64)
expat-devel (x86_64)
perl-ExtUtils-MakeMaker (noarch)
gtk-doc (noarch)
libsoup-devel (x86_64)
libnice-devel (x86_64)

This is interesting. All these dependencies probably just to compile some GUI crap. I should remove all that stuff.

I think that’s enough to demonstrate my point, so I’ll just skim through the rest.

picocom (x86_64)

Better than minicom 🙂

asciidoc (noarch)

Very nice tool to generate documentation from plain ascii files.

monotone (x86_64)
pidgin (x86_64)
libpurple-devel (x86_64)

Agh, I was forced to install Pidgin, probably to test some msn-pecan stuff.

qemu-kvm (x86_64)
mingw32-filesystem (noarch)
mingw32-gcc (x86_64)
mingw32-binutils (x86_64)
mingw32-crossreport (noarch)
mingw32-nsis (x86_64)
mingw32-w32api (noarch)
mingw32-runtime (noarch)
mingw32-nsiswrapper (noarch)
mingw32-gettext (noarch)
mingw32-glib2 (noarch)
mingw32-libxml2 (noarch)

I probably need to cross-compile msn-pecan for Windows and test it with QEMU.

alsa-plugins-pulseaudio (i686)

Probably needed for wine, or maybe Android’s SDK.

The rest is not interesting, but suffice it to say that there’s a lot of stuff that can be removed 🙂

One thought on “Holy grail of packaging; yum history

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.