You are not logged in.
Hi guys,
I'm trying to create an AUR package for Valentina DB php extension called vphp.
It's not available for Arch so i decided to create my own package.
# Maintainer: Sam Van der Borght <sam@king-foo.be>
pkgname=valentina-vphp54-beta
pkgver=current
pkgrel=2
pkgdesc="Valentina database PHP 5.4 extension, required for connecting to valentina databases through PHP"
arch=('x86_64')
url="http://www.valentina-db.com/download/beta/"
license=('unknown')
makedepends=('rpmextract')
options=('emptydirs')
#source=("http://www.valentina-db.com/download/beta/5.0b66/linux_64/vphp54_x64_5_lin.rpm")
#md5sums=('5c7a891ea957e60562e4ab70dfd0ccde')
source=("http://www.valentina-db.com/download/beta/5.0b66/linux_64/vphp54_standalone_x64_5_lin.rpm")
md5sums=('b209779516c64e413fd19559083c7588')
#source=("http://www.valentina-db.com/download/beta/5.0b65/linux_32/vphp53_standalone_5_lin.rpm")
#md5sums=('a236f59563e85b5a0ba3514fdd42cb41')
build() {
cd "$pkgdir"
rpmextract.sh ../vphp54_standalone_x64_5_lin.rpm
echo "Create a file valentina.ini in your PHP config dir (eg. /etc/php/conf.d/)."
echo "Add the following line to it: extension=/opt/VPHP_Standalone54/php54_valentina_standalone.so"
}
Everything goes well, package can be installed and i can find the .so file in /opt/VPHP_Standalone54/ folder.
I added the extension to php.ini using an external config file (valentina.ini -> extension=/opt/VPHP_Standalone54/php54_valentina_standalone.so).
phpinfo() shows the file is being parsed but im getting the following error when trying to use it:
PHP Warning: PHP Startup: Unable to load dynamic library '/opt/VPHP_Standalone54/php54_valentina_standalone.so' - libvshared_release_x64.so.500: cannot open shared object file: No such file or directory in Unknown on line 0
I have spent hours trying to figure out how i can solve this problem but i failed.
Please help me figure this out.. Thanks
Last edited by meekong (2013-02-11 19:08:54)
Offline
Does your package install that libvshared_release_x64.so.500 file?
If it does it might help adding the containing folder in an /etc/ld.so.conf.d/* script.
If not, then, well, it's missing.
Last edited by teekay (2013-02-10 17:53:08)
Offline
Hi,
Yes the package installs those files to the opt folder:
$ls -la /opt/VPHP_Standalone54/vcomponents
─┘
total 56008
drwxr-xr-x 3 root root 4096 Feb 10 17:21 ./
drwxr-xr-x 4 root root 4096 Feb 10 17:21 ../
-rwxr-xr-x 1 root root 20264 Feb 10 17:21 libdns_sd.so*
-rwxr-xr-x 1 root root 18277240 Feb 10 17:21 libicudata.so.48*
-rwxr-xr-x 1 root root 2183192 Feb 10 17:21 libicui18n.so.48*
-rwxr-xr-x 1 root root 52432 Feb 10 17:21 libicuio.so.48*
-rwxr-xr-x 1 root root 1589528 Feb 10 17:21 libicuuc.so.48*
lrwxrwxrwx 1 root root 17 Feb 5 16:48 libjpeg.so -> libjpeg.so.62.0.0
lrwxrwxrwx 1 root root 17 Feb 5 16:48 libjpeg.so.62 -> libjpeg.so.62.0.0
-rw-r--r-- 1 root root 143496 Feb 10 17:21 libjpeg.so.62.0.0
lrwxrwxrwx 1 root root 16 Feb 5 16:48 libtiff.so -> libtiff.so.4.2.1
lrwxrwxrwx 1 root root 16 Feb 5 16:48 libtiff.so.4 -> libtiff.so.4.2.1
-rw-r--r-- 1 root root 367064 Feb 10 17:21 libtiff.so.4.2.1
lrwxrwxrwx 1 root root 29 Feb 5 16:48 libvclient_release_x64.so -> libvclient_release_x64.so.500*
-rwxr-xr-x 1 root root 5292288 Feb 10 17:21 libvclient_release_x64.so.500*
lrwxrwxrwx 1 root root 29 Feb 5 16:48 libvkernel_release_x64.so -> libvkernel_release_x64.so.500*
-rwxr-xr-x 1 root root 19054264 Feb 10 17:21 libvkernel_release_x64.so.500*
lrwxrwxrwx 1 root root 29 Feb 5 16:48 libvreport_release_x64.so -> libvreport_release_x64.so.500*
-rwxr-xr-x 1 root root 7777168 Feb 10 17:21 libvreport_release_x64.so.500*
lrwxrwxrwx 1 root root 29 Feb 5 16:48 libvshared_release_x64.so -> libvshared_release_x64.so.500*
-rwxr-xr-x 1 root root 2462760 Feb 10 17:21 libvshared_release_x64.so.500*
lrwxrwxrwx 1 root root 15 Feb 5 16:48 libz.so -> libz.so.1.2.3.3
lrwxrwxrwx 1 root root 15 Feb 5 16:48 libz.so.1 -> libz.so.1.2.3.3
-rw-r--r-- 1 root root 93536 Feb 10 17:21 libz.so.1.2.3.3
drwxrwxr-x 5 root root 4096 Nov 16 12:55 vresources/
The .500 file seems to be the real file and the others a symlink to this file.
I added valentina.conf to /etc/ld.so.conf.d/ and put /opt/VPHP54_Standalone54/vcomponents in it and restarted httpd.
However im still getting this error. Whats wrong with this file?
Offline
I forgot to reload the ld config
sudo ldconfig -f /etc/ld.so.conf
Now im getting:
php: /opt/VPHP_Standalone54/vcomponents/libz.so.1: version `ZLIB_1.2.3.3' not found (required by /usr/lib/libxml2.so.2)
I got zlib installed but at version: 1.2.7-1
Offline
Did you run ldconfig afterwards?
Another solution would be to install the libs to /usr/lib, of course. Just make sure to delete the libz.so*, libtiff and libjepg stuff and pray it works with the system ones.
EDIT: boy I'm slow today.
Anyways, looking at their DEB file's postinst control file, they move stuff to /usr/local/lib.
Try deleting the libz.so* they ship there, it seems to mess up your libxml2!
Last edited by teekay (2013-02-10 18:10:01)
Offline
How did you extract the .deb file correctly to find the postinst files on Arch?
Offline
Nevermind, found it
ar xv package.deb
ldconfig -p | grep libz ─┘
libz.so.1 (libc6,x86-64) => /opt/VPHP_Standalone54/vcomponents/libz.so.1
libz.so.1 (libc6,x86-64) => /usr/lib/libz.so.1
libz.so.1 (libc6) => /usr/lib32/libz.so.1
libz.so (libc6,x86-64) => /usr/lib/libz.so
This is the current output of ldconfig btw!
Offline
I deleted all libz's
ldconfig -p | grep libz ─┘
libz.so.1 (libc6,x86-64) => /usr/local/lib/libz.so.1
and in /usr/local/lib are the files from the vcomponents folder. I created a symlink for libz.so.1 to libz.so.1 -> libz.so.1.2.3.3
It's still complaining about the files
Last edited by meekong (2013-02-10 18:30:43)
Offline
Yes, and that's bad. See
ldd /usr/lib/libxml2.so.2
and the output you posted:
"php: /opt/VPHP_Standalone54/vcomponents/libz.so.1: version `ZLIB_1.2.3.3' not found (required by /usr/lib/libxml2.so.2)"
This means you have a broken libz.so.1 in your ld.so cache => bad! Delete the /opt/VPHP_Standalone54/vcomponents/libz.so.1 and re-run ldconfig. Don't logout or do anything else before you're done with that
Offline
ldd /usr/lib/libxml2.so.2 ─┘
/usr/lib/libxml2.so.2: /opt/VPHP_Standalone54/vcomponents/libz.so.1: version `ZLIB_1.2.3.3' not found (required by /usr/lib/libxml2.so.2)
linux-vdso.so.1 (0x00007fffcef58000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f80a2197000)
libz.so.1 => /opt/VPHP_Standalone54/vcomponents/libz.so.1 (0x00007f80a1f80000)
liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f80a1d5d000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f80a1a5e000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f80a16b1000)
/usr/lib64/ld-linux-x86-64.so.2 (0x00007f80a270a000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f80a1495000)
ls -la vcomponents/libz* ─┘
lrwxrwxrwx 1 root root 15 Feb 5 16:48 vcomponents/libz.so -> libz.so.1.2.3.3
lrwxrwxrwx 1 root root 15 Feb 5 16:48 vcomponents/libz.so.1 -> libz.so.1.2.3.3
-rw-r--r-- 1 root root 93536 Feb 10 17:21 vcomponents/libz.so.1.2.3.3
I cleared all the other libraries, however it still wont take the right one.
Any idea how to force this?
Thanks for all your help, could of gotten this far without you
Offline
ldconfig -p | grep libz ─┘
libz.so.1 (libc6,x86-64) => /opt/VPHP_Standalone54/vcomponents/libz.so.1
libz.so.1 (libc6,x86-64) => /usr/lib/libz.so.1
libz.so (libc6,x86-64) => /opt/VPHP_Standalone54/vcomponents/libz.so
libz.so (libc6,x86-64) => /usr/lib/libz.so
ldd /usr/lib/libxml2.so.2 ─┘
/usr/lib/libxml2.so.2: /opt/VPHP_Standalone54/vcomponents/libz.so.1: version `ZLIB_1.2.3.3' not found (required by /usr/lib/libxml2.so.2)
linux-vdso.so.1 (0x00007fffcf3b3000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007ff0ebf85000)
libz.so.1 => /opt/VPHP_Standalone54/vcomponents/libz.so.1 (0x00007ff0ebd6e000)
liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007ff0ebb4b000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007ff0eb84c000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007ff0eb49f000)
/usr/lib64/ld-linux-x86-64.so.2 (0x00007ff0ec4f8000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007ff0eb283000)
So basicly libxml2 wants the version in /usr/lib which is higher than the one in VPHP package.
How can i tell libxml to use that version and the ldd php54_valentina_standalone.so to take the version in /opt/VPHP/vcomponents?
Offline
You need to get rid of /opt/VPHP_Standalone54/vcomponents/libz.so.1 completely. It's not really needed.
Let's play with data.tar.bz2 from the DEB. First get rid of libs we do get from Arch directly
└» tar xf ../data.tar.bz2
└» rm -f ./opt/VPHP_Standalone54/vcomponents/libz.so*
└» rm -f ./opt/VPHP_Standalone54/vcomponents/libjpeg.so*
└» rm -f ./opt/VPHP_Standalone54/vcomponents/libdns_sd.so
└» LD_LIBRARY_PATH=./opt/VPHP_Standalone54/vcomponents ldd ./opt/VPHP_Standalone54/php54_valentina_standalone.so
linux-vdso.so.1 (0x00007fffc25ff000)
libvshared_release_x64.so.500 => ./opt/VPHP_Standalone54/vcomponents/libvshared_release_x64.so.500 (0x00007fd9e16e9000)
libvclient_release_x64.so.500 => ./opt/VPHP_Standalone54/vcomponents/libvclient_release_x64.so.500 (0x00007fd9e0fde000)
libvkernel_release_x64.so.500 => ./opt/VPHP_Standalone54/vcomponents/libvkernel_release_x64.so.500 (0x00007fd9dfbb3000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fd9df86e000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fd9df570000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fd9df35a000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fd9defad000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fd9deda9000)
libtiff.so.4 => ./opt/VPHP_Standalone54/vcomponents/libtiff.so.4 (0x00007fd9deb4e000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00007fd9de924000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fd9de708000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007fd9de4f1000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00007fd9de2a0000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007fd9de098000)
libdns_sd.so => /usr/lib/libdns_sd.so (0x00007fd9dde8e000)
libicudata.so.48 => ./opt/VPHP_Standalone54/vcomponents/libicudata.so.48 (0x00007fd9dcb1f000)
libicui18n.so.48 => ./opt/VPHP_Standalone54/vcomponents/libicui18n.so.48 (0x00007fd9dc70a000)
libicuio.so.48 => ./opt/VPHP_Standalone54/vcomponents/libicuio.so.48 (0x00007fd9dc4fd000)
libicuuc.so.48 => ./opt/VPHP_Standalone54/vcomponents/libicuuc.so.48 (0x00007fd9dc178000)
/usr/lib64/ld-linux-x86-64.so.2 (0x00007fd9e1d65000)
libavahi-client.so.3 => /usr/lib/libavahi-client.so.3 (0x00007fd9dbf66000)
libdbus-1.so.3 => /usr/lib/libdbus-1.so.3 (0x00007fd9dbd20000)
libavahi-common.so.3 => /usr/lib/libavahi-common.so.3 (0x00007fd9dbb13000)
Looks good.
Now it also ships an old libtiff.so.4* and libs from an old icu 4.8. Remove at least the libtiff.so symlink
└» rm -f ./opt/VPHP_Standalone54/vcomponents/libtiff.so
The libicu*.48 stuff shouldn't really hurt, you can install those.
Last edited by teekay (2013-02-10 18:57:52)
Offline
Wow,
I can only thank you so much!
You nailed it on the deleting part. Turns out vphp so file works great with the already provided libz.
I deleted all the stuff manually like you said and it works like a charm.
Now i need to figure out how to let PKGBUILD do it for me and run ldconfig after installing it with pacman
thanks!
Offline