Mac系统上老碰到cannot be opened because the developer cannot be verified的问题解决方案

备注:图形化解决方案见参考资料(很简单),我这里仅记录批量处理执行文件未授权的问题。

sudo xattr -d com.apple.quarantine spm_*.mexmaci64

如命令行所示,使用正则表达式的方式,将所有需要授权的文件一次性批量授权即可。

参考:

当遇到 `The following signatures couldn't be verified because the public key is not available: NO_PUBKEY` 错误时,通常是在使用 `apt` 进行软件包安装或更新时,系统无法找到用于验证仓库签名的 GPG 公钥。这种错误常见于添加第三方仓库后未导入其公钥的情况。以下是几种解决此问题的方法: ### 方法一:使用 `apt-key` 导入缺失的公钥 可以通过 `apt-key` 命令从密钥服务器获取缺失的公钥。例如,如果错误信息中显示的密钥 ID 是 `3B4FE6ACC0B21F32`,则可以使用以下命令导入该密钥: ```bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 ``` 此命令会从 `keyserver.ubuntu.com` 获取指定的密钥并添加到本地的 APT 密钥环中,从而允许 APT 验证仓库的签名[^1]。 ### 方法二:在 Dockerfile 中预导入公钥 如果是在构建 Docker 镜像时遇到了这个问题,可以在 Dockerfile 中预先导入所需的公钥。例如,可以添加如下命令到 Dockerfile 中: ```dockerfile RUN apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32 RUN apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5 RUN apt-key adv --recv-keys --keyserver keyserver.ubuntu.com EF0F382A1A7B6500 ``` 这些命令会在构建过程中自动导入所需的公钥,确保后续的 `apt update` 和软件包安装操作能够顺利进行[^4]。 ### 方法三:手动下载并导入公钥 如果上述方法无法解决问题,还可以尝试手动下载公钥文件并将其导入到 APT 密钥环中。首先,从可信的来源下载公钥文件(例如 `keyfile.gpg`),然后使用以下命令导入: ```bash sudo apt-key add keyfile.gpg ``` 这种方法适用于那些无法通过密钥服务器直接获取的公钥。 ### 方法四:检查仓库配置 有时候,问题可能不是出在公钥本身,而是由于仓库配置错误导致的。可以检查 `/etc/apt/sources.list` 文件以及 `/etc/apt/sources.list.d/` 目录下的文件,确保所有仓库地址都是正确的,并且对应的公钥已经正确导入。如果某个仓库不再需要,可以将其从配置文件中移除,以避免不必要的错误[^2]。 ### 方法五:清除 APT 缓存并重试 有时 APT 缓存中的旧数据可能导致问题。可以尝试清除 APT 缓存,然后重新运行 `apt update`: ```bash sudo apt clean sudo apt update ``` 这将清除本地的 APT 缓存,并重新下载仓库索引文件,可能会解决一些临时性的问题[^3]。 ### 方法六:使用 `--allow-unauthenticated` 选项(不推荐) 作为最后的手段,如果确实不需要验证仓库签名,可以使用 `--allow-unauthenticated` 选项来忽略签名验证。但这会降低系统的安全性,因此不建议在生产环境中使用: ```bash sudo apt update --allow-unauthenticated ``` 此命令将允许 APT 忽略所有未签名的仓库,但请谨慎使用,因为它可能会导致潜在的安全风险。 ### 总结 解决 `NO_PUBKEY` 错误的关键在于确保所有使用的仓库都有对应的公钥被正确导入到 APT 密钥环中。通过上述方法,可以有效地解决大多数由公钥不可用引起的签名验证问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值