May 27, 2014
Two weeks ago, I decided to start over with Raspberry Pi. Of which, even if you don't have a lot of money, isn't that hard to do.
This time around, I am logging all of my steps and installing more packages from source. Though, next time, I might install everything from source. A file will be posted eventually showing all those steps as of the second time around. A few things that so far have been installed from source, and not the Raspbian/Ubuntu/Debian include Vim, SQLite3, PCRE, and Nginx.
I was worried that I may have broke the SQLite resources which for some foolish reason Raspbian depends on the same one that Debian and Ubuntu uses which is over two years old. In fact, a lot of what Debian-based Linux distros rely upon aren't updated to the most recent stable version. I'm not asking for the bleeding-edge experimentals, only that anything that has suffered a significant security issue or bug fix be installed.
When establishing that a computer's purpose be designated as a webserver, or anything that accesses any public network like the Internet, having up to date software isn't a luxury, it is a pertinent necessity.
This does remind me that if I do happen to try installed Raspbian the third time around, I should install OpenSSL completely from source next time around. Why stop at that? What else does Nginx rely on? GCC, PCRE, zlib, I think I may have saw Sed and Grep? Aw, heck, let's build it all from scratch!. Personally, I would like to see a flow chart indicating the order of which things should be installed. The Linux kernel would likely be the top node in that chart. More importantly, what if one of the initial steps of this project was to Fork this guy's github?
What I do know is that installing software on Linux can be a complex process especially if makefiles aren't thorough and include everything that is necessary to not just install new software but to replace older software provided by the system. SQLite is a perfect example of that since once you are done doing the
./configure && make && sudo make install part and try to run
sqlite3, you'll get a warning saying that
SQLite header and source mismatch, meaning, that unless you replace the version in your Raspberry Pi's system library directory (
/usr/bin/arm-linux-gnueabihf/libsqlite3.so.0.8.6) with a softlink to the one you installed (
/usr/local/lib/libsqlite3.so.0.8.6), SQLite won't work. But there is a caveat to doing this, one that I was warned about and hope not to encounter. There is the potential to screw up everything the next time Raspbian does upgrade SQLite3. I'm also wondering if I should have given
sudo ldconfig a try first before doing this. Like I said, nothing terrible has happened yet, and if it does I am prepared to try again and can afford to start over.
But the RaspberryPi is a learning computer, that is the more you use it the more you learn what do do and what not to do. To borrow a quote from the Hacker's Manifesto "If [the computer] makes a mistake, it's because I screwed it up." And that's the best part. With Raspberry Pi, the computer can afford to make mistakes and you do not need to feel remorse for screwing things up. It's how programming should be. If it were any better, backing up the SD card would be as simple as making a copy of a file. In fact, that's what I should do next week, because it doesn't take much to kill a perfectly good SD Card but it can be cloned, reformatted, and reused. Just make sure you have a copy when the time comes.