IBM i Open Source Updates October & November 2020
October was a pretty slow month with mostly low-level improvements so I figured I'd combine them with the November updates. November turned out to be a pretty big, so here we go!
New Packages
PCRE2
PCRE stands for Perl Compatible Regular Expressions, and is a regular expression library. While we previously shipped PCRE1, that version has been marked stable and is no longer developed. Instead, focus shifted to PCRE2 and many packages will only work with that version.
dos2unix
The dos2unix project provides a set of simple conversion utilities which convert newlines in files between DOS/Windows (CRLF), Unix (LF), and Classic Mac OS (CR).
If you ever run in to problems transferring text files from a Windows system to IBM i and trying to use it in PASE, a simple fix might be running it through dos2unix:
dos2unix windows-file.txt
Snappy
Snappy is a newer compression algorithm and library from Google, which aims for very high speed with reasonable compression. Unlike many other compression tools we've provide in the past such as gzip, xz, zstd, bzip2, etc. snappy does not provide a command line tool — only a library.
MongoDB C Driver
mongoc is a MongoDB client library. This allows applications and language packages to connect to MongoDB instances. While this won't help you run MongoDB on IBM i, it will allow you to use MongoDB-based applications connecting to MongoDB instances on other systems.
mongoc also provides libbson, which is a library for building, parsing, and iterating BSON documents.
Unfortunately, the current build is missing libmongocrypt, so it does not yet support "Client-Side Field Level Encryption" but we are working on adding this for the future.
sshpass
sshpass is a tool for performing
password authentication using keyboard-interactive in a non-interactive manner.
Ideally, you would use public key authentication with SSH keys or certificates
instead, but sometimes this is not available. Many users already use expect
to
do similar things, but now there is another option.
MariaDB 10.3
This is by far the biggest update of October and November!
MariaDB is an open source database based off of MySQL
from the original developers of MySQL. Zend has long shipped a version of
MySQL/MariaDB in the ZendDBi product,
but now it's easier than ever to get MariaDB running on your system! The rpm
version also has more modern defaults, such as using utf8mb4
as the default
charset so you can store all the emoji you want 🤗 🌈 🚀!
One thing to note is that the rpm version we provide does not include the Db2 storage engine. If that is something you need, please contact me directly and we can discuss further.
Package Updates
autoconf / automake Dependency Fixes
The autoconf package now requires m4-gnu and automake now requires autoconf, fixing some package dependencies.
libutil 0.9
libutil has been updated to 0.9, which implements the GNU libc extension
functions asprintf
and vasprintf
. For more info see the Linux man
page
SSL and zstd Support in Rsync
rsync has been updated to 3.2.3, which now supports SSL encrypted connections to an rsync daemon as well as using zstd compression in addition to the existing zlib compression.
Wget built with PCRE2
Wget has been rebuilt with PCRE2 support. This allows you to use Perl-style
regexes with the --accept-regex
and --reject-regex
options.
git built with PCRE2
git has been rebuilt with PCRE2 support. You can now specify --perl-regexp
to
various git commands to use Perl-style regexes.
rpm-build Dependency Fixes
The rpm-build package now requires the following packages:
- bash
- coreutils-gnu
- findutils
- grep-gnu
- patch-gnu
- sed-gnu
- gzip
- tar-gnu
- make-gnu
Various build scripts assume these packages are installed or assume they are using GNU tools, which may behave differently than PASE tools.
In addition, it recommends the following packages:
- bzip2
- xz
- unzip
These packages are optional and only needed when builing packages whose source archives are compressed using one of those packages. Currently, this recommendation has no effect, since yum does not support "Recommends" rpm dependencies.
curl-devel Dependency Fixes
The libraries curl links with — so called "private libraries" — were removed
from the output of curl-config --libs
. Packages which link to curl only need
to link to libcurl, not the libraries which curl itself links to. This could
cause linker errors when building against libcurl and libssh2-devel,
openssl-devel, and zlib-devel were not also installed.
yum *ALLOBJ Check Fix
On some systems, yum would fail when attempting to check if the user has *ALLOBJ
authority:
File "/QOpenSys/pkgs/bin/yum", line 29, in <module>
yummain.user_main(sys.argv[1:], exit_code=True)
File "/QOpenSys/pkgs/share/yum-cli/yummain.py", line 288, in user_main
errcode = main(args)
File "/QOpenSys/pkgs/share/yum-cli/yummain.py", line 98, in main
base.getOptionsConfig(args)
File "/QOpenSys/pkgs/share/yum-cli/cli.py", line 230, in getOptionsConfig
self.conf
File "/QOpenSys/pkgs/lib/python2.7/site-packages/yum/__init__.py", line 897, in <lambda>
conf = property(fget=lambda self: self._getConfig(),
File "/QOpenSys/pkgs/lib/python2.7/site-packages/yum/__init__.py", line 357, in _getConfig
self.conf.has_root_authority = misc.hasRootAuthority()
File "/QOpenSys/pkgs/lib/python2.7/site-packages/yum/misc.py", line 103, in hasRootAuthority
has_auth = _root_authority_cache[euid] = hasAllObjectAuthority()
File "/QOpenSys/pkgs/lib/python2.7/site-packages/yum/misc.py", line 71, in hasAllObjectAuthority
syscalls._RSLOBJ2(sysptr, ctypes.c_ushort(0x0201), b'QSYCUSRS', b'QSYS')
File "/QOpenSys/pkgs/lib/python2.7/ctypes/__init__.py", line 379, in __getattr__
func = self.__getitem__(name)
File "/QOpenSys/pkgs/lib/python2.7/ctypes/__init__.py", line 384, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError
This has been fixed by loading the various ILE syscalls from libc.a instead of /unix.
Other Updates
- nodejs12 was updated to 12.19.1.
- nodejs14 was updated to 14.15.1.
- python3 was updated to 3.6.12
- libutil was updated to 0.9.0.
- freetype was updated to 2.10.4
- nano was updated to 5.3 and UTF-8 support was enabled.
Closing
We had some big splashy new packages, some incremental version bumps, bug fixes, and some quality of life improvements. A solid update before the coming holiday wind down.