FreeBSD – Updating Ruby

The default version of Ruby has been bumped to 3.2, which is fine, but /UPDATING no longer includes the steps needed to bump your installed version.

No problem, just scroll down to see what the instructions were for the last revision bump. And then you hit a problem. All the Ruby port bumps refer you to the 2019 entry, which is fab , stepping thru instructions of how to move from 2.4 to 2.5. , however, UPDATING no longer goes all the way back to 2019. It’s been trimmed. A bit of googling and a found the unedited version of UPGRADING which helpfully had the instructions, which for ease I have pasted below and for even easier usage, have amended the instructions for moving between 3.1 and 3.2

20190420:
  AFFECTS: users of lang/ruby24
  AUTHOR: mfechner@FreeBSD.org

The default ruby version has been updated from 2.4 to 2.5.

If you compile your own ports you may keep 2.4 as the default version by adding the following lines to your /etc/make.conf file:

#
  # Keep ruby 2.4 as default version
  #
  DEFAULT_VERSIONS+=ruby=2.4

If you wish to update to the new default version, you need to first stop any software that uses ruby. Then, you will need to follow these steps, depending upon how you manage your system.

If you use pkgng, simply upgrade:
  # pkg upgrade

If you use portmaster, install new ruby, then rebuild all ports that depend on ruby:
  # portmaster -o lang/ruby25 lang/ruby24
  # portmaster -R -r ruby-2.5

If you use portupgrade, install new ruby, then rebuild all ports that depend on ruby:

# pkg delete -f ruby portupgrade
  # make -C /usr/ports/ports-mgmt/portupgrade install clean
  # pkg set -o lang/ruby24:lang/ruby25
  # portupgrade -x ruby-2.5.\* -fr lang/ruby25

and upgraded version is

20240306:
  AFFECTS: users of lang/ruby31
  AUTHOR: me!

The default ruby version has been updated from 3.1 to 3.2.

If you compile your own ports you may keep 3.1 as the default version by  adding the following lines to your /etc/make.conf file:


  DEFAULT_VERSIONS+=ruby=3.1

If you wish to update to the new default version, you need to first stop any software that uses ruby. Then, you will need to follow these steps, depending upon how you manage your system.

If you use pkgng, simply upgrade:
  # pkg upgrade

If you use portmaster, install new ruby, then rebuild all ports that depend on ruby:
  # portmaster -o lang/ruby32 lang/ruby31
  # portmaster -R -r ruby-3.2

If you use portupgrade, install new ruby, then rebuild all ports that depend on ruby:

# pkg delete -f ruby portupgrade
  # make -C /usr/ports/ports-mgmt/portupgrade install clean
  # pkg set -o lang/ruby31:lang/ruby32
  # portupgrade -x ruby-3.2.\* -fr lang/ruby32

OpenSSL Hell

So FreeBSD decided to deprecate OpenSSL 1.1 and amend the base version in ports to OpenSSL 3.0 Its quite a major jump and although MySQL Server 8 is supposed to support various rebuilds from ports kept throwing up unsupported SSL versions when trying to update the various ports that rely on OpenSSL to get a fully working system.

Suffice to say after rolling back to 1.11 I have managed to get everything functioning again, but when it comes to FreeBSD 14 its probably time to do a fresh install with v3.0 as the default and install everything afresh than try and upgrade in place on what is an essential component for a networked device.

Apple and FreeBSD update

The update to PERL also managed to break SSL, with no clear culprit of what had failed. rebuilding all the of PERL dependencies did little to fix it. and oddly Apache still tried to serve up the webpages but in plain text on the internal network.

Going thru the Freebsd-update fetch and install route and rebuilding OpenSSL once the patch update had been applied allow Apache to once again happily serve up the site pages.

iOS 17 is not far away from being launched but I have been running the Beta’s on phone, iPad, Watch and AppleTV quite happily for a month now. After upgrading the AppleTV the big screen FaceTime is a bonus but watching the Apple Launch event now sure I need the finger double tap for the watch or the USB-C connections for iPhone so will wait to see how the prices pan out or if a battery replacement on each will buy another year of service and see what next September brings.

Updating Perl to 5.34

