首页
/ Bitcoin Core在Kubuntu系统上的Guix构建问题分析与解决方案

Bitcoin Core在Kubuntu系统上的Guix构建问题分析与解决方案

2025-04-29 15:01:11作者:仰钰奇

问题背景

在Kubuntu 24.04和24.10系统上使用Guix构建Bitcoin Core时,用户遇到了两个主要的权限错误:

  1. mount: mount "none" on "/tmp/guix-directory.VEMlin": Permission denied
  2. clone: 2114060305: Permission denied

这些问题主要出现在系统升级后,特别是从Kubuntu 23.10升级到24.04或24.10版本后。Guix作为Bitcoin Core的官方构建系统,其正常运行对于开发者构建可复现的二进制文件至关重要。

根本原因分析

经过调查,这些问题与Kubuntu系统中的AppArmor安全模块密切相关。AppArmor是Linux内核的一个安全模块,它通过为应用程序配置安全策略来限制其能力。在Kubuntu 24.04及更高版本中,默认的AppArmor配置过于严格,阻止了Guix执行必要的操作:

  1. 挂载操作被阻止:Guix需要挂载临时文件系统来创建隔离的构建环境,但AppArmor默认策略不允许这些操作。
  2. 命名空间创建失败:Guix依赖Linux命名空间来实现环境隔离,AppArmor阻止了这些系统调用。

解决方案

方法一:完全禁用AppArmor(不推荐)

虽然完全禁用AppArmor可以解决问题,但这会降低系统安全性,并且可能导致依赖AppArmor的其他应用程序(如Firefox、Brave浏览器等)无法正常运行。

sudo systemctl stop apparmor
sudo systemctl disable apparmor
sudo apt purge apparmor

方法二:定制AppArmor策略(推荐)

更安全的解决方案是为Guix创建自定义的AppArmor策略,允许其执行必要的操作而不影响其他应用程序的安全性。

  1. 创建或编辑/etc/apparmor.d/guix文件:
abi <abi/4.0>,
include <tunables/global>

# Guix二进制文件的配置文件
profile guix /usr/local/bin/guix flags=(unconfined) {
  userns,
  # 站点特定的添加和覆盖
  include if exists <local/guix>
}

# 非特权用户命名空间的配置文件
profile unprivileged_userns flags=(unconfined) {
}
  1. 重新加载AppArmor配置:
sudo apparmor_parser -r /etc/apparmor.d/guix

方法三:使用替代发行版

如果上述解决方案在特定Kubuntu版本上仍然存在问题,考虑切换到对Guix支持更好的Linux发行版,如Manjaro或Debian。

技术细节

  1. Guix构建环境:Guix使用Linux命名空间和挂载点来创建隔离的构建环境,确保构建过程的可复现性。
  2. AppArmor限制:Kubuntu 24.04+的AppArmor默认配置限制了非特权用户命名空间的创建和挂载操作。
  3. 安全权衡:完全禁用AppArmor虽然简单,但会降低系统整体安全性;定制策略则需要在安全性和功能性之间取得平衡。

最佳实践建议

  1. 在修改系统安全配置前,先备份重要数据。
  2. 优先考虑定制AppArmor策略而非完全禁用。
  3. 定期检查Guix和AppArmor的更新,以获取更好的兼容性。
  4. 考虑在专用开发机器或容器中运行Guix构建,避免影响主系统。

通过以上解决方案,开发者应该能够在Kubuntu系统上顺利使用Guix构建Bitcoin Core,同时保持合理的系统安全级别。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
260
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
854
505
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
254
295
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
331
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
397
370
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
21
5