Làm thế nào để xây dựng curl với openssl mới nhất?


18

Vì vậy, tôi xây dựng openssl

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

Tôi xây dựng xoăn

./configure --with-ssl 
make
make install

OpenSSL có vẻ được cài đặt chính xác:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

tuy nhiên curl sử dụng phiên bản openssl cũ (1.0.1f thay vì 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 

Làm thế nào để làm xoăn sử dụng phiên bản mới?

Tôi muốn dùng thử các phiên bản mới nhất, vì tôi đang chiến đấu với một số lỗi openssl / curl lạ # 1 # 2

Chỉnh sửa: Tôi cũng đã thử ./configure --with-ssl=/usr/local/ssl/include/openssl, không thành công

Edit2: Cho đến nay tôi cũng đã thử:

  • 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

không thành công...

Câu trả lời:


13

Bạn cần chỉ định thư mục nơi OpenSSL được cài đặt (symlink của bạn không cần thiết cũng không đủ)

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

EDIT: Ngoài ra, bạn có thể đặt PKG_CONFIG_PATHbiến môi trường của mình (như được đề xuất bởi ./configure --help):

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


1
tùy chọn đầu tiên mang lại cho tôi configure: error: OpenSSL libs and/or directories were not found where specified!Vui lòng xem chỉnh sửa của tôi - không có lỗi với --with-ssl=/usr/local/ssl/include/opensslnhưng openssl cũ được sử dụng. tùy chọn thứ hai cấu hình curl mà không cần HTTPS
Peter

Tôi có thể đã nhận được các thư mục hơi sai, tôi không có quyền truy cập vào hộp Linux ngay bây giờ ... Về cơ bản, cài đặt OpenSSL thủ công của bạn đặt một tệp openssl.pcở đâu đó, bạn cần trỏ PKG_CONFIG_PATHđến thư mục chứa tệp đó (và đảm bảo bạn đã pkg-configcài đặt, tất nhiên).
fkraiem

1
Đường dẫn PKG_CONFIG_PATH là chính xác, tôi cũng đã cài đặt pkg-config, nhưng không hiểu sao nó không hoạt động. không --with-sslcó HTTPS, không có --with-ssllỗiconfigure: error: OpenSSL libs and/or directories were not found where specified!
Peter

Bạn đã cài đặt ssl ở đâu và như thế nào? Sử dụng đúng đường dẫn.
Panther

@ bodhi.zazen Tôi đã cài đặt cả gói Ubuntu từ kho chính thức và được biên dịch openssl trong/usr/local/ssl
Peter

5

Những gì tôi phát hiện ra, khi tôi đang trải qua bài tập tương tự, đó là curl đơn giản là không thể làm việc với các thư viện tĩnh openssl. Nó luôn tìm kiếm sự năng động, bất kể tôi đang làm gì, vì vậy cuối cùng tôi đã làm ba việc có ích cho tôi

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

Lệnh sau với cờ -V sẽ hiển thị phiên bản openssl được sử dụng bởi curl. Tôi đã thêm / usr / local / lib vào LD_LIBRARY_PATH để đảm bảo rằng curl sử dụng phiên bản libcurl phù hợp.


Điều này đã giúp tôi, đặc biệt là LD_LIBRARY_PATHtôi đã thêm vào bash_profile. Tôi đã làm một cái gì đó tương tự, nhưng thay vì dòng đầu tiên, tôi đã sử dụng export CFLAGS=-fPIC; ./config shared(không cho phép chia sẻ). Đối với curl, tôi đã sử dụng --with-ssl=/usr/local/sslmặc dù đường dẫn arg có thể đã dư thừa.
mahemoff

1
Tôi rất vui vì nó hoạt động cho bạn và vâng, đường dẫn trong --with-ssl là không cần thiết, bởi vì những gì bạn đã cung cấp là một vị trí mặc định cho bản dựng.
Oleg Gryb

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

Là tất cả những gì tôi cần để xây dựng curl 7.43 trên Ubuntu 15.04


4

Đây là một con đường dài và gian khổ đối với tôi. Giờ và giờ (bạn biết nó như thế nào). Đây là những gì tôi tìm thấy:

Đối với Ubuntu 12.04 / 14.04, bạn phải cài đặt thủ công cả opensslcurl

Cài đặt thủ công 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

NẾU BẠN MUỐN NGHTTP2 (tùy chọn / đề xuất):

# 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

Cài đặt thủ công 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

Bước cuối cùng

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

Bây giờ bạn đã hoàn tất, hãy thử $ curl --versionvà đảm bảo bạn thấy phiên bản openssl chính xác trong đó. Cụ thể openssl> = 1.0.2g (và nghttp2 nếu bạn chọn nó)

$ 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 

trích dẫn: curl opennssl


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

Sau vài giờ vật lộn, tôi đã xoay sở để kích hoạt https với libcurl 7.38 trong ubfox 15.05


1

Tôi đã quản lý để biên dịch curl bằng các thư viện OpenSSL tĩnh. Đây là phiên bản tl; dr:

OpenSSL

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

Xoăn

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

Phần LIBS="-ldl"này là thiết yếu.


0

Biên dịch openssl sử dụng cấu hình mặc định chỉ tạo thư viện tĩnh , vì vậy, nếu bạn muốn sử dụng thư viện tĩnh trong curl, bạn có thể làm như thế này:

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

Tôi đã tìm kiếm câu trả lời từ đây .

LƯU Ý: theo cách này chỉ tạo thư viện tĩnh curl.


0

Tôi thường làm theo câu trả lời của Jacksonkr, nhưng tôi cần tất cả những điều được đề cập ở trên bởi những người khác:

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

--disable-shared là tùy chọn, tôi đoán, chỉ là tôi cần nó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.