Ubuntu 18.04 LTS安装Hyperledger Sawtooth依赖问题求助
我之前也碰到过类似的情况,在非官方支持的Ubuntu版本上装Sawtooth时,依赖不兼容是非常常见的问题。下面是一步步的解决思路,帮你搞定这个麻烦:
第一步:先修复系统本身的损坏依赖
首先得确保你的系统没有残留的损坏包,这往往是引发依赖问题的根源。运行以下命令:
sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -f sudo dpkg --configure -a
这些命令会更新软件源、升级现有包、自动修复依赖缺口,还能配置未完成安装的包。执行完之后,再尝试重新安装Sawtooth看看是否解决问题。
第二步:检查Sawtooth的APT源配置
Sawtooth官方默认的APT源是为Ubuntu 16.04(xenial)准备的,而你用的是18.04(bionic),版本差异会导致依赖版本不匹配。你可以先检查源配置文件:
cat /etc/apt/sources.list.d/sawtooth.list
如果文件里的源地址包含xenial,说明是针对16.04的。你可以尝试把xenial替换成bionic,再更新源并安装:
sudo sed -i 's/xenial/bionic/g' /etc/apt/sources.list.d/sawtooth.list sudo apt-get update sudo apt-get install -y sawtooth
注意:如果官方没有提供bionic版本的Sawtooth包,这一步可能会失败,那咱们就换用源码安装或者Docker部署的方式。
第三步:源码编译安装(当APT源不支持18.04时)
如果官方没有适配18.04的APT包,源码安装是个可靠的备选方案。先安装编译所需的基础依赖:
sudo apt-get install -y python3 python3-pip python3-dev gcc git
然后克隆Sawtooth核心仓库并完成安装:
git clone https://github.com/hyperledger/sawtooth-core.git cd sawtooth-core pip3 install -e .
之后你可以单独安装需要的组件,比如CLI、Validator、REST API等:
pip3 install sawtooth-cli sawtooth-validator sawtooth-rest-api
第四步:使用Docker部署(推荐,彻底规避系统依赖问题)
如果不想折腾系统依赖,Docker是最省心的方式——它会把Sawtooth和所有依赖都封装在容器里,完全隔离系统环境。先安装Docker和Docker Compose:
sudo apt-get install -y docker.io docker-compose sudo systemctl start docker sudo systemctl enable docker
然后从Sawtooth仓库获取默认的Docker Compose配置文件,启动整个Sawtooth网络:
# 克隆仓库获取配置文件 git clone https://github.com/hyperledger/sawtooth-core.git cd sawtooth-core/docker docker-compose -f sawtooth-default.yaml up
这样就能快速启动一个可用的Sawtooth节点,完全不用操心系统版本的依赖冲突。
问题根源说明
简单来说,你遇到的报错是因为Sawtooth当时发布的APT包是基于Ubuntu 16.04的依赖版本构建的,而Ubuntu 18.04的Python和部分系统库版本有所升级,导致APT无法找到匹配的依赖包,从而出现"未满足依赖"的错误。
内容的提问来源于stack exchange,提问作者Rishi

