I was upgrading my jails, when I noticed that the WriteFreely instance for օրագիր.հայ was not running. I jexec’d into the jail and noticed that the writefreely process was not running at all, doing a simple service writefreely start made it work. Why?
Turns out that WriteFreely needs MySQL to be running during startup, and I assume it wasn’t. By running rcorder I was able to see the boot process.
# rcorder /usr/local/etc/rc.d/* 2>/dev/null writefreely rsyncd mysql-server garb
So, my first instinct was to patch the /usr/local/etc/rc.d/writefreely script and add mysql into the REQUIRE line, but then I thought to myself, I can’t be the only person who had this problem, right? I mean, I know that the script will be overwritten during the next upgrade. What’s the actual solution here?
After searching a bit, I found the article Override rc order in FreeBSD, so based on that, I created the following file: /usr/local/etc/rc.d/__writefreely which has the following content
#!/bin/sh # PROVIDE: __writefreely # REQUIRE: mysql # BEFORE: writefreely
This is a much cleaner way to do things, let’s check the rcorder again
# rcorder /usr/local/etc/rc.d/* 2>/dev/null mysql-server rsyncd garb __writefreely writefreely
Much, much better. After restarting the jail, however, I noticed that WriteFreely is still not running… huh?
Oh, of course, I just needed to do chmod +x __writefreely
And now it works.