我运行了以下命令:
sudo apt-get install --only-upgrade openssl
输出为:
openssl is already the newest version (1.1.0g-2ubuntu4.1).
但是,当我openssl version -a
在终端中输入时,输出是:
OpenSSL 1.0.2o 27 Mar 2018
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: /tmp/build/80754af9/openssl_1522162531585/_build_env/bin/x86_64-conda_cos6-linux-gnu-cc -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/vedantroy/anaconda3/include -fdebug-prefix-map=/tmp/build/80754af9/openssl_1522162531585/work=/usr/local/src/conda/openssl-1.0.2o -fdebug-prefix-map=/home/vedantroy/anaconda3=/usr/local/src/conda-prefix -Wa,--noexecstack -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/home/vedantroy/anaconda3/ssl"
此外,输入which openssl
输出:/home/vedantroy/anaconda3/bin/openssl
。
看来我的系统使用的是 conda 安装的“openssl”,而不是 所安装的版本apt-get
。如何强制我的系统使用 所安装的“openssl”版本apt-get
?
答案1
该软件包安装了一个名为as 的openssl
可执行文件(参见)。openssl
/usr/bin/openssl
dpkg -L openssl
您已openssl
安装为/home/vedantroy/anaconda3/bin/openssl
。
该目录/home/vedantroy/anaconda3/bin
出现在出现$PATH
之前/usr/bin
。
$SHELL
它首先看到的是您的选择openssl
。
您有多种选择:
- 重新排列
$PATH
。但是,如果 Anaconda 想要覆盖任何其他系统二进制文件,这就会搞砸。 - 我假设您拥有该目录
/home/vedantroy/anaconda3/bin
,因此chmod -x /home/vedantroy/anaconda3/bin/openssl;rehash
将允许您使用/usr/bin/openssl
。 - 添加
alias openssl="/usr/bin/openssl"
到您的~/.bashrc
。仅适用于 shell。
答案2
对于您来说,我建议为apt
已安装的版本创建一个别名openssl
:
alias openssl='/usr/bin/openssl'
把你的别名放在可以自动获取的地方,例如:.bashrc
。
您也可以直接运行它:
/usr/bin/openssl
或者更改PATH
环境变量,但这对您来说不是一个好选择,因为您实际上正在使用 Anaconda。
无论何时你想使用 Anaconda 版本,请运行以下命令之一:
\openssl
""openssl
''openssl
'openssl'
"openssl"
command openssl
答案3
Conda 可能默认在您的 shell 中处于活动状态,Ubuntu 上安装 anaconda 时通常如此。它可能位于(base)
您的 shell 提示符的开头。
只需运行conda deactivate
即可解决问题。对我来说确实如此。
答案4
根据之前的答案,我尝试了以下方法来解决这个问题。
由于每次打开文件时都会选择 conda openssl,因此添加
alias
in.bashrc
不起作用。仍然没有弄清楚为什么会发生这种情况。.bashrc
sourced
在环境变量中添加
/usr/bin/openssl
anaconda 之前$PATH
不起作用,因为它需要指定整个bin
目录,而$PATH
不仅仅是可执行文件openssl
。将/usr/bin
目录添加到$PATH
之前/home/user/anaconda3/bin
会给我带来另一个问题,因为它会导致python
系统安装版本优先于 anaconda python 版本,这是我根据我的设置避免的。
如果您希望在整个系统范围内采用默认版本openssl
,但同时使用 anaconda python 版本作为默认版本,则以下解决方案有效。
换句话说,停止使用 anacondas,openssl
同时仍保持以下环境变量export PATH="/home/user/anaconda3/bin:$PATH"
解决方案(至少对我来说)涉及使用符号链接。
mv ~/anaconda3/bin/openssl ~/anaconda3/bin/orig_openssl # rename anaconda openssl
ln -s /usr/bin/openssl /home/user/anaconda3/bin/openssl # link openssl from OS to anaconda bin dir.