简介
前面一篇文章介绍了源码编译安装 OpenSSL,但其实编译安装由于其步骤比较麻烦,并不是最常见的安装方式,相反,通过包管理工具 (package manager)安装 OpenSSL 更常见,这篇文章就介绍一下这种安装方式需要注意的事项。
包管理安装
每个 Linux 发行版通常都有自己的包管理工具,比如 Debian 系的系统使用 apt,RedHat 系的使用 yum,Arch 系的使用 pacman 等等。
以 Ubuntu 中的 OpenSSL 安装命令为例:
apt-cache show openssl
apt-get install openssl
OpenSSL 动态库:
系统中的许多软件都依赖 OpenSSL 提供的动态库文件,所以,一旦我们打算升级系统的 OpenSSL 版本,请千万要注意对整个系统的影响。因为这意味着要么我们要维护两个版本的 OpenSSl 动态库,要么,我们需要把依赖 OpenSSL 的软件也一并升级。然后统一使用新的动态库。
包管理模式下,动态库是单独安装的:
apt-get install libssl-dev
动态库(libssl-dev)与二进制的 openssl 命令主要区别就是多了 .h 及 .so 文件。
我们可以通过 apt-file list 命令来查看安装包中所有的文件:
(1) openssl
$ apt-file list openssl
openssl: /etc/ssl/openssl.cnf
openssl: /usr/bin/c_rehash
openssl: /usr/bin/openssl
openssl: /usr/lib/ssl/certs
openssl: /usr/lib/ssl/misc/CA.pl
openssl: /usr/lib/ssl/misc/tsget
openssl: /usr/lib/ssl/misc/tsget.pl
openssl: /usr/lib/ssl/openssl.cnf
openssl: /usr/lib/ssl/private
...
(2) libssl-dev
libssl-dev: /usr/include/openssl/aes.h
libssl-dev: /usr/include/openssl/asn1.h
libssl-dev: /usr/include/openssl/asn1_mac.h
libssl-dev: /usr/include/openssl/asn1err.h
libssl-dev: /usr/include/openssl/asn1t.h
libssl-dev: /usr/include/openssl/async.h
libssl-dev: /usr/include/openssl/asyncerr.h
libssl-dev: /usr/include/openssl/bio.h
...
libssl-dev: /usr/include/openssl/x509.h
libssl-dev: /usr/include/openssl/x509_vfy.h
libssl-dev: /usr/include/openssl/x509err.h
libssl-dev: /usr/include/openssl/x509v3.h
libssl-dev: /usr/include/openssl/x509v3err.h
libssl-dev: /usr/include/x86_64-linux-gnu/openssl/opensslconf.h
libssl-dev: /usr/lib/x86_64-linux-gnu/libcrypto.a
libssl-dev: /usr/lib/x86_64-linux-gnu/libcrypto.so
libssl-dev: /usr/lib/x86_64-linux-gnu/libssl.a
libssl-dev: /usr/lib/x86_64-linux-gnu/libssl.so
libssl-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/libcrypto.pc
libssl-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/libssl.pc
libssl-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/openssl.pc
libssl-dev: /usr/share/doc/libssl-dev/changelog.Debian.gz
...
可以看到 libssl-dev 多了
- 头文件,在
/usr/include/openssl和/usr/include/x86_64-linux-gnu/openssl目录 .a和.so文件,在/usr/lib/x86_64-linux-gnu/目录.pc文件,在/usr/lib/x86_64-linux-gnu/pkgconfig/目录
提示:
如果是自己编译的 openssl,虽然也有上述头文件和 .a, .so 等文件,但没有 .pc 文件,我们需要手动去拷贝到指定位置。
下面介绍如何自己编写一个 openssl.pc 文件
/usr/lib/x86_64-linux-gnu/pkgconfig/libssl.pc
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include
Name: OpenSSL-libssl
Description: Secure Sockets Layer and cryptography libraries
Version: 1.1.1j
Requires.private: libcrypto
Libs: -L${libdir} -lssl
Cflags: -I${includedir}
pkg-config 默认目录 path
$ pkg-config --variable pc_path pkg-config
- /usr/local/lib/x86_64-linux-gnu/pkgconfig
- /usr/local/lib/pkgconfig
- /usr/local/share/pkgconfig
- /usr/lib/x86_64-linux-gnu/pkgconfig
- /usr/lib/pkgconfig
- /usr/share/pkgconfig
全文完!
如果你喜欢我的文章,欢迎关注我的微信公众号 deliverit。