执行gpg签名时报错读取/proc/curproc/file不存在如何解决
GPG /proc/curproc/file 报错原因与修复方案
报错原因
- 该报错属于非致命警告,不会影响签名、加密等GPG核心功能的正常运行,从提供的日志可以看到签名操作实际已执行完成,成功输出了签名结果。
- 错误根源为安装的
gnupg软件包的编译适配问题:/proc/curproc/file是FreeBSD系统procfs的特有路径,若当前运行系统为Linux、macOS等不提供该路径的系统,且安装的gnupg包为BSD源移植版本、或编译阶段未针对当前系统做路径适配,就会触发该路径读取报错。
修复方案
方案1:过滤警告(快速生效,不修改软件包)
该报错仅为冗余警告,不影响功能,可直接过滤输出即可。单次运行时可执行如下命令:
echo "test" | 2> >(grep -v 'error reading symlink '/proc/curproc/file' >&2) gpg --clearsign
若需永久隐藏警告,可将别名配置写入shell配置文件(~/.zshrc或~/.bashrc):
alias gpg="2> >(grep -v 'error reading symlink '/proc/curproc/file' >&2) gpg"
保存后执行source ~/.zshrc(对应zsh)或source ~/.bashrc(对应bash)即可生效。
方案2:重装适配当前系统的gnupg包
卸载当前不兼容的gnupg版本,安装对应系统官方源提供的适配版本即可彻底解决该问题:
- Debian/Ubuntu 系列Linux:
sudo apt remove gnupg -y && sudo apt install gnupg -y - RHEL/CentOS/Fedora 系列Linux:
sudo dnf remove gnupg -y && sudo dnf install gnupg -y - macOS系统(使用Homebrew):
brew uninstall gnupg && brew install gnupg
重装完成后再次执行签名命令,报错将完全消失。
内容的提问来源于stack exchange,提问作者ofou
相关产品推荐
相关产品推荐

