If you are getting an error “Can’t exec mysql_config: No such file or directory at Makefile.PL”, then here’s how you can solve the error. Before that, have a look at the complete error message:
Can't exec "mysql_config": No such file or directory at Makefile.PL line 561. Can't find mysql_config. Use --mysql_config option to specify where mysql_config is located. Failed to determine directory of mysql.h
How to fix Can’t exec mysql_config: No such file or directory at Makefile.PL
This error occurs if the system cannot find MySQL client package. The install script
"Makefile.PL" can be configured using lots of switches such as
cflags is a list of flags that are given to C compiler. The important flag is the location of the MySQL header files. To determine the default flags,
mysql_config script can be used as shown below.
# mysql_config --cflags -I/usr/include/mysql
--libs is a list of flags that are given to the linker or loader. Here, the default flags are determined by executing
mysql_config command as shown below:
# mysql_config --libs -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -ldl
So, generally if
--libs are not specified in the command line, then
mysql_config script will be used and this script comes as part of the MySQL client distribution. Well, here’s a reference that explains this in detail.
But in most cases, if you had installed only MySQL server using
'apt-get install mysql-server' then there are chances that you don’t have MySQL client library installed. It means, the system is missing
mysql_config command as well.
To fix this issue, install MySQL client library as shown below:
$ sudo apt-get install libmysqlclient-dev
Check if mysql_config is installed using the below command:
$ which mysql_config /usr/bin/mysql_config
# whereis mysql_config mysql_config: /usr/bin/mysql_config /usr/share/man/man1/mysql_config.1.gz
That’s it! Now try executing the install script “Makefile.PL” and it should located
mysql_config without any issue.