I’m using IPv6 on a server — the server wasn’t using NetworkManagement, so I’ve configured it directly in the network script file.
After restarting the network (systemctl restart network), I was able to ping other IPv6 addressed equipment.
We occasionally get alerted that our /var volume is over 80% full … which generally means /var/log has a lot of data, some of which is really useful and some of it not so useful. The application-specific log files already have the shortest retention period that is reasonable (and logs that are rotated out are compressed). Similarly, the system log files rotated through logrotate.conf and logrotate.d/* have been configured with reasonable retention.
Using du -sh /var/log/ showed the /var/log/sa folder took half a gig of space.
This is the daily output from sar (a “daily summary of process accounting” cron’d up with /etc/cron.d/sysstat). This content doesn’t get rotated out with the expected logrotation configuration. It’s got a special configuration at /etc/sysconfig/sysstat — changing the number of days (or, in my case, compressing some of the older files) is a quick way to reduce the amount of space the sar output files consume).
There is a great deal of documentation available for building Gerbera from source on a variety of Linux flavors. Unfortunately, Fedora isn’t one of those (and the package names don’t exactly match up to let you replace “apt-get” with “yum” and be done). So I am quickly documenting the process we followed to build Gerbera from source.
The Fedora build of Gerbera has the binaries in /usr/bin and the manual build places the gerbera binary in /usr/local/bin — the build updates the unit file to reflect this change, but this means you want to back up any customizations you’ve made to the unit file before running “make install”.
You need the build system — cmake, g++, etc and the devel packages from the following table as required by your build options
Library | Fedora Package | Required? | Note | Compile-time option | Default |
libpupnp | libupnp-devel | XOR libnpupnp | pupnp | ||
libnpupnp | Build from source (if needed) | XOR libupnp | I was only able to locate this as a source, not available from Fedora repos | WITH_NPUPNP | Disabled |
libuuid | libuuid-devel | Required | Not required on *BSD | ||
pugixml | pugixml-devel | Required | XML file and data support | ||
libiconv | glibc-headers | Required | Charset conversion | ||
sqlite3 | sqlite-devel | Required | Database storage | ||
zlib | zlib-devel | Required | Data compression | ||
fmtlib | fmt-devel | Required | Fast string formatting | ||
spdlog | spdlog-devel | Required | Runtime logging | ||
duktape | duktape-devel | Optional | Scripting Support | WITH_JS | Enabled |
mysql | mariadb-devel | Optional | Alternate database storage | WITH_MYSQL | Disabled |
curl | libcurl-devel | Optional | Enables web services | WITH_CURL | Enabled |
taglib | taglib-devel | Optional | Audio tag support | WITH_TAGLIB | Enabled |
libmagic | file-devel | Optional | File type detection | WITH_MAGIC | Enabled |
libmatroska | libmatroska-devel | Optional | MKV metadata required for MKV | WITH_MATROSKA | Enabled |
libebml | libebml-devel | Optional | MKV metadata required for MKV | WITH_MATROSKA | Enabled |
ffmpeg/libav | ffmpeg-devel | Optional | File metadata | WITH_AVCODEC | Disabled |
libexif | libexif-devel | Optional | JPEG Exif metadata | WITH_EXIF | Enabled |
libexiv2 | exiv2-devel | Optional | Exif, IPTC, XMP metadata | WITH_EXIV2 | Disabled |
lastfmlib | liblastfm-devel | Optional | Enables scrobbling | WITH_LASTFM | Disabled |
ffmpegthumbnailer | ffmpegthumbnailer-devel | Optional | Generate video thumbnails | WITH_FFMPEGTHUMBNAILER | Disabled |
inotify | glibc-headers | Optional | Efficient file monitoring | WITH_INOTIFY |
Then follow the generalized instructions — cd into the folder where you want to run the build and run (customizing the cmake line as you wish):
git clone https://github.com/gerbera/gerbera.git mkdir build cd build cmake ../gerbera -DWITH_MAGIC=1 -DWITH_MYSQL=1 -DWITH_CURL=1 -DWITH_INOTIFY=1 -DWITH_JS=1 -DWITH_TAGLIB=1 -DWITH_AVCODEC=1 -DWITH_FFMPEGTHUMBNAILER=0 -DWITH_EXIF=1 -DWITH_EXIV2=1 -DWITH_SYSTEMD=1 -DWITH_LASTFM=0 -DWITH_DEBUG=1 make -j4 sudo make install
As with the Gerbera binary, the Fedora build places the web content in /usr/share/gerbera and the manual build places the web content into /usr/local/share/gerbera — yes, you can change the paths in the build, and I’m sure you can clue Gerbera into the new web file location. I opted for the quick/easy/lazy solution of running
mv /usr/share/gerbera /usr/share/gerbera/old ln -s /usr/local/share/gerbera /usr/share/
To symlink the location my config thinks the web components should be located to the new files.
On the first start of Gerbera, SQL scripts may be run to update the database — don’t stop or kill the service during this process there’s no checkpoint restart of the upgrade process. We backed up /etc/gerbera/gerbera.db prior to starting our Gerbera installation. We’ve also wiped the database files to start from scratch and test changes that impacted how items are ingested into the database.
Fin.
To copy files and keep the original timestamp, use
cp --preserve=timestamps /path/to/source.txt /path/to/destination.txt
“Dependency hell” used to be a big problem — you’d download one package, attempt to install it, and find out you needed three other packages. Download one of them, attempt to install it, and learn about five other packages. Fifty seven packages later, you forgot what you were trying to install in the first place and went home. Or, I suppose, you managed to install that first package and actually use it. The advent of repo-based deployments — where dependencies can be resolved and automatically downloaded — has mostly eliminated dependency hell. But, occasionally, you’ll have a manual install that says “oh, I cannot complete. I need libgdkglext-x11-1.0.so.0 or libminizip.so.1 … and, if there’s a package that’s named libgdkglext-x11 or libminizip … you’re good. There’s not. Fortunately, you can use “dnf provides” to search for a package that provides a specific file — thus learning that you need the gtkglext-libs and minizip-compat packages to resolve your dependencies.
The disk filled up on our primary server, and there wasn’t anything obvious like a decade worth of log files to clean up. I had to resort to uninstalling ‘stuff’ (it was, after all, installing ‘stuff’ that created the problem … tons of X11-related stuff for troubleshooting purposes). There is a way to list installed packages by size:
rpm -qia|awk '$1=="Name" { n=$3} $1=="Size" {s=$3} $1=="Description" {print s " " n }' |sort -n
Since it’s the third time I’ve had to do this so far this year, I’m going to write down how I disable IPv6 in Fedora. Add these lines to /etc/sysctl.conf
[lisa@server~]# grep ipv6 /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1 net.ipv6.conf.lo.disable_ipv6=1
Then load the sysctl settings (sysctl -p) or reboot.
Without IPv6, if you do X-redirection, you may get an error indicating the redirection was refused. In journalctl, there’s an error “error: Failed to allocate internet-domain X11 display socket”. Evidently you’ve got to configure sshd to use IPv4 by setting “AddressFamily inet” in /etc/ssh/sshd_config
[lisa@server~/]# grep AddressFamily /etc/ssh/sshd_config AddressFamily inet
We’ve been seeing dropped packets on one of our servers — that usually means more data is coming in than can be processed, but it’s nice to confirm rather than guess. The command “netstat -s” displays summary statistics that are nicely grouped into causes:
TcpExt: 16 invalid SYN cookies received 88 resets received for embryonic SYN_RECV sockets 18 packets pruned from receive queue because of socket buffer overrun 2321 ICMP packets dropped because they were out-of-window 838512 TCP sockets finished time wait in fast timer
I moved my MariaDB server to a new host and could not follow my previously working instructions to build lib_mysqludf_sys. The error indicated that my_atomic.h was not found.
[lisa@server03 lib_mysqludf_sys]# make gcc -fPIC -Wall -I/usr/include/mysql/server -I. -shared lib_mysqludf_sys.c -o /usr/lib64/mariadb/plugin//lib_mysqludf_sys.so In file included from /usr/include/mysql/server/my_sys.h:34, from lib_mysqludf_sys.c:41: /usr/include/mysql/server/my_pthread.h:26:10: fatal error: my_atomic.h: No such file or directory 26 | #include <my_atomic.h> | ^~~~~~~~~~~~~ compilation terminated. make: *** [Makefile:4: install] Error 1
The missing file is located in /usr/include/mysql/server/private … so I had to include that file in the gcc command as well. My new Makefile reads as follows:
[lisa@server03 lib_mysqludf_sys]# cat Makefile LIBDIR=/usr/lib64/mariadb/plugin/ install: gcc -fPIC -Wall -I/usr/include/mysql/server -I/usr/include/mysql/server/private -I. -shared lib_mysqludf_sys.c -o $(LIBDIR)/lib_mysqludf_sys.so
I was then able to make and use install.sh to load it into MariaDB.
NVIDIA finally released an updated driver for Scott’s laptop — one that should be compatible with the 5.x kernel. Ran through the normal process and got the following error:
Unable to load the nvidia-drm kernel module
Which … was at least new. Tried running through the installation again but not registering the driver with the kernel. Installation completed successfully, and he’s able to boot the 5.8.100 kernel.