ฉันจะติดตั้งไลบรารี OpenSSL บน Ubuntu ได้อย่างไร


235

ฉันกำลังพยายามสร้างรหัสบางอย่างบน Ubuntu 10.04 LTS ที่ใช้ OpenSSL 1.0.0 เมื่อฉันรัน make มันจะเรียกใช้ g ++ พร้อมตัวเลือก "-lssl" แหล่งรวม:

#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <openssl/des.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>

ฉันวิ่ง:

$ sudo apt-get install openssl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
openssl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

แต่ฉันคิดว่าแพ็คเกจ openssl ไม่ได้รวมไลบรารีไว้ด้วย ฉันได้รับข้อผิดพลาดในการทำ:

foo.cpp:21:25: error: openssl/bio.h: No such file or directory
foo.cpp:22:28: error: openssl/buffer.h: No such file or directory
foo.cpp:23:25: error: openssl/des.h: No such file or directory
foo.cpp:24:25: error: openssl/evp.h: No such file or directory
foo.cpp:25:25: error: openssl/pem.h: No such file or directory
foo.cpp:26:25: error: openssl/rsa.h: No such file or directory

ฉันจะติดตั้งไลบรารี OpenSSL C ++ บน Ubuntu 10.04 LTS ได้อย่างไร

ฉันทำman g++และ (ภายใต้ "ตัวเลือกสำหรับการเชื่อมโยง") สำหรับตัวเลือก -l มันระบุ: "ลิงเกอร์ค้นหารายการมาตรฐานของไดเรกทอรีสำหรับห้องสมุด ... " และ "ไดเรกทอรีที่ค้นหารวมถึงไดเรกทอรีระบบมาตรฐานหลาย ... " ไดเร็กทอรีระบบมาตรฐานเหล่านั้นคืออะไร


1
ไม่ใช่ของที่ซ้ำกัน แต่ตอบโดยแพ็คเกจ * -devel คืออะไร .
Troubadour

คุณพูดถูกเกี่ยวกับ-devแผนการตั้งชื่อ คุณอาจใช้ตัวsynapticจัดการแพ็กเกจเพื่อแสดงรายการแพ็กเกจทั้งหมดที่ชื่อมี libssl - การเรียกดูรายการนั้นและคำอธิบายของพวกเขาน่าจะให้เบาะแสคุณ
crazyscot

1
ตอนนี้ฉันรู้ว่าคำถามนี้ค่อนข้างจะตาย แต่เมื่อเร็ว ๆ นี้ฉันพบว่าฉันคิดว่าคนอื่นอาจจะเกินไป หากคุณต้องการแสดงรายการแพ็คเกจทั้งหมดที่คล้ายกับชื่อที่แน่นอนฉันต้องการใช้> aptitude search <STRING> ไม่จำเป็นต้องใช้สิทธิ์ระดับรากในการเรียกใช้การค้นหา
Evan Larkin

2
เพียงเพื่อเพิ่มไปยังคำสั่งของ Evan Ubuntu รุ่นล่าสุดจะมาโดยไม่มีคำสั่งความถนัด การค้นหา apt-cache <packname> ทำงานในลักษณะเดียวกัน (เกือบ) ตอนนี้
Andy

3
ในการตอบกลับการอัปเดตของคุณคุณสามารถทำได้apt-cache search package-name
TheDoctor

คำตอบ:


492

คุณต้องการติดตั้งแพ็กเกจการพัฒนาซึ่งเป็น libssl-dev:

sudo apt-get install libssl-dev

1
แต่นี่ไม่ใช่รุ่นที่เขาต้องการ (1.0.0) ซึ่งไม่ได้บรรจุสำหรับ 10.04 ดูคำตอบนี้สำหรับ 1.0.0: stackoverflow.com/questions/3153114/…
nealmcb

อ่าสายดี ฉันสังเกตเห็นเฉพาะตอนที่เขาพยายามใช้ไลบรารีการพัฒนา แต่ไม่ได้ติดตั้งแพ็คเกจ -dev ฉันไม่ได้สังเกตเห็นหมายเลขเวอร์ชัน
Niki Yoshiuchi

นี่คือการอ้างอิงที่ถูกต้องที่นี่: technologyskill.ga/install-openssl-manually-on-linuxหรือhowtoforge.com/tutorial/…ไลบรารีและไฟล์ส่วนหัวจะอยู่ภายใต้ไดเรกทอรีเดียวกันหลังจากการติดตั้ง: / usr / local / ssl
MickaelT

2
apt installสำหรับ dist ubuntu ใหม่
AtachiShadow

1
@GeorgeSp ฉันคิดอย่างนั้น แต่ก็ยังมี "ธรรมชาติ" มากกว่าที่จะสร้างมันในไดเรกทอรีที่กำหนดเองโดยใช้คำสั่งstackoverflow.com/a/49578644/7315276
ɛIc_ↄIз


