How to link mysql-client installed from Homebrew with diesel-cli? - mysql

I have been trying to install the Rust Diesel CLI tool using cargo install diesel_cli, but the installation fails with a linking error
ld: library not found for -lmysqlclient
clang: error: linker command failed with exit code 1
(use -v to see invocation)
I installed the MySQL client using Homebrew: brew install mysql-client. During installation I got the following warning:
mysql-client is keg-only, which means it was not symlinked into /usr/local,
because conflicts with mysql.
If you need to have mysql-client first in your PATH run:
echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile
For compilers to find mysql-client you may need to set:
export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
export CPPFLAGS="-I/usr/local/opt/mysql-client/includeā€¯
I set the PATH and flags as in that warning message, but I still get the above linking error when trying to install the diesel-cli tool. I am unfamiliar with how to do linking in Rust - are there extra steps I need to do here to link mysqlclient directly?

Cargo ignores LDFLAGS and CPPFLAGS, you should set RUSTFLAGS instead. Something like this untested invocation:
RUSTFLAGS="-L/your_lib -I/your_include" cargo install diesel_cli
Relevant documentation.

On my side, I did not make it work with a mysql-client only. I had to install mysql with
brew install mysql
In the end, what matters is that you have a version of the mysqlclient dynamic lib.
Mines where installed here :
/usr/local/lib/libmysqlclient.21.dylib
/usr/local/Cellar/mysql/8.0.15/lib/libmysqlclient.21.dylib
And it worked.

Related

MySQL atomic library missing error during MyChem installation using cmake

I'm trying to install a tool (MyChem) using cmake on our Ubuntu EC2 instance, the tool I'm installing should utilize mysql so I installed it first. But when I tried to install the tool its says mysql atomic library is missing. What is atomic library? Anybody knows why or how to solve this?
I installed mysql first as follows:
$ sudo apt upgrade
$ sudo apt-get install build-essential
$ sudo apt-get install mysql-server mysql-client
$ sudo apt-get install libmysqlclient-dev
And the followings are the error messages:
$ cmake ..
-- The build type is RelWithDebInfo
-- Test module disabled
-- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
-- Using mysql-config: /usr/bin/mysql_config
-- MySQL Version: 5.7.29
-- MySQL Plugin Dir: /usr/lib/mysql/plugin
-- Found MySQL 5.7.29: /usr/include/mysql, /usr/lib/x86_64-linux-gnu/libmysqlclient.so;/usr/lib/x86_64-linux-gnu/libpthread.so;/usr/lib/x86_64-linux-gnu/libz.so;/usr/lib/x86_64-linux-gnu/libm.so;/usr/lib/x86_64-linux-gnu/librt.so;MYSQL_LIBRARIES_atomic-NOTFOUND;/usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so;/usr/lib/x86_64-linux-gnu/libdl.so
-- Mychem installation directory: /usr/lib/mysql/plugin
-- Defining dlhandler source files
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
MYSQL_LIBRARIES_atomic
linked by target "mychem-lib" in directory /home/ubuntu/mychem-1.0.0/src
linked by target "modification_test" in directory /home/ubuntu/mychem-1.0.0/tests
...
-- Configuring incomplete, errors occurred!
From above, around in the middle, you should be able to see the error messages such as MYSQL_LIBRARIES_atomic-NOTFOUND and also
CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: MYSQL_LIBRARIES_atomic
at the bottom.

mysql_config not found with mysql-community on CentOS 7

I need to install mysqlclient module for python3.6 on my CentOS server via pip.
The instalation breaks with following error: OSError: mysql_config not found.
I've found a solution, to install mysql-devel package, but unfortunately it breaks with following error:
Error: mariadb101u-config conflicts with mysql-community-server-8.0.4-0.1.rc.el7.x86_64
Error: mariadb101u-libs conflicts with mysql-community-libs-8.0.4-0.1.rc.el7.x86_64
Error: mariadb101u-libs conflicts with mysql-community-libs-compat-8.0.4-0.1.rc.el7.x86_64
Error: mariadb101u-common conflicts with mysql-community-common-8.0.4-0.1.rc.el7.x86_64
I cannot remove the mysql-community packages, because the server is running MySQL database based on that.
Is there any way to fix it without removing conflicting packets?
Ok, found an answer:
yum install mariadb-devel gcc python36u-devel
Solution by #Djent worked for me.
But I kept on receiving time out error while installing through yum. If you are having the same problem. You can manually download the package and install it!
On CentOS
wget https://archive.mariadb.org/mariadb-10.1.39/yum/centos7-amd64/rpms/MariaDB-10.1.38-centos73-x86_64-devel.rpm
rpm -i MariaDB-10.1.38-centos73-x86_64-devel.rpm
For other linux OS, you can find mariadb-devel at https://pkgs.org/download/mariadb-devel
First run the command (take note of python version):
sudo yum install python36-devel
Then install mysqlclient using pip.

