One day as I get to work and pull out my computer, I boot it up only to discover that the GUI interface of my computer would not load. Instead, I was left with Linux's Window's-equivalent blue screen of death and a terminal.

The day before I remembered installing a bunch of new packages and some repository-external packages to set-up pyqtgraph and attempt to try and activate its 3-D volume rendering which wasn't working for some reason. Apparently, something about making these changes completely disabled the GUI part of my machine after rebooting. I needed to remove the package(s) that was causing the error.

APT is the go-to package manager for Debian and Debian derivative systems such as Ubuntu and Linux Mint. While apt-get provides numerous of features, I discovered surprisingly that apt-get lacked a feature that removes all changes within a set period of time, such as a request to restore your package state to what it was 12 hours ago when it was working.

Users over the Internet suggest that the best possible way to go about restoring your package configuration to a state earlier would be to tediously read an ugly log file and manually go through and make the countless changes yourself. So, instead, my team and I wrote a Python script and text-based GUI that makes the package changes for a user given the amount of hours to go back in time with. Given this input, the program would allow the user to revert any installs/removes done via apt-get over the specified time frame.

This is a feature that can be utilized by countless users and is fundamentally useful for any APT users (or, really, anyone who uses Debian, Ubuntu, Linux Mint, and others).


GNU/Linux is the operating system playground for the hacker's drive to experiment and find new ground. Users shouldn't have to always be super careful about packaging. The average user isn't running a server that has dire consequences for something going wrong. Having a tool that supports a GNU/Linux hacker drive to experiment.

As well, managing packages is something more unique to GNU/Linux operating systems and as such it is a barrier to new users. New users shouldn't have to go through log files to fix mistakes. Having features that support new users with extra functionality that eases their entry into GNU/Linux would help foster more of its use and implementation.

What's next?

Eventually, we'd like to get full integration in C++ to the APT package. If our idea and/or code were to be added, we would have made a contribution to a core Linux package found on most Linux systems by default.

Built With

Share this project: