You are not logged in.
I've been waiting for a mariadb update for quite a bit, and I see that not even XAMPP has the the 10.2+ versions so I'm trying to build it from source - and why not go all the way to the 10.3.3 beta...
I have a modified PKGBUILD, where I changed the pkgver to 10.3.3, and disabled the openssl-1.1.0 patch (ofcourse changed the MD5s aswell), and I'm running makepkg -Ccfsri --skippgpcheck.
After about an hour of compiling, the script gets to package_mariadb() and fails @ $install -Dm0644 usr/share/mysql/my-medium.cnf etc/mysql/my.cnf with install: cannot stat 'usr/share/mysql/my-medium.cnf': No such file or directory.
I'm a little bit confused. Mostly, with that it's not using /usr, but a custom usr folder, but I do not see any commands used to create such a folder, which would explain the error.
Also, is there any way I can resume this process from this error or skip this step, and use backups to try different fixes?
PKGBUILD:
# $Id$
# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Maintainer: Christian Hesse <mail@eworm.de>
pkgbase=mariadb
pkgname=('libmariadbclient' 'mariadb-clients' 'mytop' 'mariadb')
pkgver=10.3.3
pkgrel=1
arch=('x86_64')
license=('GPL')
url='http://mariadb.org/'
makedepends=('cmake' 'zlib' 'libaio' 'libxml2' 'openssl' 'jemalloc'
'lz4' 'boost' 'libevent' 'systemd')
validpgpkeys=('199369E5404BD5FC7D2FE43BCBCB082A1BB943DB') # MariaDB Package Signing Key <package-signing-key@mariadb.org>
source=("https://ftp.heanet.ie/mirrors/mariadb/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz"{,.asc}
'0002-mroonga-after-merge-CMakeLists.txt-fixes.patch')
sha256sums=('ad80edacbf3cb39fbeb3a022803362e0da78dadb4aae611a126a7c8cd2c0c24b'
'SKIP'
'98736aefef21e575e450f8066685ba82771264409412e33491ab0a54e4407ba7')
prepare() {
cd $pkgbase-$pkgver/
# Changes to the upstream unit files:
# * remove the alias from unit files, we install symlinks in package function
# * enable PrivateTmp for a little bit more security
sed -i -e '/^Alias/d' \
-e '/^PrivateTmp/c PrivateTmp=true' \
support-files/mariadb{,@}.service.in
# openssl 1.1.0
#patch -Np1 < "${srcdir}"/0001-openssl-1-1-0.patch
# revert to fix the build
# mroonga after-merge CMakeLists.txt fixes
patch -Np1 -R < "${srcdir}"/0002-mroonga-after-merge-CMakeLists.txt-fixes.patch
# let's create the datadir from tmpfiles
echo 'd @MYSQL_DATADIR@ 0700 @MYSQLD_USER@ @MYSQLD_USER@ -' >> support-files/tmpfiles.conf.in
}
build() {
mkdir build
cd build
cmake ../$pkgbase-$pkgver \
-DCMAKE_AR=/usr/bin/gcc-ar \
-DCMAKE_RANLIB=/usr/bin/gcc-ranlib \
-DBUILD_CONFIG=mysql_release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DMYSQL_DATADIR=/var/lib/mysql \
-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DENABLED_LOCAL_INFILE=ON \
-DINSTALL_DOCDIR=share/doc/mariadb \
-DINSTALL_DOCREADMEDIR=share/doc/mariadb \
-DINSTALL_MANDIR=share/man \
-DINSTALL_PLUGINDIR=lib/mysql/plugin \
-DINSTALL_SCRIPTDIR=bin \
-DINSTALL_SYSCONFDIR=/etc/mysql \
-DINSTALL_SYSCONF2DIR=/etc/mysql \
-DINSTALL_INCLUDEDIR=include/mysql \
-DINSTALL_SUPPORTFILESDIR=share/mysql \
-DINSTALL_MYSQLSHAREDIR=share/mysql \
-DINSTALL_SHAREDIR=share/mysql \
-DINSTALL_SYSTEMD_SYSUSERSDIR=/usr/lib/sysusers.d/ \
-DINSTALL_SYSTEMD_TMPFILESDIR=/usr/lib/tmpfiles.d/ \
-DINSTALL_SYSTEMD_UNITDIR=/usr/lib/systemd/system/ \
-DWITH_SYSTEMD=yes \
-DWITH_READLINE=ON \
-DWITH_ZLIB=system \
-DWITH_SSL=system \
-DWITH_PCRE=bundled \
-DWITH_LIBWRAP=OFF \
-DWITH_JEMALLOC=ON \
-DWITH_EXTRA_CHARSETS=complex \
-DWITH_EMBEDDED_SERVER=ON \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_TOKUDB_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
-DWITHOUT_PBXT_STORAGE_ENGINE=1 \
-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc' \
-DCMAKE_C_FLAGS="-fPIC $CFLAGS -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer -fno-delete-null-pointer-checks" \
-DCMAKE_CXX_FLAGS="-fPIC $CXXFLAGS -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti -fno-delete-null-pointer-checks" \
-DWITH_MYSQLD_LDFLAGS="-pie ${LDFLAGS},-z,now"
make
}
package_libmariadbclient() {
pkgdesc='MariaDB client libraries'
depends=('openssl' 'libaio' 'zlib' 'lz4' 'lzo' 'xz')
conflicts=('libmysqlclient')
cd build
for dir in libmariadb libmysqld libservices include; do
make -C $dir DESTDIR="$pkgdir" install
done
install -D -m0755 scripts/mysql_config "$pkgdir"/usr/bin/mysql_config
install -D -m0644 "$srcdir"/$pkgbase-$pkgver/man/mysql_config.1 "$pkgdir"/usr/share/man/man1/mysql_config.1
install -D -m0644 support-files/mariadb.pc "$pkgdir"/usr/share/pkgconfig/mariadb.pc
install -D -m0644 "$srcdir"/$pkgbase-$pkgver/support-files/mysql.m4 "$pkgdir"/usr/share/aclocal/mysql.m4
# remove static libraries
rm "$pkgdir"/usr/lib/*.a
}
package_mariadb-clients() {
pkgdesc='MariaDB client tools'
depends=("libmariadbclient=${pkgver}" 'zlib' 'openssl' 'jemalloc')
conflicts=('mysql-clients')
provides=("mysql-clients=$pkgver")
cd build
make -C client DESTDIR="$pkgdir" install
# install man pages
for man in mysql mysql_plugin mysql_upgrade mysqladmin mysqlbinlog mysqlcheck mysqldump mysqlimport mysqlshow mysqlslap mysqltest; do
install -D -m0644 "$srcdir"/$pkgbase-$pkgver/man/$man.1 "$pkgdir"/usr/share/man/man1/$man.1
done
}
package_mytop() {
pkgdesc='Top clone for MariaDB'
depends=('perl' 'perl-dbd-mysql' 'perl-term-readkey')
cd build
install -Dm0755 scripts/mytop "$pkgdir"/usr/bin/mytop
}
package_mariadb() {
pkgdesc='Fast SQL database server, drop-in replacement for MySQL'
backup=('etc/mysql/my.cnf'
'etc/mysql/wsrep.cnf')
install=mariadb.install
depends=("mariadb-clients=${pkgver}" 'inetutils' 'libaio' 'libxml2' 'jemalloc'
'lz4' 'boost-libs' 'lzo' 'libevent' 'libsystemd')
optdepends=('galera: for MariaDB cluster with Galera WSREP'
'perl-dbd-mysql: for mysqlhotcopy, mysql_convert_table_format and mysql_setpermission')
conflicts=('mysql')
provides=("mysql=$pkgver")
options=('emptydirs')
cd build
make DESTDIR="$pkgdir" install
cd "$pkgdir"
# We specified INSTALL_SYSCONFDIR and INSTALL_SYSCONF2DIR to have proper paths
# in binaries and support file. But we want our own files...
# TOOD: Change to upstream file layout with version 10.2.x?
rm -r etc/
install -Dm0644 usr/share/mysql/my-medium.cnf etc/mysql/my.cnf
install -Dm0644 usr/share/mysql/wsrep.cnf etc/mysql/wsrep.cnf
mv usr/lib/sysusers.d/{sysusers,mariadb}.conf
mv usr/lib/tmpfiles.d/{tmpfiles,mariadb}.conf
ln -s mariadb.service usr/lib/systemd/system/mysqld.service
ln -s mariadb@.service usr/lib/systemd/system/mysqld@.service
# move to proper licenses directories
install -d usr/share/licenses/mariadb
mv usr/share/doc/mariadb/COPYING* usr/share/licenses/mariadb/
# already installed to real systemd unit directory
rm -r usr/share/mysql/systemd/
# left over from sysvinit
rm usr/bin/rcmysql
# provided by libmariadbclient
rm usr/bin/mysql_config
rm usr/lib/libmysql*
rm usr/share/man/man1/mysql_config.1
rm -r usr/include/
rm -r usr/share/mysql/{aclocal,pkgconfig}
# provided by mariadb-clients
rm usr/bin/{mysql,mysql_plugin,mysql_upgrade,mysqladmin,mysqlbinlog,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,mysqltest}
rm usr/share/man/man1/{mysql,mysql_plugin,mysql_upgrade,mysqladmin,mysqlbinlog,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,mysqltest}.1
# provided by mytop
rm usr/bin/mytop
# not needed
rm -r usr/{data,mysql-test,sql-bench}
rm usr/share/man/man1/mysql-test-run.pl.1
}
Other source files are from: https://git.archlinux.org/svntogit/pack … es/mariadb
Last edited by areuz (2018-01-17 23:37:33)
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
I'm a little bit confused. Mostly, with that it's not using /usr, but a custom usr folder, but I do not see any commands used to create such a folder, which would explain the error.
The package function is installing in "$pkgdir"/usr/... and "$pkgdir"/etc... in order to build a package that can then be installed with pacman.
The failing line has a comment which seems relevant. You should probably work out the new file paths like the TODO suggests.
# We specified INSTALL_SYSCONFDIR and INSTALL_SYSCONF2DIR to have proper paths
# in binaries and support file. But we want our own files...
# TOOD: Change to upstream file layout with version 10.2.x?
rm -r etc/
install -Dm0644 usr/share/mysql/my-medium.cnf etc/mysql/my.cnf
install -Dm0644 usr/share/mysql/wsrep.cnf etc/mysql/wsrep.cnf
Also, is there any way I can resume this process from this error or skip this step, and use backups to try different fixes?
The compilation itself was a success, so you can now simply run the packaging process without a rebuild:
makepkg --repackage
Last edited by progandy (2018-01-04 23:38:18)
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' |
Offline
Offline
Nice catch! I guess you can't install something that has been removed.
I'll try commenting it out and report back later, probs tommorow.
EDIT: Just a second thought, I'll probably have to find the new my.cnf, I'm not sure if they removed it completely.
Last edited by areuz (2018-01-05 00:23:08)
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
I would start with progandy's suggestion
# We specified INSTALL_SYSCONFDIR and INSTALL_SYSCONF2DIR to have proper paths
# in binaries and support file. But we want our own files...
# TOOD: Change to upstream file layout with version 10.2.x?
rm -r etc/
comment out that rm -r then have a look what is in $pkgdir/etc
edit:
after rerunning `makepkg --repackage`
Last edited by loqs (2018-01-05 00:30:36)
Offline
Consider how advisable it actually is to have mariadb > 10.1.x
We tried it and apparently it dodn't work out so well, so eworm had to pull everything: https://lists.archlinux.org/pipermail/a … 28868.html
Managing AUR repos The Right Way -- aurpublish (now a standalone tool)
Offline
Consider how advisable it actually is to have mariadb > 10.1.x
We tried it and apparently it dodn't work out so well, so eworm had to pull everything: https://lists.archlinux.org/pipermail/a … 28868.html
Yeah, I've read that quite a few things aren't working well. For my purpose tho, no plugins, just accessing the DB from PHP and PHPMyAdmin, I'm giving it a shot (mostly for the better JSON support).
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
I've gotten past all of the errors, and installed mariadb, mariadbclients, etc. successfully. Now I'm faced with this issue when starting the mariadb.service:
Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [Note] InnoDB: Buffer pool(s) load completed at 180105 4:34:57
Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [Note] Plugin 'FEEDBACK' is disabled.
Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [Note] Server socket created on IP: '::'.
Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [ERROR] Can't start server : Bind on unix socket: No such file or directory
Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [ERROR] Do you already have another mysqld server running on socket: /run/mysqld/mysqld.sock ?
Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [ERROR] Aborting
Jan 05 04:34:58 Arch_Mainframe systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
Jan 05 04:34:58 Arch_Mainframe systemd[1]: mariadb.service: Failed with result 'exit-code'.
Jan 05 04:34:58 Arch_Mainframe systemd[1]: Failed to start MariaDB 10.3.3 database server.
I'm leaning towards the missing my.cnf, which should have the correct address and port (I don't think that '::' is the correct IP).
Any suggesions? I might just copy the my-medium.cnf from older packages and ignore that it has been removed.
Edit: I'll post the PKGBUILD after I'm satisfied with the result.
Last edited by areuz (2018-01-05 03:49:56)
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
With the removal of
rm -r etc/
I have
$ ls pkg/mariadb/etc/mysql/
client.cnf init.d my.cnf server.cnf
enable_encryption.preset logrotate.d mysql-clients.cnf wsrep.cnf
$ cat pkg/mariadb/etc/mysql/my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
$ cat pkg/mariadb/etc/mysql/server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
# this is read by the standalone daemon and embedded servers
[server]
# this is only for the mysqld standalone daemon
[mysqld]
#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_on=ON
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=row
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0
# this is only for embedded server
[embedded]
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
# This group is only read by MariaDB-10.1 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.1]
/etc/mysql/my.cnf from latest arch package
# Example MariaDB config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MariaDB plays
# an important part, or systems up to 128M where MariaDB is used together with
# other programs (such as a web server)
#
# MariaDB programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, do:
# 'my_print_defaults --help' and see what is printed under
# Default options are read from the following files in the given order:
# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
# The following options will be passed to all MariaDB clients
[client]
#password = your_password
port = 3306
socket = /run/mysqld/mysqld.sock
# Here follows entries for some specific programs
# The MariaDB server
[mysqld]
port = 3306
socket = /run/mysqld/mysqld.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
# Point the following paths to different dedicated disks
#tmpdir = /tmp/
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
# Replication Slave (comment out master section to use this)
#
# To configure this host as a replication slave, you can choose between
# two methods :
#
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
# the syntax is:
#
# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
#
# where you replace <host>, <user>, <password> by quoted strings and
# <port> by the master's port number (3306 by default).
#
# Example:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# OR
#
# 2) Set the variables below. However, in case you choose this method, then
# start replication for the first time (even unsuccessfully, for example
# if you mistyped the password in master-password and the slave fails to
# connect), the slave will create a master.info file, and any later
# change in this file to the variables' values below will be ignored and
# overridden by the content of the master.info file, unless you shutdown
# the slave server, delete master.info and restart the slaver server.
# For that reason, you may want to leave the lines below untouched
# (commented) and instead use CHANGE MASTER TO (see above)
#
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
#server-id = 2
#
# The replication master for this slave - required
#master-host = <hostname>
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user = <username>
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password = <password>
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port = <port>
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
@Eschwartz from https://git.archlinux.org/svntogit/pack … c968ca332d the issue was referred upstream as https://jira.mariadb.org/browse/MDEV-12935
which is now closed resolution Incomplete final comment indicated it may now be resolved https://jira.mariadb.org/browse/MDEV-12 … ent-101124.
Last edited by loqs (2018-01-05 17:32:10)
Offline
Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [Note] InnoDB: Buffer pool(s) load completed at 180105 4:34:57 Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [Note] Plugin 'FEEDBACK' is disabled. Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [Note] Server socket created on IP: '::'. Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [ERROR] Can't start server : Bind on unix socket: No such file or directory Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [ERROR] Do you already have another mysqld server running on socket: /run/mysqld/mysqld.sock ? Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [ERROR] Aborting Jan 05 04:34:58 Arch_Mainframe systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE Jan 05 04:34:58 Arch_Mainframe systemd[1]: mariadb.service: Failed with result 'exit-code'. Jan 05 04:34:58 Arch_Mainframe systemd[1]: Failed to start MariaDB 10.3.3 database server.
This issue is caused by a wrong socket path, adding socket=/run/mysqld/mysqld.sock to my.cnf fixes this issue - I'll look into a proper fix later.
As I've successfully started the daemon, I'll post the PKGBUILD asap - after a bit of testing.
Last edited by areuz (2018-01-05 18:02:49)
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
Is the socket path from the arch package so surprising you had to change it. Was there an old /run/mysqld/mysqld.sock that needed cleaning?
Offline
-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
Is the socket path from the arch package so surprising you had to change it. Was there an old /run/mysqld/mysqld.sock that needed cleaning?
I noticed that Arch is using a different socket from Fedora - changed my post (I just copy pasted https://serverfault.com/questions/42028 … sql-daemon )
Although that is strange, cmake has the correct socket specified, I wonder where it gets saved, if anywhere - I'd like to fix this properly, not by a patch - the problem is that It doesn't get passed into any configs so MariaDB probably uses some default, or maybe even empty value.
Note: Honestly, I'm not even getting to the whole change of libmysql->libmariadb libraries and I already see that this would be a pain to fix for a upgrade.
Last edited by areuz (2018-01-05 18:10:13)
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
Jan 05 04:34:57 Arch_Mainframe mysqld[4608]: 2018-01-05 4:34:57 0 [ERROR] Do you already have another mysqld server running on socket: /run/mysqld/mysqld.sock ?
Looks like the socket address if left blank is being filled in correctly but there was an issue with the path /run/mysqld/mysqld.sock
https://github.com/MariaDB/server/blob/ … d.cc#L2443 https://github.com/MariaDB/server/blob/ … n.h.in#L22
Offline
Looks like the socket address if left blank is being filled in correctly but there was an issue with the path /run/mysqld/mysqld.sock
Huh, yeah I managed to forget in 1 day. Quite obviously looking back at it, /run/mysqld/ doesn't exist for some reason. Also, after testing, it either needs 777 perms or the owner has to be mysql.
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
check this line in the PKGBUILD
mv usr/lib/tmpfiles.d/{tmpfiles,mariadb}.conf
The end result needs to be $pkgdir/usr/lib/tmpfiles.d/mariadb.conf containing
d /run/mysqld 0755 mysql mysql -
d /var/lib/mysql 0700 mysql mysql -
edit:
removed extra /
Last edited by loqs (2018-01-05 19:01:55)
Offline
Yeah, I had to remove that line because no such files exist (not even the directories sysusers.d & tmpfiles.d)
mv: cannot stat 'usr/lib/tmpfiles.d/tmpfiles.conf': No such file or directory
A simple install -dm 0777 run/mysqld in the PKGBUILD resolves this tho (Also, I had to use perms 7 to be able to connect with mysql -u root -p)
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
From mariadb-10.1.30
$ grep -r INSTALL_SYSTEMD_TMPFILESDIR .
./build/CMakeCache.txt:INSTALL_SYSTEMD_TMPFILESDIR:STRING=/usr/lib/tmpfiles.d/
./build/CMakeCache.txt://ADVANCED property for variable: INSTALL_SYSTEMD_TMPFILESDIR
./build/CMakeCache.txt:INSTALL_SYSTEMD_TMPFILESDIR-ADVANCED:INTERNAL=1
./mariadb-10.1.30/cmake/install_layout.cmake:SET(INSTALL_SYSTEMD_TMPFILESDIR_RPM "/usr/lib/tmpfiles.d")
./mariadb-10.1.30/cmake/install_layout.cmake:SET(INSTALL_SYSTEMD_TMPFILESDIR_DEB "/usr/lib/tmpfiles.d")
./mariadb-10.1.30/support-files/CMakeLists.txt: IF(INSTALL_SYSTEMD_TMPFILESDIR)
./mariadb-10.1.30/support-files/CMakeLists.txt: DESTINATION ${INSTALL_SYSTEMD_TMPFILESDIR} COMPONENT Server)
From mariadb-10.3.3
$ grep -r INSTALL_SYSTEMD_TMPFILESDIR .
./build/CMakeCache.txt:INSTALL_SYSTEMD_TMPFILESDIR:UNINITIALIZED=/usr/lib/tmpfiles.d/
It would appear something broke in the build system for mariadb-10.3.3 related to INSTALL_SYSTEMD_TMPFILESDIR and INSTALL_SYSTEMD_SYSUSERSDIR
Offline
Package installed and tested with PHPMyAdmin-4.7.6-1.
Imported my old DB from 10.1.29 and tested with PDO - everything works as it should without any changes to the code.
https://github.com/Areuz/AUR/tree/master/mariadb-10.3.3
New PKGBUILD:
# $Id$
# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Maintainer: Christian Hesse <mail@eworm.de>
#MODIFIED PKGBUILD - ADJUSTED FOR 10.3.3 - areuz
pkgbase=mariadb
pkgname=('libmariadbclient' 'mariadb-clients' 'mytop' 'mariadb')
pkgver=10.3.3
pkgrel=1
arch=('x86_64')
license=('GPL')
url='http://mariadb.org/'
makedepends=('cmake' 'zlib' 'libaio' 'libxml2' 'openssl' 'jemalloc'
'lz4' 'boost' 'libevent' 'systemd')
validpgpkeys=('199369E5404BD5FC7D2FE43BCBCB082A1BB943DB') # MariaDB Package Signing Key <package-signing-key@mariadb.org>
source=("https://ftp.heanet.ie/mirrors/mariadb/mariadb-$pkgver/source/mariadb-$pkgver.tar.gz"{,.asc}
'0002-mroonga-after-merge-CMakeLists.txt-fixes.patch')
sha256sums=('ad80edacbf3cb39fbeb3a022803362e0da78dadb4aae611a126a7c8cd2c0c24b'
'SKIP'
'98736aefef21e575e450f8066685ba82771264409412e33491ab0a54e4407ba7')
prepare() {
cd $pkgbase-$pkgver/
# Changes to the upstream unit files:
# * remove the alias from unit files, we install symlinks in package function
# * enable PrivateTmp for a little bit more security
sed -i -e '/^Alias/d' \
-e '/^PrivateTmp/c PrivateTmp=true' \
support-files/mariadb{,@}.service.in
## Not needed anymore - source https://forum.manjaro.org/t/how-to-upgrade-mariadb-to-version-10-2/28901/4
# openssl 1.1.0
#patch -Np1 < "${srcdir}"/0001-openssl-1-1-0.patch
# revert to fix the build
# mroonga after-merge CMakeLists.txt fixes
patch -Np1 -R < "${srcdir}"/0002-mroonga-after-merge-CMakeLists.txt-fixes.patch
# let's create the datadir from tmpfiles
echo 'd @MYSQL_DATADIR@ 0700 @MYSQLD_USER@ @MYSQLD_USER@ -' >> support-files/tmpfiles.conf.in
}
build() {
mkdir build
cd build
cmake ../$pkgbase-$pkgver \
-DCMAKE_AR=/usr/bin/gcc-ar \
-DCMAKE_RANLIB=/usr/bin/gcc-ranlib \
-DBUILD_CONFIG=mysql_release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DMYSQL_DATADIR=/var/lib/mysql \
-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DENABLED_LOCAL_INFILE=ON \
-DINSTALL_DOCDIR=share/doc/mariadb \
-DINSTALL_DOCREADMEDIR=share/doc/mariadb \
-DINSTALL_MANDIR=share/man \
-DINSTALL_PLUGINDIR=lib/mysql/plugin \
-DINSTALL_SCRIPTDIR=bin \
-DINSTALL_SYSCONFDIR=/etc/mysql \
-DINSTALL_SYSCONF2DIR=/etc/mysql \
-DINSTALL_INCLUDEDIR=include/mysql \
-DINSTALL_SUPPORTFILESDIR=share/mysql \
-DINSTALL_MYSQLSHAREDIR=share/mysql \
-DINSTALL_SHAREDIR=share/mysql \
-DINSTALL_SYSTEMD_SYSUSERSDIR=/usr/lib/sysusers.d/ \
-DINSTALL_SYSTEMD_TMPFILESDIR=/usr/lib/tmpfiles.d/ \
-DINSTALL_SYSTEMD_UNITDIR=/usr/lib/systemd/system/ \
-DWITH_SYSTEMD=yes \
-DWITH_READLINE=ON \
-DWITH_ZLIB=system \
-DWITH_SSL=system \
-DWITH_PCRE=bundled \
-DWITH_LIBWRAP=OFF \
-DWITH_JEMALLOC=ON \
-DWITH_EXTRA_CHARSETS=complex \
-DWITH_EMBEDDED_SERVER=ON \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_TOKUDB_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
-DWITHOUT_PBXT_STORAGE_ENGINE=1 \
-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc' \
-DCMAKE_C_FLAGS="-fPIC $CFLAGS -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer -fno-delete-null-pointer-checks" \
-DCMAKE_CXX_FLAGS="-fPIC $CXXFLAGS -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti -fno-delete-null-pointer-checks" \
-DWITH_MYSQLD_LDFLAGS="-pie ${LDFLAGS},-z,now"
make
}
package_libmariadbclient() {
pkgdesc='MariaDB client libraries'
depends=('openssl' 'libaio' 'zlib' 'lz4' 'lzo' 'xz')
conflicts=('libmysqlclient')
cd build
for dir in libmariadb libmysqld libservices include; do
make -C $dir DESTDIR="$pkgdir" install
done
install -D -m0755 scripts/mysql_config "$pkgdir"/usr/bin/mysql_config
install -D -m0644 "$srcdir"/$pkgbase-$pkgver/man/mysql_config.1 "$pkgdir"/usr/share/man/man1/mysql_config.1
install -D -m0644 support-files/mariadb.pc "$pkgdir"/usr/share/pkgconfig/mariadb.pc
install -D -m0644 "$srcdir"/$pkgbase-$pkgver/support-files/mysql.m4 "$pkgdir"/usr/share/aclocal/mysql.m4
# remove static libraries
rm "$pkgdir"/usr/lib/*.a
}
package_mariadb-clients() {
pkgdesc='MariaDB client tools'
depends=("libmariadbclient=${pkgver}" 'zlib' 'openssl' 'jemalloc')
conflicts=('mysql-clients')
provides=("mysql-clients=$pkgver")
cd build
make -C client DESTDIR="$pkgdir" install
# install man pages
for man in mysql mysql_plugin mysql_upgrade mysqladmin mysqlbinlog mysqlcheck mysqldump mysqlimport mysqlshow mysqlslap mysqltest; do
install -D -m0644 "$srcdir"/$pkgbase-$pkgver/man/$man.1 "$pkgdir"/usr/share/man/man1/$man.1
done
}
package_mytop() {
pkgdesc='Top clone for MariaDB'
depends=('perl' 'perl-dbd-mysql' 'perl-term-readkey')
cd build
install -Dm0755 scripts/mytop "$pkgdir"/usr/bin/mytop
}
package_mariadb() {
pkgdesc='Fast SQL database server, drop-in replacement for MySQL'
backup=('etc/mysql/my.cnf'
'etc/mysql/wsrep.cnf')
install=mariadb.install
depends=("mariadb-clients=${pkgver}" 'inetutils' 'libaio' 'libxml2' 'jemalloc'
'lz4' 'boost-libs' 'lzo' 'libevent' 'libsystemd')
optdepends=('galera: for MariaDB cluster with Galera WSREP'
'perl-dbd-mysql: for mysqlhotcopy, mysql_convert_table_format and mysql_setpermission')
conflicts=('mysql')
provides=("mysql=$pkgver")
options=('emptydirs')
cd build
make DESTDIR="$pkgdir" install
cd "$pkgdir"
# We specified INSTALL_SYSCONFDIR and INSTALL_SYSCONF2DIR to have proper paths
# in binaries and support file. But we want our own files...
# TODO: Change to upstream file layout with version 10.2.x?
rm -r etc/
install -Dm0644 usr/share/mysql/wsrep.cnf etc/mysql/wsrep.cnf
#These folders/files don't exist anywhere
#mv usr/lib/sysusers.d/{sysusers,mariadb}.conf
#mv usr/lib/tmpfiles.d/{tmpfiles,mariadb}.conf
#Temporary fix:
install -dm 0775 run/mysqld
ln -s mariadb.service usr/lib/systemd/system/mysqld.service
ln -s mariadb@.service usr/lib/systemd/system/mysqld@.service
# move to proper licenses directories
install -d usr/share/licenses/mariadb
mv usr/share/doc/mariadb/COPYING* usr/share/licenses/mariadb/
# already installed to real systemd unit directory
rm -r usr/share/mysql/systemd/
# left over from sysvinit
rm usr/bin/rcmysql
# provided by libmariadbclient
rm usr/bin/{mariadb_config,mysql_config}
rm usr/lib/{libmysql*,libmariadb.so*}
rm usr/lib/mysql/plugin/{auth_gssapi_client.so,dialog.so,mysql_clear_password.so,sha256_password.so}
rm usr/share/man/man1/mysql_config.1
rm -r usr/include/
rm -r usr/share/mysql/{aclocal,pkgconfig}
# provided by mariadb-clients
rm usr/bin/{mysql,mysql_plugin,mysql_upgrade,mysqladmin,mysqlbinlog,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,mysqltest}
rm usr/share/man/man1/{mysql,mysql_plugin,mysql_upgrade,mysqladmin,mysqlbinlog,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap,mysqltest}.1
# provided by mytop
rm usr/bin/mytop
# not needed
rm -r usr/{data,mysql-test,sql-bench}
rm usr/share/man/man1/mysql-test-run.pl.1
}
$ diff PKGBUILD-old PKGBUILD
1,7c1,5
< # $Id$
< # Maintainer: Bart?omiej Piotrowski <bpiotrowski@archlinux.org>
< # Maintainer: Christian Hesse <mail@eworm.de>
<
< # ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
< # - disable mroonga storage engine (doesn't build on ARM)
< # - patch to link (unused) static libs against libatomic on v5/v6 to fix FTBFS
---
> # $Id$
> # Maintainer: BartÅomiej Piotrowski <bpiotrowski@archlinux.org>
> # Maintainer: Christian Hesse <mail@eworm.de>
>
> #MODIFIED PKGBUILD - ADJUSTED FOR 10.3.3 - areuz
11c9
< pkgver=10.1.30
---
> pkgver=10.3.3
20,23c18,19
< '0001-openssl-1-1-0.patch'
< '0002-mroonga-after-merge-CMakeLists.txt-fixes.patch'
< 'atomic.patch')
< sha256sums=('173a5e5a24819e0a469c3bd09b5c98491676c37c6095882a2ea34c5af0996c88'
---
> '0002-mroonga-after-merge-CMakeLists.txt-fixes.patch')
> sha256sums=('ad80edacbf3cb39fbeb3a022803362e0da78dadb4aae611a126a7c8cd2c0c24b'
25,27c21
< '40d298ca77c0459ade4ef9fc68a3a7450273b098b9f7edfb0a5251c5db434cfc'
< '98736aefef21e575e450f8066685ba82771264409412e33491ab0a54e4407ba7'
< '2ddfe7dc5eae905ed77d7438d6869f9bb26684945c2f82cc19f84926b1cb849f')
---
> '98736aefef21e575e450f8066685ba82771264409412e33491ab0a54e4407ba7')
38a33
> ## Not needed anymore - source https://forum.manjaro.org/t/how-to-upgrade-mariadb-to-version-10-2/28901/4
40c35
< patch -Np1 < "${srcdir}"/0001-openssl-1-1-0.patch
---
> #patch -Np1 < "${srcdir}"/0001-openssl-1-1-0.patch
48,51d42
<
< if [[ $CARCH == arm || $CARCH == armv6h ]]; then
< patch -p0 -i ../atomic.patch
< fi
100d90
< -DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
115c105
< for dir in libmysql libmysqld libservices include; do
---
> for dir in libmariadb libmysqld libservices include; do
175c165,166
< # TOOD: Change to upstream file layout with version 10.2.x?
---
> # TODO: Change to upstream file layout with version 10.2.x?
>
177c168
< install -Dm0644 usr/share/mysql/my-medium.cnf etc/mysql/my.cnf
---
>
180,181c171,175
< mv usr/lib/sysusers.d/{sysusers,mariadb}.conf
< mv usr/lib/tmpfiles.d/{tmpfiles,mariadb}.conf
---
> #These folders/files don't exist anywhere
> #mv usr/lib/sysusers.d/{sysusers,mariadb}.conf
> #mv usr/lib/tmpfiles.d/{tmpfiles,mariadb}.conf
> #Temporary fix:
> install -dm 0775 run/mysqld
197,198c191,193
< rm usr/bin/mysql_config
< rm usr/lib/libmysql*
---
> rm usr/bin/{mariadb_config,mysql_config}
> rm usr/lib/{libmysql*,libmariadb.so*}
> rm usr/lib/mysql/plugin/{auth_gssapi_client.so,dialog.so,mysql_clear_password.so,sha256_password.so}
Note: Fix build process for 'INSTALL_SYSTEMD_TMPFILESDIR' and 'INSTALL_SYSTEMD_SYSUSERSDIR'
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
I would recommend carrying the following until 'INSTALL_SYSTEMD_TMPFILESDIR' and 'INSTALL_SYSTEMD_SYSUSERSDIR' are fixed
/usr/lib/sysusers.d/mariadb.conf this was probably not an issue on your current system as the user could already have been created by an older version of mariadb
u mysql - "MariaDB" /var/lib/mysql
/usr/lib/tmpfiles.d/mariadb.conf adding run/mysqld to the package will only work until reboot on a default system where /run is tmpfs and /var/lib/mysql could already have existed
d /run/mysqld 0755 mysql mysql -
d /var/lib/mysql 0700 mysql mysql -
edit:
missing '
Edit2:
The fix for the issue is to patch with https://github.com/MariaDB/server/commi … bd23.patch the patch is missing from 10.3.3
but present in 10.1.30 and 10.2.12 https://github.com/MariaDB/server/commi … 37fe18bd23
Last edited by loqs (2018-01-06 20:15:01)
Offline
Finally have some time to invest in this again.
Indeed /run is tmpfs and does remove the folder - I knew it was a quick fix.
Thanks for the patch, I'll try it out as soon as I have some time - do you think that generic `patch -Np1` will suffice?
Oh, and Mariadb has been working pretty well, no instabilities or anything - still wouldn't recommend it for production workloads, but enough for experimenting with the new functions.
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
Thanks for the patch, I'll try it out as soon as I have some time - do you think that generic `patch -Np1` will suffice?
If I recall correctly I used `patch -p1`.
Offline
Thanks for the patch, updated version of the package is on the Git: (for anyone interested)
https://github.com/Areuz/AUR/tree/master/mariadb-10.3.3
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
Why don't you put it in the AUR??
And one for 10.2.x?
Offline
Well, for more reasons. First is the AUR rules, secondly, there are numerous messages about issues with these new upstream changes - I'm not an expert, so I didn't notice any problems so far (maybe some unstability, but I don't know for sure), and I don't want to create confusion and cause failed and/or broken installs.
I do not have the time &/or need to create a 10.2.x package, as it apparently just contains more bugs and AFAIK has the same functionality.
My final word is, leave it up to the maintainers - If it were apparent that they abandoned the package, it would be different, but seems like they haven't.
I also think that the Arch forums are available enough from Google if someone really needs it
If I'm not a bush, I'm not no one.
Dotfiles Git
Offline
Hello!
There are stable 10.3 release (10.3.7) of MariaDB. Can anyone help update PKGBUILD to it? It seems patches no need anymore, but while compiling fatal error: /usr/bin/c++ doesn't support -std=c++11 or -std=c++0x, you need one that does.
CXXFLAGS changes not helps, seems cant compile with GCC8.1.
Offline