If you follow
me on twitter, you already know I ran into some trouble compiling Ruby and OpenSSL the other day. Calling it "Some Trouble" might be a bit of an understatement. The next morning, I likened it to this title bout:
Not only was Ruby and OpenSSL giving me trouble, in my quest to get it working, I totally messed up
everything that depended on OpenSSL.
More...
Email with TLS? Gone. SSH? Yep, gone as well.
Tech support's first recommendation was to requisition a new server.
Of course I wasn't going to accept that for an answer -- I'm the guy who, when someone tells me something is impossible, I cannot help but find a way to do it.
It turned out that all I had done was mess up the configuration of where dynamically linked code looks for the shared libraries it's supposed to use.
You can avoid that:
- Don't mess with the LD_LIBRARY_PATH environment variable in a way that makes it persist longer or outside the scope of your compilation. For example,
export LD_LIBRARY_PATH=/path/to/non_standard_lib
would be a bad line all on it's own. It would be worse to stick it in your .bash_profile
. Just run it on the same line where you do you configuring or compilation, and don't let it persist outside of that.
-
If there is a setting like the
crle
command on Solaris, make sure you read the man pages. For example, there's no way to simply add a library path -- you need to include the default ones yourself (if you still wish to use the default paths). So make sure you write them down correctly. In the end, I didn't write them down correctly, so all that was needed to get the system back to working the way it was, was to delete the ld.config file (which sets the system back to default).
What other ways can you mess it up? (Let me know in the comments!)
Anyway, along this journey I got to use
ldd
, the command line tool I've always wanted on Mac when I had problems with gems being unable to compile their native extensions. For the Mac, you can use
otool
.
Basically, they tell you which libraries a compiled piece of code is dependent on, and where it is looking for those libraries on disk. In the case of
ldd
you can use the -r option
ldd -r /path/to/binary
which will let you know what symbols can't be found, which was helpful in diagnosing some of my issue.
I just wanted to let you know about these useful tools in case you were unaware. Being able to check the dependencies got me out of a tight spot, so maybe it will help you in the future as well.
Hey! Why don't you make your life easier and subscribe to the full post
or short blurb RSS feed? I'm so confident you'll love my smelly pasta plate
wisdom that I'm offering a no-strings-attached, lifetime money back guarantee!
I recently got the
EEE Box "Nettop PC" (Linux version) and was surprised to find
Red Flag Linux as the preinstalled flavor of choice.
My goal is to use it as a
wireless NAS, but keep it both expandable with external drives and available for use in
home automation.
source code for r-house available via github
More...
Skip to instructions
Back to the Linux EEE Box: I didn't expect to have a problem (neither with the OS nor changing it), but the "User' s Manual" came with instructions for Windows XP only. Booting to the Red Flag Linux distribution was a chore. I had to:
- Figure out that you login with username "root" and no password
- Thereupon be presented with the command prompt
- Find out which desktop environment it uses and try to start it, unsuccessfully
I knew the thing didn't have an optical drive, but I'm so accustomed to that process that I downloaded and burned an ISO of
lubuntu anyway. After some self-imposed hassle of locating a USB thumbdrive, I was able to install a bootable copy onto it. Then I plugged it into the EEE Box.
What happened?
Art as Idea: Nothing, Joseph Kosuth, 1968 /Photo: NATIONAL GALLERY OF ART
You'd have thought that plugging in the bootable USB drive would be enough. It didn't find it. I checked the BIOS, and it was set to use USB as the first boot device. I tried a few different configurations before stumbling on the epiphany that solved all of my problems:
Even though I had planned on starting with a fresh install of a *nix, I was stunned at how obscured it was, despite the fact that it turned out super-easy. Here are the steps I used:
- Download the Pen Drive Linux Universal USB-Installer (optionally download your distro of choice -- if not, it will allow you the option to do so)
- Use the installer above to put your linux distro on the USB stick
- Plug the USB stick into the EEE Box and (re)boot it, pressing F8 on the keyboard while it loads
- Select the USB bootup option that appears
- Install that version of Linux as you'd normally expect
Since it took me so long to find my answers, I'm hoping this helps you find yours. Let me know in the comments below.
Some links in this post are affiliate links!