ubuntu20.04 ssserver 报错

报错信息:

root@ip-172-31-26-125:~# ssserver -c /xxx.json -d restart
INFO: loading config from /root/shadowsocks-20211113.json
2024-03-12 00:46:40 INFO     loading libcrypto from libcrypto.so.1.1
Traceback (most recent call last):
  File "/usr/local/bin/ssserver", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/dist-packages/shadowsocks/server.py", line 34, in main
    config = shell.get_config(False)
  File "/usr/local/lib/python3.8/dist-packages/shadowsocks/shell.py", line 262, in get_config
    check_config(config, is_local)
  File "/usr/local/lib/python3.8/dist-packages/shadowsocks/shell.py", line 124, in check_config
    encrypt.try_cipher(config['password'], config['method'])
  File "/usr/local/lib/python3.8/dist-packages/shadowsocks/encrypt.py", line 44, in try_cipher
    Encryptor(key, method)
  File "/usr/local/lib/python3.8/dist-packages/shadowsocks/encrypt.py", line 82, in __init__
    self.cipher = self.get_cipher(key, method, 1,
  File "/usr/local/lib/python3.8/dist-packages/shadowsocks/encrypt.py", line 109, in get_cipher
    return m[2](method, key, iv, op)
  File "/usr/local/lib/python3.8/dist-packages/shadowsocks/crypto/openssl.py", line 76, in __init__
    load_openssl()
  File "/usr/local/lib/python3.8/dist-packages/shadowsocks/crypto/openssl.py", line 52, in load_openssl
    libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
  File "/usr/lib/python3.8/ctypes/__init__.py", line 386, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib/python3.8/ctypes/__init__.py", line 391, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

原因:

官网中所描述,这是由于在openssl 1.1.0中废弃了 EVP_CIPHER_CTX_cleanup() 函数而引入了 EVE_CIPHER_CTX_reset() 函数所导致的:

EVP_CIPHER_CTX was made opaque in OpenSSL 1.1.0. As a result, EVP_CIPHER_CTX_reset() appeared and EVP_CIPHER_CTX_cleanup() disappeared. EVP_CIPHER_CTX_init() remains as an alias for EVP_CIPHER_CTX_reset().

因此,可以通过将 EVP_CIPHER_CTX_cleanup() 函数替换为 EVP_CIPHER_CTX_reset() 函数来解决该问题。具体解决方法如下:

1、根据错误信息定位到文件 /home/feng/.local/lib/python3.6/site-packages/shadowsocks/crypto/openssl.py 。

2、搜索 cleanup 并将其替换为 reset 。

3、重新启动 shadowsocks, 该问题解决。

解决方案:

sed -i 's/EVP_CIPHER_CTX_cleanup/EVP_CIPHER_CTX_reset/g' /usr/local/lib/python3.8/dist-packages/shadowsocks/crypto/openssl.py

Solved by replacing all (total 2) the EVP_CIPHER_CTX_cleanup() functions to EVP_CIPHER_CTX_reset() in the openssl.py file. With the following command:

edit /usr/local/lib/python3.8/dist-packages/shadowsocks/crypto/openssl.py

1
sudo sed -i 's/EVP_CIPHER_CTX_cleanup/EVP_CIPHER_CTX_reset/g' /usr/local/lib/python3.8/dist-packages/shadowsocks/crypto/openssl.py

And restart the Shadowsocks server. Done!

### 安装Pangolin时可能遇到的错误及其解决方案 在Linux Ubuntu 20.04上安装Pangolin可能会因为依赖库缺失或其他配置问题而失败。以下是针对常见错误的具体分析和解决方法。 #### 可能的原因及对应的解决措施 如果在执行`cmake`之后运行`make`命令时报错,通常是因为缺少某些必要的开发库文件。根据已知的信息,可以通过安装`libepoxy-dev`来解决此类问题[^1]: ```bash sudo apt-get update sudo apt-get install libepoxy-dev ``` 完成上述操作后重新尝试编译过程。这一步可以确保CMake能够找到所需的OpenGL绑定支持。 对于完整的Pangolin安装流程,在创建一个新的工作目录并初始化源码路径后,可以直接通过Catkin工具链构建项目环境[^2]: ```bash mkdir -p Pangolin_ws/src cd Pangolin_ws/ catkin_make ``` 需要注意的是,这里假设您正在使用ROS框架下的Catkin作为构建系统;如果不是基于ROS,则应按照标准CMake方式处理: ```bash git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build && cd build cmake .. make -j$(nproc) sudo make install ``` 此脚本会克隆官方仓库中的最新版本代码,并利用多核处理器加速编译速度。最后一步将生成的目标文件复制到全局可访问的位置以便后续调用[^3]。 #### 验证安装成功与否的方法 为了确认Pangolin已经正确部署完毕,可以在终端输入以下Python测试语句验证其可用性: ```python import pangolin as pg print(pg.__version__) ``` 如果没有抛出任何异常并且打印出了预期的版本号字符串,则说明整个设置顺利完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

精通代码大仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值