সর্বশেষ ওপেনসেল দিয়ে কার্ল কীভাবে তৈরি করবেন?


18

তাই আমি ওপেনসেল তৈরি করি

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

আমি কার্ল তৈরি করি

./configure --with-ssl 
make
make install

ওপেনএসএসএল সঠিকভাবে ইনস্টল করা দেখায়:

openssl version
OpenSSL 1.0.1g 7 Apr 2014

তবে কার্ল পুরানো ওপেনসেল সংস্করণ ব্যবহার করে (1.0.1g এর পরিবর্তে 1.0.1f):

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 

কীভাবে কার্লকে নতুন সংস্করণ ব্যবহার করবেন?

আমি নতুন সংস্করণগুলি চেষ্টা করতে চাই, কারণ আমি কিছু অদ্ভুত ওপেনএসএল / কার্ল বাগ # 1 # 2 এর সাথে লড়াই করছি

সম্পাদনা: আমি চেষ্টাও করেছি ./configure --with-ssl=/usr/local/ssl/include/openssl, কোন সাফল্য নেই

সম্পাদনা 2: এখনও পর্যন্ত আমি চেষ্টা করেছি:

  • 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

আপনাকে ওপেনএসএসএল ইনস্টল করা ডিরেক্টরিটি নির্দিষ্ট করতে হবে (আপনার সিমলিংকটি প্রয়োজনীয় বা পর্যাপ্তও নয়)

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

সম্পাদনা: বিকল্পভাবে, আপনি আপনার 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তবে পুরানো ওপেনসেল ব্যবহৃত হয়েছে। দ্বিতীয় বিকল্পটি HTTPS ছাড়াই কার্ল কনফিগার করে
পিটার

আমি ডিরেক্টরিগুলি কিছুটা ভুল পেয়েছি, আমার এখনই লিনাক্স বাক্সে অ্যাক্সেস নেই ... মূলত, আপনার ম্যানুয়াল ওপেনএসএসএল ইনস্টলেশনটি একটি ফাইল openssl.pcঅন্য কোথাও রেখেছিল, আপনাকে PKG_CONFIG_PATHসেই ডিরেক্টরিটি নির্দেশ করতে হবে যেখানে ফাইলটি রয়েছে (এবং নিশ্চিত হয়ে নিন) আপনি অবশ্যই pkg-configইনস্টল করেছেন)।
fkraiem

1
PKG_CONFIG_PATH পাথটি সঠিক, আমি পিকেজি-কনফিগারও ইনস্টল করেছি, তবে কোনওভাবে এটি কাজ করে না। --with-sslএইচটিটিপিএস ছাড়া কোনও --with-sslত্রুটি নিক্ষেপ করেconfigure: error: OpenSSL libs and/or directories were not found where specified!
পিটার

আপনি কোথায় এবং কীভাবে এসএসএল ইনস্টল করেছেন? সঠিক পথটি ব্যবহার করুন।
প্যান্থার

@ বোধি.জাজেন আমি অফিসিয়াল সংগ্রহশালা থেকে উবুন্টু প্যাকেজ ইনস্টল করেছি এবং ওপেনএসএল সংকলিত করেছি/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

উবুন্টু 15.04 এ কার্ল 7.43 তৈরি করার জন্য আমার প্রয়োজনীয় সমস্ত কি?


সুন্দর। এটি 19.04 এ কাজ করেছে। কোনওরকম curlআমার সনাক্ত করতে পারেনি openssl, সুতরাং আমি এই সঠিক পদক্ষেপগুলি দিয়ে করেছি libssl-devএবং এটি কবজির মতো কাজ করেছে!
অ্যালেক্স

5

আমি যা জানতে পেরেছিলাম, যখন আমি একই অনুশীলনটি দিয়ে যাচ্ছিলাম, তা হল যে কার্লটি কেবল ওপেনসেল স্ট্যাটিক লাইব্রেরিগুলিতে কাজ করতে পারে না। এটি সর্বদা গতিশীলদের সন্ধান করছিল, আমি যা করছিলাম তা নির্বিশেষে তাই অবশেষে আমি তিনটি জিনিস আমার পক্ষে কাজ করেছিলাম

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