Build error : qemu-arm: command not found

I get the following eror while building on linux .
/bin/sh: qemu-arm: command not found
/bin/sh: qemu-aarch64 command not found
Can anybody help me how to resolve this error ?
because you haven't installed the qemu package. Which linux release have you used?RHEL/Debian series?
if RHEL series, you can download via yum:
yum install qemu-system-arm qemu
if Debian, you can download via apt:
apt install qemu-system-arm qemu
You may need to install qemu-user package to run the user level emulation qemu-arm
apt-get install qemu-user
Note, that the qemu-system-arm package does not have qemu-arm command. Instead to do a system level emulation you need to run qemu-system-arm and specify the machine that you need as a parameter. See this command for more:
qemu-system-arm -machine help

linux mysql-server can't find mysql_config

I have a running (in production) mysql instance on my linux server (ubuntu-10.10) however I cannot find my mysql_config file.
command and output:
~$ locate mysql_config
~$
I've heard/read that I need the libmysqlclient-dev package installed to be able to use mysql_config but I don't want to break my current production instance. I want to make sure installing this dev package is not going to have adverse effects on my current mysql databases.
Furthermore, where can I find the source download for libmysqlclient-dev to install manually? In my current situation (behind corporate proxy) I am not permitted to use apt-get's.
UPDATE
this is stemming from attempting to install python-MySQLdb from source. the setup.py file is requiring the mysql_config path and continues to break when trying to use anything but that file.
The mysql_config executable is by default located in the bin directory of the MySQL server installation if you install it from precompiled binaries. But if you install it using apt-get it may not exist on your server.
Try:
sudo apt-get install libmysqlclient-dev
yum install mariadb-devel works for Centos 7 too, this puts the mysql_config into all the places that pip install mysqlclient requires/looks for it.
In Ubuntu 13.04 installation, it is at /usr/bin/mysql_config
Try /etc/my.cnf, that is the standard file for mysql config.
You can also do:
find / -name my.cnf -type f
On Fedora, install the mariadb-devel package, and you should have the binary.

cannot find -lmysqlclient

I'm trying to compile a C++ program and one of the classes uses . g++ is not able to find the libraries would be my guess. The command i use to compile is -
g++ c1.cpp c2.cpp c3.cpp c4.cpp -o c4 -lm -lmysqlclient
c3.cpp is the file that needs mysql.h. This works perfectly on my local machine, but refuses to run on the server with the error
cannot find -lmysqlclient
I tried finding the libmysqlclient.so files on the server using the find command, I don't think they are present there
uname -a
reveals
SunOS opteron 5.10 Generic_139556-08 i86pc i386 i86pc
user#opteron 12:26:02 ~/c++/projname/
I realize that i need to link some libraries, but where and how?
Any help would be appreciated.
Thanks.
Whatever library packages u think is not installed can be installed using sudo apt-get install. But the problem is to find the right name of the package apt-get can understand. So how to do that ?! simple
use command : sudo apt-cache search <filename>
For eg.: in this case lmysqlclient
sudo apt-cache search mysqlclient
(remember to exclude 'l' from the actual name ,ie, mysqlclient and not lmysqlclient).
This outputs:
libmysqlclient-dev - MySQL database development files
In the above -libmysqlclient-dev is the name that apt-get can recognize and solve our cannot find lmysqlclient problem
so now type: sudo apt-get install libmysqlclient-dev from interface.
After its done, try making your required file.
Simplifying #SriHariY.S's answer-
Try installing it with sudo apt-get install libmysqlclient-dev.
Do you have the MySQL client libraries? Can you look for it as
find / -name "libmysqlclient.so" -type f -print 2>/dev/null
Also, you can use the -R flag on linker to hardlink the libmysqlclient as
g++ -R/usr/local/mysql/lib ....
Or, you can export the LD_LIBRARY_PATH_32 or LD_LIBRARY_PATH_64 as
export LD_LIBRARY_PATH_32=$MYSQL_HOME/lib
Urko,
On Ubuntu 18 I used this command to find a name of required package for fixing this error:
apt search lmysqlclient
After this I installed missing package:
sudo apt install libmariadbclient-dev-compat