15

ฉันจะคิดออกเองได้อย่างไร (นอกเหนือจากการถามคำถามนี้ที่นี่) ฉันสามารถบอก apt-get เพื่อแสดงรายการแพ็คเกจทั้งหมดและ grep สำหรับ ssl ได้หรือไม่? หรือฉันจำเป็นต้องรู้แผนการตั้งชื่อ "lib * -dev"

หากคุณกำลังเชื่อมโยงกับแล้วห้องสมุดมีแนวโน้มที่-lfoo libfoo.soห้องสมุดอาจเป็นส่วนหนึ่งของlibfooแพ็คเกจและส่วนหัวอยู่ในlibfoo-devแพ็คเกจตามที่คุณค้นพบ

บางคนใช้แอพ GUI "synaptic" ( sudo synaptic) เพื่อ (ค้นหาและ) แพ็คเกจการติดตั้ง แต่ฉันชอบที่จะใช้บรรทัดคำสั่ง สิ่งหนึ่งที่ทำให้ค้นหาแพคเกจที่ถูกต้องได้ง่ายขึ้นจากบรรทัดคำสั่งคือข้อเท็จจริงที่apt-getรองรับการเติม bash ให้สมบูรณ์

ลองพิมพ์sudo apt-get install libsslแล้วกดtabเพื่อดูรายการชื่อแพคเกจที่ตรงกัน (ซึ่งสามารถช่วยได้เมื่อคุณต้องการเลือกเวอร์ชันที่ถูกต้องของแพคเกจที่มีหลายรุ่นหรือมีรูปแบบอื่นให้เลือก)

ทุบตีเสร็จสิ้นเป็นจริงที่มีประโยชน์มาก ... เช่นคุณยังสามารถได้รับรายการของคำสั่งที่apt-getสนับสนุนโดยการพิมพ์และจากนั้นกดปุ่มsudo apt-gettab


อูบุนตูสามารถบรรเทาความเจ็บปวดให้กับผู้คนนับตั้งแต่เป็นปัญหามาหลายปี พวกเขาสามารถนามแฝงopenssl-devไปlibssl-devแต่พวกเขาเลือกที่จะไม่
jww

7

ฉันพบวิธีแก้ปัญหาอย่างละเอียดที่นี่: ติดตั้ง OpenSSL ด้วยตนเองบน Linux

จากโพสต์บล็อก ... :

ขั้นตอนในการดาวน์โหลดรวบรวมและติดตั้งมีดังนี้ (ฉันกำลังติดตั้งเวอร์ชั่น 1.0.1g ด้านล่างโปรดแทนที่ "1.0.1g" ด้วยหมายเลขเวอร์ชั่นของคุณ):

ขั้นตอน - 1: ดาวน์โหลด OpenSSL:

เรียกใช้คำสั่งดังต่อไปนี้:

$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz

นอกจากนี้ให้ดาวน์โหลดแฮช MD5 เพื่อตรวจสอบความถูกต้องของไฟล์ที่ดาวน์โหลดเพื่อการแยกกันเพียงอย่างเดียว ในโฟลเดอร์เดียวกันกับที่คุณดาวน์โหลดไฟล์ OpenSSL จากเว็บไซต์:

$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz.md5
$ md5sum openssl-1.0.1g.tar.gz
$ cat openssl-1.0.1g.tar.gz.md5

ขั้นตอน - 2: แยกไฟล์ออกจากแพ็คเกจที่ดาวน์โหลดมา:

$ tar -xvzf openssl-1.0.1g.tar.gz

ตอนนี้ป้อนไดเรกทอรีที่มีการแยกแพคเกจเหมือนที่นี่ openssl-1.0.1g

$ cd openssl-1.0.1g

ขั้นตอน - 3: การกำหนดค่า OpenSSL

เรียกใช้คำสั่งด้านล่างพร้อมเงื่อนไขเพิ่มเติมเพื่อตั้งค่าคำนำหน้าและไดเรกทอรีที่คุณต้องการคัดลอกไฟล์และโฟลเดอร์

$ ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl

คุณสามารถแทนที่“ / usr / local / openssl” ด้วยเส้นทางไดเรกทอรีที่คุณต้องการคัดลอกไฟล์และโฟลเดอร์ แต่ให้แน่ใจว่าในขณะที่ทำตามขั้นตอนนี้ตรวจสอบข้อผิดพลาดใด ๆ ใน terminal

ขั้นตอน - 4: รวบรวม OpenSSL

ในการรวบรวม openssl คุณจะต้องใช้คำสั่ง 2: สร้างทำการติดตั้งดังนี้:

