As some of you know, I maintain the LibreLAMP custom LAMP stack, modern Apache / MariaDB / PHP built against LibreSSL.

Currently it is build against LibreSSL 2.6.4 in a CentOS 7.4 environment. The packages work in CentOS 7.5 with one caveat – CentOS 7.5 ships with a version of Inkscape that is the same version as what LibreLAMP but it looks newer to RPM, but it links against against an older ImageMagick than what LibreLAMP has.

So as long as you do not need Inkscape on your server, the packages work fine and if you do need Inkscape on your server, just exclude inkscape from the yum updates and use mine and they work fine.

However I do need to rebuild my LAMP stack, freshen the Apache and MariaDB and PHP and fix the Inkscape issue.

Mirroring CentOS

Financially, I’m poor. I can not afford broadband and Internet over my cell phone, once I’ve used up 15 GB (less than most people use in a couple days) I get restricted to 60 kB/s which is super slow.

No one has donated to help fund the repository in over a year, so updating wasn’t all that important to me, but it did need to be done.

Since CentOS updated to 7.5 I needed to mirror the new CentOS Base and Updates and the EPEL repo because to build packages in mock, you really need a local mirror to do it from.

That took forever but I finally got it and could begin.

LibreSSL released the 2.7 tree as stable since the last time I updated LibreLAMP, updating that was fairly easy. The issue was MariaDB.

MariaDB

This is where things got interesting.

Pre mass update, LibreLAMP is at MariaDB 10.1.31 which is, well, much newer than MariaDB is stock CentOS but it is getting old now.

Part of me wanted to go to 10.3 but the biggest selling points in 10.3 while they are a huge benefit to some, are not a benefit to me, and since no one is funding me, I decided to go with 10.2 series instead for now, let 10.3 tree mature a bit.

So I grabbed the Fedora src.rpm for 10.2.15 (latest) over my slow Internet and started porting it to build in CentOS 7.

The mariadb-libs package would not build, even though the Fedora spec file indicated it should in CentOS 7.

Minor mod to the spec file to include CentOS 7 in the versions for which not to build the libs sub-package, and it built all the way.

Then I did a build with all the very pedantic tests turned on, and was over-joyed when they built. WooHoo!

Spent about an hour trying to figure out why MariaDB wasn’t building the libmysqlclient.so.18 shared library, I fucking hate their install documentation, and I finally found out why.

MariaDB 10.2 series simply doesn’t build that library anymore, like at all.

The Fedora spec file was wrong to even have a libs sub-package supposedly built for older versions of Fedora and CentOS. They just updated the 10.1 spec file to 10.2 without adapting that part of it.

So… CentOS 7 really need that library, to get it, I have to use a different package – mariadb-connect-c and create a symlink it to libmariadb.so.3 which is suppose to be API/ABI compatible.

Finally got that done and working.

Then have to have the MariaDB common subpackage, which now obsoletes the libs package, require the separately built connect package.

I think I have it all worked out now.

When people using LibreLAMP update – the common subpackage will properly obsolete the libs sub-package so the needed shared library won’t be there, but the common subpackage will require the connect package which has a simlink and specifically provides the shared library, so other packages that need that now obsolete library will still have it.

New packages built will correctly link against the libmariadb.so.3 library and not need the symlink, but CentOS/EPEL provided packages won’t be linked against that library, they will need the symlink.

Waiting…

I haven’t tested it works as intended yet, but obviously will before pushing these updates. Right now, after all the final adjustments to the MariaDB spec file, it is building. The test suite literally takes hours. And after the build is complete, I build it again using the src.rpm created from the first round, just because it ensures the src.rpm is what it is suppose to be. Really don’t need to, but I always do.

So… within a few hours, the hopefully final build starts, and a few hours later, the MariaDB part is finished.

Today, all day today was dedicated to MariaDB.

I really wish the people using my builds understood how much effort goes into it and would donate something back.

paypal@domblogger.net works for that.

4 thoughts on “Updating LibreLAMP

  1. Once MariaDB 10.2.15 fiishes its build cycle, I’ll build anope – and if all goes according to plan, anope should be linked against libmariadb.so.3 instead of libmysqlclient.so.18 but we’ll see… and then I’m going to bed.

  2. Fuck yeah!
    rpm -qp –requires anope-mariadb-2.0.6-2.el7_5.awel.libre.x86_64.rpm
    anope = 2.0.6-2.el7_5.awel.libre
    libc.so.6()(64bit)
    libc.so.6(GLIBC_2.14)(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libm.so.6()(64bit)
    libmariadb.so.3()(64bit)
    libmariadb.so.3(libmysqlclient_18)(64bit)
    libpthread.so.0()(64bit)
    libpthread.so.0(GLIBC_2.2.5)(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(GLIBCXX_3.4)(64bit)
    libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
    libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
    rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1 -=- It worked 😀

  3. Building postfix revealed some packaging issues with MariaDB and the MariaDB C Connector. Not build issues, packaging issues.

    Basically the macros in the mariadb spec file that were suppose to detect and set the provides on mysql-devel failed to do what they were suppose to do. This bug was not detected when building anope because in that case I explicitly changed the BuildRequires.

    So I fixed the issue with MariaDB and it worked, then I fixed the postfix spec file so it would explicitly call mariadb-connector-c-devel as a BuildRequires.

    There probably are one or two other tweaks to the mariadb spec file I want to make, but at least the major issues are done.

    Currently building proftpd which takes awhile because I have it generate custom DH parameters during build.

    But I’m getting very close to having everything build except for Apache and PHP – those I always do last.

    I do have the current dovecot but a newer version is in testing, if it is released before I’m finished I’ll update that again as well.

Leave a Reply

Your email address will not be published. Required fields are marked *

Anonymity protected with AWM Pluggable Unplugged