SUMMARY STEPS TO REPRODUCE 1. On Kubuntu 19.10, install amarok-kde5 (from ppa) - as the previous amarok with qt4 is gone 2. Launch Amarok OBSERVED RESULT A pop-up appears: > The Amarok database reported the following errors: >The configured database plugin could not be loaded. >In most cases you will need to resolve these errors before Amarok will run properly. And I have no content in "Local music". EXPECTED RESULT Amarok just works fine, and can connect to my music library. SOFTWARE/OS VERSIONS Linux/KDE Plasma: Kubuntu 19.10 (+backports) KDE Plasma Version: 5.17 KDE Frameworks Version: 5.64.0 Qt Version: 5.12.4 Amarok : 2.9.70 ADDITIONAL INFORMATION I had several MySQL errors in the system, crashing Akonadi for instance… I barely fixed them, now MySQL (MariaDB ?) seem to be accessible. Removing ~.kde/share/apps/amarok/ doesn't trigger a recreation of that folder… it doesn't seem to use it at all…
The error happens because Kubuntu 19.10 is shipped with Mysql 8. This major Mysql version deprecated Mysql Embedded, which is the standard DB for Amarok. You can read more about it here: https://mysqlserverteam.com/mysql-8-0-retiring-support-for-libmysqld/ I assume the package you installed is linked with libmysqlclient, whose API is almost exactly the same as libmysqld. If this is the case, Amarok will try to open a socket to a local mysql standalone instead of reading the old DB from ~/.local/share/amarok/mysqle. It seems that there's no such mysql (or you can't connect to it witout password), so you get the error. The obvious workaround is to import the old DB to a stand-alobe mysql instance. However, a permanent fix is harded. It depends on what Amarok team will decide to replace Mysql embedded. I assume it will be to run a standalone mysql, similar to Akonadi.
Thank you for your detailed answer. As a temporary workaround, do you know how I can create such a database, and import the old one ?
The following command starts a mysql server with your old Amarok DB that is accessible only via socket (notice that paths my vary): /usr/sbin/mysqld --defaults-file=/home/your_user/.local/share/amarok/my.cnf --datadir=/home/your_user/.kde/share/apps/amarok/mysqle --socket=/run/user/1000/akonadi/default/mysql-amarok.socket --pid-file=/run/user/1000/akonadi/default/mysql-amarok.pid --skip-networking --skip_grant_tables You may test connection with the command below: mysql --socket=/run/user/1000/akonadi/default/mysql-amarok.socket Add the following command to your .my.cnf file in your home directory (/home/your_user/.my.cnf in this example): [client] socket=/run/user/1000/akonadi/default/mysql-amarok.socket Now Amarok should be able to connect to the old DB and run as before
Thanks a lot for helping me with this :) Yet I can execute the first command… I have: > Could not open required defaults file: /home/MyUserName/.local/share/amarok/my.cnf But the file exists and is readable. > Add the following command to your .my.cnf file in your home directory (/home/your_user/.my.cnf in this example) I have not such file. Should I create it ? (Will it be enough ?)
Keep in mind that the command and parameters I write are mere suggestions. Everything is dependant on your local environment. Some hints about your last question: 1) it's probably fine to remove the "--defaults-file=/home/your_user/.local/share/amarok/my.cnf" option. I guess that it only contains an "[embedded]" session, which is not used by Mysql 8 2) if you don't have the ~/.my.cnf, you have to create it. I can't tell if this is sufficient, but should be. All this file does is to define a default connection to mysqlclient library (which is also used by "mysql" command) So, a good way to test if your connection to mysql server will work is to turn "mysql" without parameters. If your .my.cnf is correct, and your "mysqld" (server) is running, you should be able to connect
I noted that, but I don't know how my local environment is configured for mysql, so I can't tell if it's the right parameters or not ^^ 1) you're right, I does contain only an [embedded]. Removing that parameter change the result, now I have: > [ERROR] mysqld: Can't create/write to file '/home/MyUserName/.kde/share/apps/amarok/mysqle/aria_log_control' (Errcode: 13 "Permission denied") >[ERROR] mysqld: Got error 'Can't create file' when trying to use aria control file '/home/MyUserName/.kde/share/apps/amarok/mysqle/aria_log_control' […] > InnoDB: Operating system error number 13 in a file operation. >[ERROR] InnoDB: The error means mysqld does not have the access rights to the directory. > [ERROR] InnoDB: Operating system error number 13 in a file operation. >[ERROR] InnoDB: The error means mysqld does not have the access rights to the directory. > [ERROR] InnoDB: Cannot open datafile './ibdata1' >[ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data! 2) I created the file, and rand the command mysql without any parameter. I have : > ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/user/1000/akonadi/default/mysql-amarok.socket' (2) Which means it takes my .my_cnf into accounts (that's a good point ^^), yet it doesn't work and I don't understand why…
Up :) Does someone know how I can fix these errors ?
I have been able to get the packages built for 19.04 installed and running by making a couple of changes to the debian file. 1) change libmysqlclient20 to libmysqlclient21 2) change qtdeclarative-abi-5-12-2 to qtdeclarative-abi-5-12-4. If you need help, I should be able to send you the modified file or at least instructions on how to do the changes.
Thanks for your help. I don't understand which file I should change. Would that work on Ubuntu ? (and not Debian) Is there any potential side effect ?
(In reply to Lapineige from comment #9) > Thanks for your help. > I don't understand which file I should change. > Would that work on Ubuntu ? (and not Debian) > Is there any potential side effect ? The idea was to decompress the .deb, alter the control file and then recompress the .deb. Unfortunately, the PPA has removed packages for Disco.
Created attachment 124953 [details] DEBIAN/control DEBIAN control file with amendments to allow amarok from 19.04 ppa to be used in 19.10
(In reply to Pedro de Carvalho Gomes from comment #1) > The error happens because Kubuntu 19.10 is shipped with Mysql 8. This major > Mysql version deprecated Mysql Embedded, which is the standard DB for > Amarok. You can read more about it here: > > https://mysqlserverteam.com/mysql-8-0-retiring-support-for-libmysqld/ > > I assume the package you installed is linked with libmysqlclient, whose API > is almost exactly the same as libmysqld. If this is the case, Amarok will > try to open a socket to a local mysql standalone instead of reading the old > DB from ~/.local/share/amarok/mysqle. It seems that there's no such mysql > (or you can't connect to it witout password), so you get the error. > > The obvious workaround is to import the old DB to a stand-alobe mysql > instance. > > However, a permanent fix is harded. It depends on what Amarok team will > decide to replace Mysql embedded. I assume it will be to run a standalone > mysql, similar to Akonadi. How come I have managed to install Amarok from 19.04 by just changing the dependencies of 2 packages in the DEBIAN/control file?
Hi, I need more information that what I have to be able to know what's going on. But I suspect that you are not using Mysql. Rather you have MariaDB, which hasn't deprecated the embedded server. By the way, this is a quick alternative for Lapineige to try to get it working. Replace all Mysql packages with MariaDB alternatives: apt-get install libmariadbclient-dev libmariadbd-dev mariadb-client mariadb-common
Just installing them changes nothing. Should I change anything else ? (remove mysql ?)
I am also running Kubuntu 19.10 and I am able to compile Amarok/master and run with MariaDB. MariaDB is a complete replacement to Mysql. So it seems like a good idea to replace all Mysql packages with MariaDB ones. But especially make sure that you have libmariadbd-dev and libmariadbd19. But before you try MariaDB, let's make sure that the package that you're trying to run was correctly built. That is, it is linked to libmariadbd or libmysqld. And not to libmysqlclient. You can know it by running the following command. It lists the linkage of the amarok's Mysql embedded module: ldd /usr/lib/x86_64-linux-gnu/qt5/plugins/amarok_storage-mysqlestorage.so
By Amarok master, the mean the Qt5 version ? I'll try that, thanks.
>ldd /usr/lib/x86_64-linux-gnu/qt5/plugins/amarok_storage-mysqlserverstorage.so # not amarok_storage-mysqlestorage.so >libmysqlclient.so.21 I guess I'll need to built it my-self ? :/
(In reply to Lapineige from comment #17) > >ldd /usr/lib/x86_64-linux-gnu/qt5/plugins/amarok_storage-mysqlserverstorage.so # not amarok_storage-mysqlestorage.so > >libmysqlclient.so.21 > > I guess I'll need to built it my-self ? :/ I have built it and I can pack it for you if you want. But I can also assist you to build your own package. What do you prefer?
Well I don't even find its repository… so if you can pack it for me it would be nice :)
I found the Github repo… can't build, the first step fails. https://github.com/KDE/amarok
I have build the package, but it will take me a while to set-up my launchpad to public it correctly. Do you want the .deb file? I could even send you by e-mail. The file is about 5 MB.
Well a simple .deb file is enough for me :) (you can use this privacy-friendly service to send it if you want to : https://framadrop.org/) But if you intend to publish a launchpad anyway, I can wait.
I have uploaded the package amarok_2.9.70-0ubuntu1_amd64.deb. It is available until March 15 20202 at the link below https://framadrop.org/r/kXFlmE3RFf#jxKU+8OyFxXOI+w6jHks9Rwcsa4xQt50+8wl/AlwQbk= For your safety, here are the checksums: SHA256: ae1d7aeb4256c1f9286240d036799b0f37e09c34d523f85ab5e2d4ccad5efbf3 MD5: 70ec336237dd51844cafbc93b9395dcb I built the package from my Amarok repo in Github. The branch Kubuntu_19.10 is basically master/HEAD with few fixes I wrote to the Lyrics and Wikipedia applets. https://github.com/pcgomes/amarok/tree/Kubuntu_19.10 Let me know if it worked for you
Thanks a lot. I can't install it :( (checksum is ok) One dependency can't be installed, using 'sudo apt-get install -f' to install it gives that log (I translated it): > dpkg: archive treatment error /var/cache/apt/archives/amarok-utils_2%3a2.9.80+p19.04+git20191004.1229-0+yasi4~19.10_amd64.deb (--unpack) : attempting to replace « /usr/bin/amarok_afttagger », also own by package amarok 2.9.70-0ubuntu1 >dpkg-deb: error: coller subprocess was killed by signal (broken pipe) >Preparing to unpack .../amarok_2%3a2.9.80+p19.04+git20191004.1229-0+yasi4~19.10_amd64.deb ... >Unpacking amarok (2:2.9.80+p19.04+git20191004.1229-0+yasi4~19.10) sur (2.9.70-0ubuntu1) ... >Errors encountered during execution : > /var/cache/apt/archives/amarok-utils_2%3a2.9.80+p19.04+git20191004.1229-0+yasi4~19.10_amd64.deb >E: Sub-process /usr/bin/dpkg returned an error code (1) Note: I still have Amarok QT5 PPA activated, but I uninstalled its Amarok version. Could this be the issue ?
Hard to say with this log. But it seems likely that it has to do with the old PPA. Especially because its versions is newer (2.9.80) than mine (2.9.70); thus apt may stick to the most recent. In addition to trying to remove the other Amarok PPA, here are few more thoughts: - you can unset the localization at command line with "unset LANG". This way you don't need to translate localized logs back to english - I have attached a Dockerfile that downloads automatically Amarok for (K)Ubuntu 19.10 and run the configure. After, a simple "make" (which I omitted because it takes long) compiles Amarok. If you're not familiar with docker, you still can use it as reference to prepare your own build environment
Created attachment 126019 [details] Dockerfile that set-up Amarok's build environment
The error message says you still have "amarok-utils" installed. Remove it.
If it helps, I have successfully compiled Amarok 2.9.70 in Kubuntu 19.10 by installing libmariadb-dev-compat which includes /usr/bin/mysql_config required to compile Amarok.
Yeah, it works ! :) No error message about Mysql. Dynamic playlist works again too. Yet it doesn't seem to connect correctly/completely/? to the database: I don't have access to the local library, not I can see notes, scores and so on. I don't really know how to debug that…
That's one thing I can't get to work - dynamic playlists - tracks are never added or removed.
Well in that case the end of the playlist is changed as configured, so I'm sure they do work. But I can't tell you more about it, sorry.
After refreshing collection (Tools -> Update Collection), and a few restarts, my music collection suddenly pop-up… I can see in the track details that the old database is not read, as my music as no score, last played date and so on, so I suppose it created a new index ?
I've just installed a 'clean' Kubuntu 19.10. Tried to build as per Docker, but am getting -- Found libgmock: /usr/include/gmock, /usr/lib/x86_64-linux-gnu/libgmock.a;/usr/lib/x86_64-linux-gnu/libgtest.a;/usr/lib/x86_64-linux-gnu/libpthread.so CMake Error at CMakeLists.txt:170 (find_package): Could not find a package configuration file provided by "Phonon4Qt5" (requested version 4.6.60) with any of the following names: Phonon4Qt5Config.cmake phonon4qt5-config.cmake Add the installation prefix of "Phonon4Qt5" to CMAKE_PREFIX_PATH or set "Phonon4Qt5_DIR" to a directory containing one of the above files. If "Phonon4Qt5" provides a separate development package or SDK, be sure it has been installed. I've installed the package phonon4qt5 but the only files I get are /usr/share/doc/phonon4qt5/changelog.Debian.gz /usr/share/doc/phonon4qt5/copyright -- Configuring incomplete, errors occurred! See also "/home/llist/kdedev/build/amarokGomes/CMakeFiles/CMakeOutput.log". See also "/home/llist/kdedev/build/amarokGomes/CMakeFiles/CMakeError.log". Thanks
(In reply to thelists@optusnet.com.au from comment #33) > I've just installed a 'clean' Kubuntu 19.10. > > Tried to build as per Docker, but am getting > > > -- Found libgmock: /usr/include/gmock, > /usr/lib/x86_64-linux-gnu/libgmock.a;/usr/lib/x86_64-linux-gnu/libgtest.a;/ > usr/lib/x86_64-linux-gnu/libpthread.so > CMake Error at CMakeLists.txt:170 (find_package): > Could not find a package configuration file provided by "Phonon4Qt5" > (requested version 4.6.60) with any of the following names: > > Phonon4Qt5Config.cmake > phonon4qt5-config.cmake > > Add the installation prefix of "Phonon4Qt5" to CMAKE_PREFIX_PATH or set > "Phonon4Qt5_DIR" to a directory containing one of the above files. If > "Phonon4Qt5" provides a separate development package or SDK, be sure it has > been installed. > > > I've installed the package phonon4qt5 You need the package with -dev at the end, with Ubuntu it is libphonon4qt5-dev.
Doohh
I finally set my launchpad. There I am publishing builds from my personal repository. There I publish the patches that I send upstream, but are still under revision. Also, I rebase from the official repository before every new snapshot. Comments are welcome https://launchpad.net/~pgomes/+archive/ubuntu/amarok
Closing this as db dependency related questions are somewhat under control at the moment and packages for 2.9.82 and nightly git builds are somewhat widely available.