AboveTustin icon indicating copy to clipboard operation
AboveTustin copied to clipboard

libssl1.0.0 Depreciated. New libssl-dev libssl1.1.0 I believe breaks Phantomjs

Open snowthrills opened this issue 6 years ago • 6 comments

Attempts to install libssl1.0.0 with sudo apt-get install libssl1.0.0 Error

Package libssl1.0.0 is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'libssl1.0.0' has no installation candidate

My Environment: > Raspberry PI 3b w/ Raspbian Image with desktop based on Debian Stretch Version:March 2018 Release date:2018-03-13 Kernel version:4.9

Error message:

phantomjs: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory

Tried to rebuild with (https://github.com/jprochazka/phantomjs-linux-armv7l )but end up with lots of errors

make[2]: Entering directory '/home/pi/Desktop/phantom/phantomjs/src/qt/qtbase/src/network' g++ -c -include .pch/Qt5Network -pipe -O2 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -std=c++0x -fno-exceptions -Wall -W -D_REENTRANT -DQT_NO_MTDEV -DQT_NO_LIBUDEV -DQT_NO_EVDEV -DQT_NO_TSLIB -DQT_NO_LIBINPUT -DQT_NO_GRAPHICSVIEW -DQT_NO_GRAPHICSEFFECT -DQT_NO_STYLESHEET -DQT_NO_STYLE_CDE -DQT_NO_STYLE_CLEANLOOKS -DQT_NO_STYLE_MOTIF -DQT_NO_STYLE_PLASTIQUE -DQT_NO_PRINTPREVIEWDIALOG -DQT_NO_USING_NAMESPACE -DQT_BUILD_NETWORK_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_CORE_LIB -I. -I../../include -I../../include/QtNetwork -I../../include/QtNetwork/5.5.1 -I../../include/QtNetwork/5.5.1/QtNetwork -I../3rdparty/zlib -Ikernel -I../../include/QtCore/5.5.1 -I../../include/QtCore/5.5.1/QtCore -I../../include/QtCore -I.moc -I../../mkspecs/linux-g++ -o .obj/qsslcertificate_openssl.o ssl/qsslcertificate_openssl.cpp ssl/qsslcertificate_openssl.cpp: In function ‘uint qHash(const QSslCertificate&, uint)’: ssl/qsslcertificate_openssl.cpp:63:30: error: invalid use of incomplete type ‘X509 {aka struct x509_st}’ return qHashBits(x509->sha1_hash, SHA_DIGEST_LENGTH, seed); ^~ In file included from /usr/include/openssl/crypto.h:31:0, from /usr/include/openssl/comp.h:16, from /usr/include/openssl/ssl.h:47, from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1, from ssl/qsslsocket_p.h:55, from ssl/qsslsocket_openssl_p.h:63, from ssl/qsslsocket_openssl_symbols_p.h:64, from ssl/qsslcertificate_openssl.cpp:35: /usr/include/openssl/ossl_typ.h:119:16: note: forward declaration of ‘X509 {aka struct x509_st}’ typedef struct x509_st X509; ^~~~~~~ ssl/qsslcertificate_openssl.cpp: In member function ‘QByteArray QSslCertificate::version() const’: ssl/qsslcertificate_openssl.cpp:87:68: error: invalid use of incomplete type ‘X509 {aka struct x509_st}’ QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1); ^~ In file included from /usr/include/openssl/crypto.h:31:0, from /usr/include/openssl/comp.h:16, from /usr/include/openssl/ssl.h:47, from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1, from ssl/qsslsocket_p.h:55, from ssl/qsslsocket_openssl_p.h:63, from ssl/qsslsocket_openssl_symbols_p.h:64, from ssl/qsslcertificate_openssl.cpp:35: /usr/include/openssl/ossl_typ.h:119:16: note: forward declaration of ‘X509 {aka struct x509_st}’ typedef struct x509_st X509; ^~~~~~~ ssl/qsslcertificate_openssl.cpp: In member function ‘QByteArray QSslCertificate::serialNumber() const’: ssl/qsslcertificate_openssl.cpp:96:45: error: invalid use of incomplete type ‘X509 {aka struct x509_st}’ ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber; ^~ In file included from /usr/include/openssl/crypto.h:31:0, from /usr/include/openssl/comp.h:16, from /usr/include/openssl/ssl.h:47, from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1, from ssl/qsslsocket_p.h:55, from ssl/qsslsocket_openssl_p.h:63, from ssl/qsslsocket_openssl_symbols_p.h:64, from ssl/qsslcertificate_openssl.cpp:35: /usr/include/openssl/ossl_typ.h:119:16: note: forward declaration of ‘X509 {aka struct x509_st}’ typedef struct x509_st X509; ^~~~~~~ ssl/qsslcertificate_openssl.cpp: In member function ‘QSslKey QSslCertificate::publicKey() const’: ssl/qsslcertificate_openssl.cpp:232:32: error: invalid use of incomplete type ‘X509 {aka struct x509_st}’ X509_PUBKEY *xkey = d->x509->cert_info->key; ^~ In file included from /usr/include/openssl/crypto.h:31:0, from /usr/include/openssl/comp.h:16, from /usr/include/openssl/ssl.h:47, from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1, from ssl/qsslsocket_p.h:55, from ssl/qsslsocket_openssl_p.h:63, from ssl/qsslsocket_openssl_symbols_p.h:64, from ssl/qsslcertificate_openssl.cpp:35: /usr/include/openssl/ossl_typ.h:119:16: note: forward declaration of ‘X509 {aka struct x509_st}’ typedef struct x509_st X509; ^~~~~~~ ssl/qsslcertificate_openssl.cpp:236:29: error: invalid use of incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’ if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) { ^~ In file included from /usr/include/openssl/crypto.h:31:0, from /usr/include/openssl/comp.h:16, from /usr/include/openssl/ssl.h:47, from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1, from ssl/qsslsocket_p.h:55, from ssl/qsslsocket_openssl_p.h:63, from ssl/qsslsocket_openssl_symbols_p.h:64, from ssl/qsslcertificate_openssl.cpp:35: /usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY {aka struct evp_pkey_st}’ typedef struct evp_pkey_st EVP_PKEY; ^~~~~~~~~~~ ssl/qsslcertificate_openssl.cpp:240:36: error: invalid use of incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’ } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) { ^~ In file included from /usr/include/openssl/crypto.h:31:0, from /usr/include/openssl/comp.h:16, from /usr/include/openssl/ssl.h:47, from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1, from ssl/qsslsocket_p.h:55, from ssl/qsslsocket_openssl_p.h:63, from ssl/qsslsocket_openssl_symbols_p.h:64, from ssl/qsslcertificate_openssl.cpp:35: /usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY {aka struct evp_pkey_st}’ typedef struct evp_pkey_st EVP_PKEY; ^~~~~~~~~~~ ssl/qsslcertificate_openssl.cpp:245:36: error: invalid use of incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’ } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_EC) { ^~ In file included from /usr/include/openssl/crypto.h:31:0, from /usr/include/openssl/comp.h:16, from /usr/include/openssl/ssl.h:47, from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1, from ssl/qsslsocket_p.h:55, from ssl/qsslsocket_openssl_p.h:63, from ssl/qsslsocket_openssl_symbols_p.h:64, from ssl/qsslcertificate_openssl.cpp:35: /usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY {aka struct evp_pkey_st}’ typedef struct evp_pkey_st EVP_PKEY; ^~~~~~~~~~~ ssl/qsslcertificate_openssl.cpp:250:36: error: invalid use of incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’ } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) { ^~ In file included from /usr/include/openssl/crypto.h:31:0, from /usr/include/openssl/comp.h:16, from /usr/include/openssl/ssl.h:47, from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1, from ssl/qsslsocket_p.h:55, from ssl/qsslsocket_openssl_p.h:63, from ssl/qsslsocket_openssl_symbols_p.h:64, from ssl/qsslcertificate_openssl.cpp:35: /usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY {aka struct evp_pkey_st}’ typedef struct evp_pkey_st EVP_PKEY; ^~~~~~~~~~~ Makefile:21893: recipe for target '.obj/qsslcertificate_openssl.o' failed make[2]: *** [.obj/qsslcertificate_openssl.o] Error 1 make[2]: Leaving directory '/home/pi/Desktop/phantom/phantomjs/src/qt/qtbase/src/network' Makefile:213: recipe for target 'sub-network-make_first' failed make[1]: *** [sub-network-make_first] Error 2 make[1]: Leaving directory '/home/pi/Desktop/phantom/phantomjs/src/qt/qtbase/src' Makefile:44: recipe for target 'sub-src-make_first' failed make: *** [sub-src-make_first] Error 2

ERROR: Failed to build PhantomJS! Building Qt Base failed.

snowthrills avatar Mar 19 '18 20:03 snowthrills

Installing PhantomJS is very difficult, and it's been a while now since I got it working on a Pi3. I tried building and it failed for me too. Eventually I tried using prebuilt versions I found scattered all over github and eventually found one that happened to work. Unfortunately, I gave that Pi3 to a friend so I don't have access to it. I'll do a search and get back to you if I find which one that worked.

kevinabrandon avatar Mar 20 '18 05:03 kevinabrandon

I think I may have gotten it from here: https://github.com/fg2it/phantomjs-on-raspberry

If it works please let me know and I'll update the project readme

kevinabrandon avatar Mar 20 '18 05:03 kevinabrandon

@snowthrills If you try my builds (the repo linked by kevinabradnon, to be specific, this build should work), I am interested in feedback 😄 (and if you are into it, I describe how you can build it yourself). The problem with most of the build available for phantomjs, and that includes the one you try to rebuild, is that they don't follow the official way and that end up creating additional dependencies. For example, phantomjs 2.1.1 binary is not supposed to have dependency on libssl since it is supposed to be statically linked to openssl. Anyway, feedback is welcome

fg2it avatar Mar 21 '18 19:03 fg2it

Thank you both.. Will give it a go this weekend. @kevinabrandon @fg2it

snowthrills avatar Apr 13 '18 12:04 snowthrills

I got a few spare moments at work today. Your build @fg2it works like a charm. Thank you!

Do you think I should I open an issue with on https://github.com/jprochazka/adsb-receiver repo @kevinabrandon for Pi installs?

snowthrills avatar Apr 13 '18 13:04 snowthrills

I fixed mine by

change apt repo config to also include Jessie and then update and install

sudo apt-get update sudo apt-get install libssl1.0.0

gonzalu avatar Nov 11 '18 19:11 gonzalu