Ubuntu 22.04运行watchman提示缺失libcrypto.so.1.1共享库报错
报错根因
64位Ubuntu 22.04 LTS默认搭载的OpenSSL版本为3.0.x,系统内置的加密共享库文件为libcrypto.so.3。你安装的官方通用Linux预编译版watchman是基于OpenSSL 1.1版本构建的,运行时会在系统库路径下查找libcrypto.so.1.1,找不到对应文件就会抛出该共享库加载错误,你执行的目录创建、文件复制、权限配置步骤本身没有问题,不是权限导致的报错。
修复方案
方案一:安装OpenSSL 1.1兼容库(推荐,操作最快)
该方案只会额外安装1.1版本的兼容库,不会替换系统默认的OpenSSL 3.0,不会对系统其他依赖造成影响:
- 下载amd64架构的libssl1.1安装包并安装:
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.20_amd64.deb sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.20_amd64.deb
- 刷新系统动态链接库缓存,让系统能识别到新安装的共享库:
sudo ldconfig
- 执行
watchman --version验证,正常返回版本号即修复完成。
方案二:本地源码编译watchman(无额外旧依赖)
如果不想在系统里安装旧版本的OpenSSL兼容库,可以直接在当前系统环境编译watchman,编译出的二进制会自动链接系统自带的OpenSSL 3.0库,从根源避免依赖不匹配问题:
- 安装编译所需的依赖组件:
sudo apt update sudo apt install -y autoconf automake build-essential libpcre3-dev libtool libssl-dev pkg-config python3-dev
- 拉取watchman源码,切换到最新稳定版本后编译安装:
git clone https://github.com/facebook/watchman.git cd watchman git checkout v2024.04.15.00 # 可替换为官方发布的最新稳定版本tag ./autogen.sh ./configure --prefix=/usr/local make -j$(nproc) sudo make install
- 编译安装完成后执行
watchman --version,正常输出版本号即可正常使用。
内容的提问来源于stack exchange,提问作者Mahmoud Mousa Hamad
相关产品推荐
相关产品推荐