-ভি পতাকা সহ পরবর্তী কমান্ডটি কার্ল দ্বারা ব্যবহৃত ওপেনএসএল সংস্করণ দেখায়। কার্লটি সঠিকভাবে libcurl সংস্করণ ব্যবহার করে তা নিশ্চিত করার জন্য আমি LD_LIBRARY_PATH এ / usr / স্থানীয় / lib যুক্ত করেছি।


এটি আমাকে সহায়তা করেছে, বিশেষত LD_LIBRARY_PATHযা আমি বাশ_ প্রোফাইলে যুক্ত করেছি। আমি অনুরূপ কিছু করেছি, তবে প্রথম লাইনের পরিবর্তে, আমি ব্যবহার করেছি export CFLAGS=-fPIC; ./config shared(সক্ষম-ভাগ করা হয়নি)। কার্লের জন্য, আমি ব্যবহার করেছি --with-ssl=/usr/local/sslযদিও পথের আরগটি অনর্থক হতে পারে।
মাহেমফ

1
আমি আনন্দিত যে এটি আপনার পক্ষে কাজ করেছে এবং হ্যাঁ, - এসএসএল-এর পথটি নিরর্থক, কারণ আপনি যা সরবরাহ করেছেন তা বিল্ডের জন্য একটি ডিফল্ট অবস্থান।
ওলেগ গ্রিব 16

4

এটি ছিল আমার জন্য দীর্ঘ এবং কষ্টকর পথ। ঘন্টা এবং ঘন্টা (আপনি এটি জানেন কীভাবে)। আমি যা পেয়েছি তা এখানে:

জন্য উবুন্টু 12.04 / 14.04 আপনি করতে হবে নিজে উভয় ইনস্টল OpenSSL এবং কার্ল

ওপেনসেল ১.০.২ জি ম্যানুয়ালি ইনস্টল করুন:

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

আপনি যদি এনজিএইচটিটিপি 2 চান (alচ্ছিক / প্রস্তাবিত):

# 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

ম্যানুয়ালি কার্ল ইনস্টল করুন:

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এবং নিশ্চিত করুন যে আপনি সেখানে ওপেনসেলের সঠিক সংস্করণটি দেখতে পেয়েছেন। বিশেষত ওপেনসেল> = 1.0.2 জি (এবং আপনি যদি এটি বেছে নিয়েছেন তবে এনজিটিপি 2)

$ 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 

উদ্ধৃতি: কার্ল ওপেনসেল


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

কয়েক ঘন্টা লড়াই করার পরে আমি উবুন্টু 15.05 এ লাইবকার্ল 7.38 সহ https সক্ষম করতে সক্ষম হয়েছি


1

আমি স্ট্যাটিক ওপেনএসএসএল লাইব্রেরি ব্যবহার করে কার্ল সংকলন করতে সক্ষম হয়েছি। এটি 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

ওপেনসেল ব্যবহারের ডিফল্ট কনফিগার সংকলন কেবল স্থির লাইব্রেরি উত্পন্ন করে , সুতরাং, আপনি যদি কার্ল মধ্যে স্ট্যাটিক লাইব্রেরি ব্যবহার করতে চান তবে আপনি এটি করতে পারেন:

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

আমি এখান থেকে উত্তর চেয়েছি

দ্রষ্টব্য: এই পদ্ধতি অনুসরণ করে কেবল কার্ল স্ট্যাটিক গ্রন্থাগার উত্পন্ন হয়।


0

আমি সাধারণত জ্যাকসনকরের উত্তর অনুসরণ করেছিলাম, তবে অন্যদের দ্বারা উল্লিখিত উপরের সমস্তটি আমার একসাথে প্রয়োজন:

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

--disable-shared optionচ্ছিক, আমার ধারণা, এটি কেবল আমার প্রয়োজন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.