The Boston Diaries

The ongoing saga of a programmer who doesn't live in Boston, nor does he even like Boston, but yet named his weblog/journal “The Boston Diaries.”

Go figure.

Saturday, March 03, 2018

Yak Shaving

I hate yak shaving.

I made a small fix to mod_blog, and when I went to update the copy on GitHub, it failed. All I got back was: “no kex alg.”

Ah, an error message from the Ken Thompson School of Error Messages.

Analyzing the tea leaves, it seems my version of openssl was, shall we say, a bit older than 20 minutes? And something happened at GitHub to precipitate the change. What, I could not say (perhaps?).

So, to get back to where I was a few days ago:

  1. Download the latest version of openssl.
  2. Run the configuration script, only to find out my version of Perl was too old.
  3. Download latest version of Perl.
  4. Configure Perl.
  5. Attempt to make Perl.
  6. Track down error message from compiling Perl.
  7. Reconfigure Perl, this time to use C99 when compiling.
  8. Attempt to make Perl. Success!
  9. Hmm … make tests? Sure, why not?
  10. Wait a bazillion hours while the tests run.
  11. See that five tests out of 3000+ failed.
  12. Figure that's close enough for government work, and install Perl anyway.
  13. Reconfigure openssl.
  14. Make openssl.
  15. Install openssl.
  16. Recompile a program I wrote that uses openssl.
  17. Get confused as to why it's not linking to openssl yet it still works.
  18. Find several previous attempts to install openssl and decide to remove them.
  19. Then suddenly realize that I was too hasty and that bind will no longer start.
  20. Add recompile of bind to list of taks I need to do.
  21. Figure out my program is being statically linked to a previous version of openssl.
  22. Put that problem aside. Download latest version of openssh.
  23. Configure openssh, only to find it doesn't support the latest version of openssl.
  24. Unisntall latest version of openssl.
  25. Download latest previous version of openssl.
  26. Configure latest previous version of openssl.
  27. Make openssl.
  28. Install openssl.
  29. My program is still being statically compiled to older version of openssl.
  30. Force the issue—it fails to link.
  31. Realize that the latest previous version of openssl installed in /usr/local/ssl instead of /usr/local.
  32. Reconfigure latest previous version of openssl to install in /usr/local.
  33. Make openssl.
  34. Install openssl.
  35. Try linking my program again.
  36. Find out that by default, openssl only generates a static library.
  37. Reconfigure openssl to generate dynamic libraries.
  38. Make openssl.
  39. Install openssl.
  40. Get my program to dynamically link to /usr/local/lib/, although I'm still forcing that.
  41. Configure openssh. This time it works.
  42. Make openssh.
  43. Install openssl.
  44. Run ssh -T It works!
  45. Carefully compare previous configuration for sshd to new version of sshd.
  46. Carefully tweak new configuration of sshd.
  47. Copy server keys so new configuration can see them.
  48. Test new sshd. It works.
  49. Update start up script to run new sshd.
  50. Realize I have to recompile git to use the updated openssl.
  51. Clean out previous object files in my local copy of git.
  52. Make git.
  53. Install git.
  54. Done!
  55. No, wait … there was something … what was it?
  56. Oh, right! bind!
  57. Clean out previous object files in my local copy of bind.
  58. Make bind.
  59. Stop current version of bind.
  60. Install new bind.
  61. Start up new version of bind.
  62. Start breathing again when it works.
  63. Decided to remove the old openssl static library; now programs will dynamically link to the latest previous version of openssl.
  64. Done!

Now I can update my repository on Github!

I realize that I bring this upon myself by avoiding the whole “upgrade every 20 minutes” schtick, but I believe in the “if it ain't broke, don't fix it” mentality and that the computer is here for my needs, I'm not here for the computer's needs.

Besides, the last time I indiscriminately upgraded, it did not go well

Obligatory Picture

[The future's so bright, I gotta wear shades]

Obligatory Contact Info

Obligatory Feeds

Obligatory Links

Obligatory Miscellaneous

You have my permission to link freely to any entry here. Go ahead, I won't bite. I promise.

The dates are the permanent links to that day's entries (or entry, if there is only one entry). The titles are the permanent links to that entry only. The format for the links are simple: Start with the base link for this site:, then add the date you are interested in, say 2000/08/01, so that would make the final URL:

You can also specify the entire month by leaving off the day portion. You can even select an arbitrary portion of time.

You may also note subtle shading of the links and that's intentional: the “closer” the link is (relative to the page) the “brighter” it appears. It's an experiment in using color shading to denote the distance a link is from here. If you don't notice it, don't worry; it's not all that important.

It is assumed that every brand name, slogan, corporate name, symbol, design element, et cetera mentioned in these pages is a protected and/or trademarked entity, the sole property of its owner(s), and acknowledgement of this status is implied.

Copyright © 1999-2023 by Sean Conner. All Rights Reserved.