$ make

หมายเหตุ: ตรวจสอบข้อความแสดงข้อผิดพลาดเพื่อการตรวจสอบ

ขั้นตอนที่ -5: การติดตั้ง OpenSSL:

$ sudo make install

หรือไม่มี sudo

$ make install

แค่นั้นแหละ. ติดตั้ง OpenSSL สำเร็จแล้ว คุณสามารถเรียกใช้คำสั่ง version เพื่อดูว่าทำงานหรือไม่ดังต่อไปนี้:

$ /usr/local/openssl/bin/openssl version

OpenSSL 1.0.1g 7 Apr 2014


1
เพื่อความสมบูรณ์คุณควรรวมการตรวจสอบลายเซ็น PGP เพื่อให้แน่ใจว่าลายเซ็นไฟล์นั้นถูกต้อง เช่นเดียวกับในgnupg.org/download/integrity_check.htmlและopenoffice.org/download/checksums.html#pgp_linux
djondal

5

อีกวิธีในการติดตั้งไลบรารี openssl จากซอร์สโค้ดบน Ubuntu ทำตามขั้นตอนด้านล่างนี่WORKDIRคือไดเรกทอรีการทำงานของคุณ:

sudo apt-get install pkg-config
cd WORKDIR
git clone https://github.com/openssl/openssl.git
cd openssl
./config
make
sudo make install
# Open file /etc/ld.so.conf, add a new line: "/usr/local/lib" at EOF
sudo ldconfig

4

คุณต้องการopenssl-develแพ็คเกจ อย่างน้อยฉันคิดว่ามันเป็น-develบน Ubuntu -devอาจจะมี มันเป็นหนึ่งในสอง


1
ทั้งคู่sudo apt-get install openssl-devและsudo apt-get install openssl-develส่งคืน "E: ไม่พบแพ็คเกจ ... "
Daryl Spitzer

6
เห็นได้ชัดว่ามันเป็น libssl-dev ตามที่คนอื่นพูด ฉันไม่ได้ใช้ Ubuntu ดังนั้นฉันจึงไม่คุ้นเคยกับชื่อแพ็คเกจ
jonescb

7
Openssl-devel คือสิ่งที่ฉันต้องการสำหรับ CentOS 6 sudo yum install openssl-devel*
Banjer

5
มาเถอะ: การตั้งชื่อนี้ sucks :)
mlvljr

ดีการตั้งชื่อนี้ sucks :) - แต่ก็ยังเป็นมาตรฐานการตั้งชื่อที่ดีที่สุดที่เราสามารถมี ... แต่บางคนจริง ๆ แล้วในที่สุดก็ควรเริ่มสอนเรื่องนี้ในหัวข้อ "พื้นฐานของไอที" ในโรงเรียนในทุกโรงเรียนในโลก
Filip OvertoneSinger Rydlo

0

ตามกฎทั่วไปเมื่อใช้ Debian หรือ Ubuntu และคุณไม่มีไฟล์สำหรับการพัฒนา (หรือไฟล์อื่น ๆ สำหรับเรื่องนั้น) ให้ใช้apt-fileเพื่อหาว่าแพ็คเกจใดมีไฟล์นั้น:

~ apt-file search openssl/bio.h
android-libboringssl-dev: /usr/include/android/openssl/bio.h
libssl-dev: /usr/include/openssl/bio.h
libwolfssl-dev: /usr/include/cyassl/openssl/bio.h
libwolfssl-dev: /usr/include/wolfssl/openssl/bio.h

ภาพรวมอย่างรวดเร็วของแต่ละแพ็กเกจที่ส่งคืนโดยคำสั่งการใช้apt showจะบอกคุณว่าแพ็กเกจใดเป็นแพ็คเกจที่คุณกำลังมองหา:

~ apt show libssl-dev
Package: libssl-dev
Version: 1.1.1d-2
Priority: optional
Section: libdevel
Source: openssl
Maintainer: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
Installed-Size: 8,095 kB
Depends: libssl1.1 (= 1.1.1d-2)
Suggests: libssl-doc
Conflicts: libssl1.0-dev
Homepage: https://www.openssl.org/
Tag: devel::lang:c, devel::library, implemented-in::TODO, implemented-in::c,
 protocol::ssl, role::devel-lib, security::cryptography
Download-Size: 1,797 kB
APT-Sources: http://ftp.fr.debian.org/debian unstable/main amd64 Packages
Description: Secure Sockets Layer toolkit - development files
 This package is part of the OpenSSL project's implementation of the SSL
 and TLS cryptographic protocols for secure communication over the
 Internet.
 .
 It contains development libraries, header files, and manpages for libssl
 and libcrypto.

N: There is 1 additional record. Please use the '-a' switch to see it

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.