The UPDATING readme for successfully updating all the Perl modules when the default version takes a revision bump is helpful, but could be a damm site more helpful if they just re-posted the original advice, its not as its its pages and pages.

Anyway here is my link to the amended commands to effect the upgrade.

Link to Page

GoAccess parsing issues resolved

Since Webalizer fell into disrepair some years ago, I dabbled with GoAccess for website stats and sort of got it working. Several OS or Apache updates later it decided to stop working and I never found the time to fix.

Well, todays persistent rain and nothing better to do, I resolved to fix why GoAccess refused to parse my Apache logs.

The initial fault seemed to stem from GoAccess not being able to decide if I had CLF ( Common Log Format) or Combined Log Format. Apache was insistent that I had set Combined Log Format looking at httpd.conf, but GoAccess complained on start-up that this was not the case.

As this is a hobby server and I had not needed to rotate the logs for several years I can only guess the httpd-access.log had been corrupted or mixed with CLF at some point, so a forced log rotation stopped the error messages on startup and allowed the basic details of the log to be parsed.

However the referrer and user agent still was not parsed. It seems there is a error in the sample goaccess.conf file and the %R and %u fields need double quotes to be parsed fully. A post way back from 2014 seemed to flag this but the MAN page still does not pick this up, maybe its a FreeBSD specific issues

Anyhoo, fixing this is the Combined Log file format parse string now has the file being parsed happily. The OS and Browser detections still seem a bit pants, Safari and Apple iOS and MacOS seemed to be lumped under Linux, but job for another day.

The analytics can be found here

Solved – MYSQL refusing to start

I had upgraded my version of Mysql Server via the ports a few weeks back and usually ports is very good at addressing any compatibility issues bumping up the versions. A quick read of UPDATING had not flagged any real concerns, but on the reboot Mysql was steadfastly refusing to start. No obvious error messages where thrown and it just silently refused to budge.

Googling presented several solutions, but none palpable (wipe config and dbs and start again). However one suggestion was to check the {hostname}.err file contained within /var/db/mysql and lo and behold a quick TAIL {hostname}.err displayed the error that I have been missing. Namely that query_cache_type=0 and query_cache_size=0 had been deprecated starting with v8 and needed to be deleted from my.cnf file.

Fixing the my.cnf file and a quick service mysql-server start restored my Databases and we are back up and running.

Updating Ruby via Ports

Oh I do hate /usr/ports/UPDATING when they refer you to an entry 3 years prior on how to update the current version of a major revision bump and then you need to dig out and correct the numbers to make it work. So I am just going to down my editing here so I can find more easily.

  If you use portmaster, install new ruby, then rebuild all ports that depend on ruby:

cd /usr/ports/lang/ruby31 and Make install

  # portmaster -o lang/ruby31 lang/ruby30

  # portmaster -R -r ruby-3.1

Hardening the Server

For many months, the nightly security emails have been warning that db5 and gcc9 were out of date and no longer supported. Numerous attempts to remove just threw up package dependencies, so today I set out to tackle them.

gcc9 proved to be the easiest and whatever previous package had been holding it back had clearly gone and a simple sudo pkg delete gcc9 did not throw up any other package dependencies and soon went.

Not so for db5.

Webalizer, apr and apache24 still insisted on db5. All relatively mainstream packages but all still using db5. Several Googles showed others have had similar problems ever since it was first mentioned as deprecated but the amount of error messages had decreased since July,

Adding dbd=18 to make.conf as the default db version seems to have resolved the problem after a Make Deinstall Clean on apr1, apache24 and the webalizer ports. All 3 then re-built nicely and did not call in db5 which previous attempts to remove and rebuild have done.

Hopefully now after fixing PHP 8.1 and now db5 plus gcc9 the server will live on for another year as a test-bed and platform for my ramblings.

Energy Bills

With the current cost of living crisis in the UK, driven by the increase in energy costs I am limiting the amount of hours I leave the server up and online these days. Certainly over the summer when I had little time to dabble with the various services that I run, its make good economic sense to shut the server down if I am not going to be working on its for a few days.

Therefore expect to see erratic uptime for this website/server, unless I take the plunge and migrate all the content to one of the cloud accounts I am already paying for. The downside will be the loss of local services and a properly offline OneDrive copy that I use for backup purposes.