Як побудувати завиток за допомогою останнього openssl?


18

Тому я будую openssl

./config
make
sudo make install
sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`

Я будую завиток

./configure --with-ssl 
make
make install

OpenSSL виглядає встановленим правильно:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

однак curl використовує стару версію opensl (1.0.1f замість 1.0.1g):

curl --version
curl 7.37.0 (x86_64-unknown-linux-gnu) libcurl/7.37.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 libssh2/1.4.3 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp 
Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 

як змусити curl використовувати нову версію?

Я хочу спробувати новіші версії, тому що я борюся з якоюсь дивною помилкою opensl / curl №1 # 2

Редагувати: Я теж намагався ./configure --with-ssl=/usr/local/ssl/include/openssl, успіху не було

Edit2: Поки я також намагався:

  • sudo ./configure --with-ssl --with-libssl-prefix=/usr/local/ssl
  • ./configure --with-ssl=/usr/local/ssl
  • PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure
  • PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure --with-ssl
  • PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure --with-ssl=/usr/local/ssl/include/openssl

успіху немає ...

Відповіді:


13

Вам потрібно вказати каталог, де встановлено OpenSSL (ваше посилання не є ні необхідним, ні достатнім)

./configure --with-ssl=/usr/local/ssl

EDIT: Крім того, ви можете встановити PKG_CONFIG_PATHзмінну вашого середовища (як це запропоновано ./configure --help):

PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure


1
Перший варіант дає мені configure: error: OpenSSL libs and/or directories were not found where specified!Будь ласка, перегляньте мою редагування - помилки немає, --with-ssl=/usr/local/ssl/include/opensslале використовується старий openssl. другий варіант конфігурує curl без HTTPS
Пітер

Я, можливо, неправильно зрозумів каталоги, у мене зараз немає доступу до вікна Linux ... В основному, ваша ручна установка OpenSSL помістила файл openssl.pcкудись, вам потрібно вказати PKG_CONFIG_PATHна каталог, де знаходиться цей файл (і переконайтеся, що ви pkg-configвстановили, звичайно).
fkraiem

1
PKG_CONFIG_PATH шлях правильний, у мене також встановлено pkg-config, але він якось не працює. без --with-sslHTTPS немає, з --with-sslним кидається помилкаconfigure: error: OpenSSL libs and/or directories were not found where specified!
Пітер

Де і як ви встановили ssl? Використовуйте правильний шлях.
Пантера

@ bodhi.zazen Я встановив обидва пакети Ubuntu з офіційних сховищ і склав openssl в/usr/local/ssl
Пітер,

6
sudo apt-get install libssl-dev
./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu
sudo make
sudo make install

Чи все, що мені потрібно для створення curl 7.43 на ubuntu 15.04


Гарний. Це спрацювало 19.04. Якось curlне міг розпізнати мого openssl, тому я зробив ці точні кроки, libssl-devі це спрацювало як шарм!
Олексій

5

Що я з'ясував, коли я проходив ту саму вправу, це те, що curl просто не може працювати зі статичними бібліотеками openssl. Він завжди шукав динаміки, незалежно від того, чим я займався, тому врешті-решт я зробив три речі, які працювали на мене

Configured openssl with enable-shared: ./config enable-shared
Configured curl with openssl: ./configure --with-ssl
Used LD_LIBRARY_PATH: LD_LIBRARY_PATH=/usr/local/lib:/usr/local/ssl/lib /usr/local/bin/curl -V

Остання команда з прапором -V покаже версію openssl, яку використовує curl. Я додав / usr / local / lib до LD_LIBRARY_PATH, щоб переконатися, що curl використовує правильну версію libcurl.


Це допомогло мені, особливо, LD_LIBRARY_PATHщо я додав до bash_profile. Я робив щось подібне, але замість першого рядка я використовував export CFLAGS=-fPIC; ./config shared(не enable-shared). Для curl я використовував, --with-ssl=/usr/local/sslхоча аргумент шляху, можливо, був зайвим.
mahemoff

1
Я радий, що він працював для вас, і так, шлях у --with-ssl є зайвим, адже те, що ви вказали, - це місце за замовчуванням для збірки.
Олег Гриб

4

Це був довгий і важкий шлях для мене. Години і години (ви знаєте, як це). Ось що я знайшов:

Для Ubuntu 12.04 / 14.04 вам потрібно вручну встановити і openssl, і curl

Вручну встановіть openssl 1.0.2g:

sudo apt-get install make # (Install compiling library Make)
wget https://www.openssl.org/source/openssl-1.0.2g.tar.gz # (Download the latest OpenSSL 1.0.2g binaries)
tar -xzvf openssl-1.0.2g.tar.gz # (Extract the tar ball to the local directory)
cd openssl-1.0.2g # (Enter extracted OpenSSL directory)
sudo ./config # (Configure binaries for compiling)
sudo make install # (install configured binaries)
sudo ln -sf /usr/local/ssl/bin/openssl `which openssl` # (This will create a sym link to the new binaries)
openssl version -v

ЯКЩО Ви хочете NGHTTP2 (необов’язково / рекомендовано):

# Get build requirements
# Some of these are used for the Python bindings
# this package also installs
sudo apt-get install g++ make binutils autoconf automake autotools-dev libtool pkg-config \
  zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \
  libjemalloc-dev cython python3-dev python-setuptools

# Build nghttp2 from source
git clone https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
autoreconf -i
automake
autoconf
./configure
make
sudo make install

Вручну встановіть curl:

cd ~
sudo apt-get build-dep curl
wget http://curl.haxx.se/download/curl-7.46.0.tar.bz2
tar -xvjf curl-7.46.0.tar.bz2
cd curl-7.46.0
./configure --with-nghttp2 --with-ssl --with-libssl-prefix=/usr/local/ssl # This is the line I had the most trouble with, especially figure out --with-libssl-prefix
make
sudo make install
sudo ldconfig

Заключні кроки

$ sudo ldconfig
$ sudo service apache2 restart # if you're using apache

Тепер, коли ви закінчите, спробуйте $ curl --versionі переконайтеся, що ви бачите там правильну версію openssl. Зокрема openssl> = 1.0.2g (і nghttp2, якщо ви вибрали це)

$ curl --version
curl 7.50.2 (x86_64-pc-linux-gnu) libcurl/7.50.2 OpenSSL/1.0.2k zlib/1.2.8 nghttp2/1.21.0-DEV
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets 

цитати: curl opennssl


2
./configure --with-ssl=/usr/lib/ssl --libdir=/usr/lib/x86_64-linux-gnu
sudo make
sudo make install

Після декількох годин, мені вдалося включити https з libcurl 7.38 в ubuntu 15.05


1

Мені вдалося скласти curl за допомогою статичних бібліотек OpenSSL. Це версія tl; dr:

OpenSSL

./config no-shared --prefix=$PWD/_installdir
make depend && make && make install

завиток

LIBS="-ldl" ./configure --prefix=$PWD/_installdir --with-ssl=/something/opensslrootdir/_installdir --disable-shared
make && make install

LIBS="-ldl"Частина має важливе значення.


0

Компіляція openssl з використанням конфігурації за замовчуванням генерує лише статичну бібліотеку , тому, якщо ви хочете використовувати статичну бібліотеку в curl, ви можете зробити так:

LIBS="-ldl -lpthread" ./configure --disable-shared --prefix=/usr/local/curl --with-ssl=/usr/local/ssl

Я шукав відповіді звідси .

ПРИМІТКА: таким способом створюється лише статична бібліотека curl.


0

Я, як правило, дотримувався відповіді Джексонкра, але мені було потрібно все вищезгадане іншими людьми разом:

LIBS="-ldl" PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure --with-ssl --with-libssl-prefix=/usr/local/ssl --disable-shared

--disable-shared необов'язково, я думаю, це, просто мені це потрібно

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.