Fórum Root.cz
Hlavní témata => Distribuce => Téma založeno: David 26. 02. 2013, 15:04:51
-
Ahoj, používám Debian Squeeze a v něm mám CURL
curl 7.21.0 (i486-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
CURL chci využít k přihlášení na exchange server pomocí EWS. https://code.google.com/p/php-ews/ (https://code.google.com/p/php-ews/)
Momentálně se snažím rozchodit NTLM u CURL. Bohužel nefunguje.
curl https://mail.company.cz/EWS/Exchange.asmx -w %{http_code} --ntlm -u *name*:*passwd* -k -v
Vždycky skončím na tomhle:
* gss_init_sec_context() failed: : Credentials cache file '/tmp/krb5cc_0' not foundWWW-Authenticate: Negotiate
Jde o nějaký BUG, podle toho co jsem našel: https://bugs.launchpad.net/ubuntu/+source/curl/+bug/675974, zkusil jsem stáhnout a zkompilovat novější CURL. Všechno vypadalo vpořádku.
curl 7.23.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
Předpokládám že problém je tedy v libcurl, existuje nějaká možnost jak ji updatovat? Zkompilovat ze zdrojáku, popř. stahnout z nějakého backport repozitáře? A nebo je jediná možnost update na Wheezy?
Předem díky za rady
David
-
Pokud není v backportech, tak backportnout:
http://forums.debian.net/viewtopic.php?f=16&t=38976
-
Aha, takže ten zdroják nejnovější libcurl stáhnu z repozitáře SIDu?
deb-src http://ftp.us.debian.org/debian/ sid main
Nebo z GITu? (https://github.com/bagder/curl (https://github.com/bagder/curl)) a následně udělám pomocí nástroje dpkg-buildpackage či v případě GITu nástrojem dh-make deb backport balíček?
Co je výhodnější? Předpokládám že repozitář SIDu..
-
Co je výhodnější? Předpokládám že repozitář SIDu..
Fungujou všechny možnosti. Ale nejjednodušší a nejbezproblémovější je repozitář sidu/wheezyho. Ten návod co jsem postoval je dost dobrej, všechny detaily se dočteš tam.
-
Já sem právě koukal, vypadá to dost dobře. Moc děkuju. Ještě by mě zajímalo jak je to se závislostmi... může například novější libcurl (nebo jiná knihovna) vyžadovat nějakou novější verzi jiné knihovny, nebo nějakého programu? Pokud ano, jak se to taková situace řeší?
Nebo tohle řeší vše?
apt-get build-dep <packagename>
-
Tak jsem skončil docela brzo...
apt-get build-dep libcurl3
Reading package lists... Done
Building dependency tree
Reading state information... Done
Picking 'curl' as source package instead of 'libcurl3'
E: Build-Depends dependency for curl cannot be satisfied because no available versions of package debhelper can satisfy version requirements
-
Tak jsem nainstaloval:
apt-get install libmythes-dev devscripts
apt-get -t squeeze-backports install "debhelper"
a vypadalo to dobře
apt-get build-dep libcurl3
se provedlo
přejmenoval jsem balík pomocí debchange -b -v 7.26.0-1~bpo60+1 - mám správně? a nakonec jsem skončil u configure scriptu (asi):
configure: Configured to build curl/libcurl:
curl version: 7.26.0
Host setup: i486-pc-linux-gnu
Install prefix: /usr
Compiler: gcc
SSL support: enabled (NSS)
SSH support: enabled (libSSH2)
zlib support: enabled
krb4 support: no (--with-krb4*)
GSSAPI support: enabled (MIT/Heimdal)
SPNEGO support: no (--with-spnego)
TLS-SRP support: no (--enable-tls-srp)
resolver: default (--enable-ares / --enable-threaded-resolver)
ipv6 support: enabled
IDN support: enabled
Build libcurl: Shared=yes, Static=yes
Built-in manual: enabled
--libcurl option: enabled (--disable-libcurl-option)
Verbose errors: enabled (--disable-verbose)
SSPI support: no (--enable-sspi)
ca cert bundle: /etc/ssl/certs/ca-certificates.crt
ca cert path: no
LDAP support: enabled (OpenLDAP)
LDAPS support: no (--enable-ldaps)
RTSP support: enabled
RTMP support: enabled (librtmp)
Protocols: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP POP3 POP3S RTMP RTSP SCP SFTP SMTP SMTPS TELNET TFTP
touch configure-stamp
dh_testdir
/usr/bin/make -C debian/build
make[1]: Entering directory `/home/david/libcurl/curl-7.26.0/debian/build'
Making all in lib
make[2]: Entering directory `/home/david/libcurl/curl-7.26.0/debian/build/lib'
/usr/bin/make all-am
make[3]: Entering directory `/home/david/libcurl/curl-7.26.0/debian/build/lib'
/bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I../include/curl -I../include -I../include -I../lib -I../lib -DDEBUGBUILD -O2 -g -pedantic -Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wno-long-long -Wfloat-equal -Wno-multichar -Wsign-compare -Wundef -Wno-format-nonliteral -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type -Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion -Wno-sign-conversion -Wvla -Wno-system-headers -c -o libcurl_la-file.lo `test -f 'file.c' || echo './'`file.c
libtool: Version mismatch error. This is libtool 2.4.2 Debian-2.4.2-1, but the
libtool: definition of this LT_INIT comes from libtool 2.2.6b.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.2 Debian-2.4.2-1
libtool: and run autoconf again.
make[3]: *** [libcurl_la-file.lo] Error 63
make[3]: Leaving directory `/home/david/libcurl/curl-7.26.0/debian/build/lib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/david/libcurl/curl-7.26.0/debian/build/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/david/libcurl/curl-7.26.0/debian/build'
make: *** [build-stamp] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
libtool: Version mismatch error. This is libtool 2.4.2 Debian-2.4.2-1, but the
libtool: definition of this LT_INIT comes from libtool 2.2.6b.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.2 Debian-2.4.2-1
libtool: and run autoconf again.
Co teď? Hledat libtool 2.2.6b v backport repozitáři? Co když tam nebude?
-
Teda kecám, libtool 2.2.6b-2 mám já...
-
Zkusil jsem autoreconf --force a následně spustit kompilaci:
dpkg-buildpackage -rfakeroot -us -uc
a vypadá to, že se kompiluje... ale jestli to bude fungovat?
-
Ne, tak tohle nepomohlo. Stejný problém.
-
Máš tam starou libtool - máš 2.2.6 a curl potřebuje 2.4.2. Takže backportnout libtool :) . A tak dále v případě dalších problémů :) .
Zkoušim to u sebe, libtool se už kompiluje asi hodinu :) . Teda probíhaj testy, kompilace trvala asi půl minuty..
-
pokud nezaberou hrátky přímo s curl, doporučuju obezličku přes cntlm :-)
-
Tak balíčkování curl stejně selhalo:
dh_install -plibcurl3-gnutls -plibcurl4-gnutls-dev \
--sourcedir=debian/tmp-gnutls
dh_install: libcurl3-gnutls missing files (usr/lib/*/libcurl-gnutls.so.4*), aborting
make: *** [install] Error 255
Zřejmě je chyba někde v Makefile, protože ten soubor tam je, jenom o adresář výš:
$ find . -name 'libcurl-gnutls.so.4'
./debian/build-gnutls/lib/.libs/libcurl-gnutls.so.4
./debian/tmp-gnutls/usr/lib/libcurl-gnutls.so.4
S tím už teda nepomůžu, IMHO je to bug. Možná by to teda šlo nainstalovat bez debhelperu přes make install (po tom backportu libtool).
-
No... a v tuhle chvíli na to kašlu a říkám si ten linux je ale blbej systém.... nemám bohužel čas hodiny kompilovat a hrabat se ve scriptech a dokumentacích, řešit závislosti apod...
Pravděpodobně nainstaluju Wheezy... ale co mě na tom zaráží je to, že o tom bugu se ví děsně dlouho a ačkoliv jsem googlil co to šlo nikde jsem nenašel nějaké jednoduché řešení či nějaký fix pro Squeeze, který by tohle řešil. Jak je to možné?
Když ve Windows nějaká aplikace nefunguje, tak ji většinou s pomocí googlu rozchodím.. prostě něco doinstaluju/dokopíruju (třeba zkompilované knihovny) a aplikace začne fungovat.
Vím že linux a windows se srovnávat nedá.
-
No... a v tuhle chvíli na to kašlu a říkám si ten linux je ale blbej systém....
Okay. Myslel jsem, že se na to ještě podivám, ale zastavuju kompilaci.
-
Myslel jsem to hlavně z pohledu uživatele... kterej udělal všechno co mohl, pro to aby to fungovalo (hledal, četl, zkoušel, ptal se) ale místo fungujícího nástroje má prd a hodiny času v trapu a někdo kdo by mu mohl pomoci ho ve finále prakticky pošle někam... za jedno konstatování :) Tak tomu se říká linux komunita?
Každopádně děkuju za všechny tvoje tipy a postřehy.