После обновления до texlive2022 обнаружено, что luatex больше не находит все библиотеки (в texlive2021 и lua-5.3 работало): error loading module 'luasql.mysql' from file '/usr/lib64/lua/5.4/luasql/mysql. so': /usr/lib64/lua/5.4/luasql/mysql.so: undefined symbol: lua_newuserdatauv stack traceback: [C]: in ? [C]: in local 'f' ...e/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua:398: in local 'loo kup' ...e/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua:429: in function < ...e/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua:419> [C]: in function 'require' dbd3.lua:6: in main chunk [\directlua]:1: in main chunk. Этот luatex связан с lua-5.4, поэтому 1. Поставил liblua5.4-devel-5.4.4, для доступа к lua.h 2. исправил /usr/share/texmf-local/web2c/texmf.cnf LUAROCKS_PATH = /usr/share/lua/5.4/luarocks/ LUAROCKS_CPATH = /usr/lib/luarocks/rocks-5.4 LUAINPUTS = /usr/share/lua/5.4//;$LUAROCKS_PATH// CLUAINPUTS = /usr/lib64/lua/5.4//;$LUAROCKS_CPATH// 3. Поставил lua5.4-luarocks-3.9.2 4. Поставил luasql-mysql # luarocks-5.4 install luasql-mysql MYSQL_INCDIR=/usr/include/mysql Installing https://luarocks.org/luasql-mysql-2.6.0-3.src.rock luasql-mysql 2.6.0-3 depends on lua >= 5.1 (5.4-1 provided by VM) gcc -O2 -fPIC -I/usr/include -c src/luasql.c -o src/luasql.o -I/usr/include/mysql gcc -O2 -fPIC -I/usr/include -c src/ls_mysql.c -o src/ls_mysql.o -I/usr/include/mysql gcc -shared -o luasql/mysql.so src/luasql.o src/ls_mysql.o -L/usr/local/lib -lmysqlclient luasql-mysql 2.6.0-3 is now installed in /usr (license: MIT/X11) 5. И, наконец, luapackageloader: # cd /usr/share/lua/5.4/ # ln -fs /usr/share/texmf-dist/tex/luatex/luapackageloader/luapackageloader.lua . # kpsewhich luapackageloader.lua /usr/share/lua/5.4/luapackageloader.lua
Да, забыл написать.... Вне lualatex модуль luqsql-mysql работает без проблем function comma_value(n) -- credit http://richard.warburton.it local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$') return left..(num:reverse():gsub('(%d%d%d)','%1 '):reverse())..right end local driver = require "luasql.mysql" local env = assert (driver.mysql()) local con = assert (env:connect("serge","serge","serge","localhost","3306")) -- Эта переменная является аргументом скрипта (см. test3.ltx) local bastionart = 336 local cur = assert (con:execute(string.format([[ SELECT name, budget FROM projects WHERE art=%s ]],bastionart))) local row = cur:fetch ({}, "a") while row do print(string.format("%s & %s \\\\",row.name,comma_value(tonumber(row.budget)))) row = cur:fetch (row, "a") end cur:close() con:close() env:close()
Так с lua-5.3 или lua-5.4? Сегодня обновился texlive-2022-alt0_10.x86_64, где написано: [root@yarilo ~]# ldd /usr/bin/lualatex linux-vdso.so.1 (0x00007ffe6d7fe000) libtexlua53.so.5 => /usr/lib64/libtexlua53.so.5 (0x00007f8556b95000) libzzip-0.so.13 => /usr/lib64/libzzip-0.so.13 (0x00007f8556b8b000) libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007f8555fc7000)