Leaking Free Disk Space

August 3, 2015

I’ve been watching a disk space leakage creep slowly upwards for months now; finally, I figured out where it was going!

Whenever I set up a VPS, I follow Brian Kennedy’s excellent My First 5 Minutes On A Server; Or, Essential Security for Linux Servers. It covers setting up a number of initial tools that make server administration much easier:

Ever since I set up my VPS, I’d seen the disk space creep up in the daily logwatch digest. I had looked a few times and figured it must be related to some sort of misconfiguration of the Ruby app server I have running on it right now.

Recently, it got up to more than half of my disk space gone. For a VPS that I used maybe twice a month, this was ridiculous. I investigated once more and finally came up with the culprit: unattended-upgrades wasn’t autoremoving packages. I had gigabytes worth of packages that could be autoremoved.

Solution

There’s a one-line config file fix. Add this to /etc/apt/apt.conf.d/50unattended-upgrades:

/etc/apt/apt.conf.d/50unattended-upgrades
...
// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "true";
...

Update: It looks like a bug in unattented-upgrades is preventing it from automatically removing header packages. For the time being you will have to either manually auto-remove these packages, or add sudo apt-get autoremove -y to your crontab.

Update: The bug has been addressed and closed. It now correctly removes header packages!

Read More

Intersection Types in Sorbet are Surprisingly Common

Conventional knowledge is that union types are common and intersection types are rare. But actually that’s not the case—intersection types show up in nearly every program Sorbet type checks thanks to control flow. Continue reading

What makes type checking Ruby hard?

Published on December 29, 2019

Surgery on Code from the Command Line

Published on July 30, 2019