linux 更换 软件源后 GPG错误

2023-05-16

linux 更换 软件源后 GPG错误

linux 软件源 GPG 签名 密钥

linux 更换 软件源后 GPG错误

http://my.oschina.net/emptytimespace/blog/83633

如文章【1】中提到:

1,对于DEBIAN系:

如果您的套件支援APT-KEY金鑰管理(例如Ubuntu 6.06或者之後的版),請先安裝DRBL的金鑰 (ID: 1024D/D7E8DF3A, Key fingerprint = F532 A131 65AF 2168 1634 DB1B 4000 9511 D7E8 DF3A),有兩個方式可以來安裝。
方法1: "wget -q http://drbl.nchc.org.tw/GPG-KEY-DRBL -O- | sudo apt-key add -" 。
方法2: 或是由key server下載,KeyID是D7E8DF3A,可以這樣執行"gpg --keyserver subkeys.pgp.net --recv-key D7E8DF3A",然後再執行"gpg -a --export D7E8DF3A | apt-key add -".
如法砲制,推荐使用上面方法1,下载发行版的GPG并添加金匙:


?
1
wget -q http: // ... /Release .gpg  | sudo apt-key add -


2,对RedHat/Fedora/CentOS系:

RedHat/Fedora/CentOS 如果您不是系統管理者(root),執行指令"su root" (然後輸入root的密碼),如果你的套件沒有設定root密碼,可以用"sudo su " (然後該使用者的密碼)以便切換成root 請先安裝DRBL的金鑰(ID: 1024D/D7E8DF3A, Key fingerprint = F532 A131 65AF 2168 1634 DB1B 4000 9511 D7E8 DF3A),這樣可以進一步確認您安裝的程式是本計畫所發行的程式。有兩個方式可以來安裝。
方法1: "rm -f GPG-KEY-DRBL; wget http://drbl.nchc.org.tw/GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL" 。
方法2: 由key server下載,KeyID是D7E8DF3A,可以這樣執行"gpg --keyserver subkeys.pgp.net --recv-key D7E8DF3A",然後再執行"gpg -a --export D7E8DF3A > GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL". 如果你要查詢系統是否已經有匯入數位簽章的話,可以這樣查詢: rpm -qa gpg-pubkey*。

3,对于SuSE系:

SuSE 如果您不是系統管理者(root),執行指令"su root" (然後輸入root的密碼),如果你的套件沒有設定root密碼,可以用"sudo su " (然後該使用者的密碼)以便切換成root 請先安裝DRBL的金鑰(ID: 1024D/D7E8DF3A, Key fingerprint = F532 A131 65AF 2168 1634 DB1B 4000 9511 D7E8 DF3A),這樣可以進一步確認您安裝的程式是本計畫所發行的程式。有兩個方式可以來安裝。
方法1: "rm -f GPG-KEY-DRBL; wget http://drbl.nchc.org.tw/GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL" 。
方法2: 由key server下載,KeyID是D7E8DF3A,可以這樣執行"gpg --keyserver subkeys.pgp.net --recv-key D7E8DF3A",然後再執行"gpg -a --export D7E8DF3A > GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL".


此处以下的内容已经可以忽略不看了,菜鸟的山寨方法。

-----------------------------------------------------------------------------------

在将官方默认的更新远换成比如mirrors.ustc.edu.cn的其他源时,或在安装系统debian testing后想更换成sid的源来升级成sid系统时,经常遇到GPG错误的问题,如刷新软件库时如下提示:

GPG 错误:http://mirrors.ustc.edu.cn sid InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 07DC563D1F41B907无法下载 http://http.us.debian.org/debian/dists/sid/InRelease

搜集网上的解决办法有几个:

1)

?
1
2
3
The fix is just to back up sources.list, delete everything in it and run "apt-get update" . After the update replace sources.list with the backup and run "apt-get update" again. You should not get the error then .
 
备份sources.list,然后把sources.list中的东西删空,运行 "apt-get update" ,然后再用刚刚的备份将 "apt-get update" 复原,再运行 "apt-get update"
此方法不行,但似乎有更新缓存的作用? 2)
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
症状:
代码:
sudo apt-get update
W: GPG error: http: //apt .tt-solutions.com dapper Release: 由于没有公钥,下列签名无法进行验证: NO_PUBKEY 06EA41DE4F6C1E86
 
解决方法:
代码:
gpg --keyserver subkeys.pgp.net --recv 4F6C1E86
gpg -- export --armor 4F6C1E86 | sudo apt-key add -
 
说明:
若缺少其他公钥,则将命令中两处4F6C1E86改为NO_PUBKEY 06EA41DE4F6C1E86中最后8位即可!
<p>
<br>
 
< /p >
或使用mit的:
# gpg --keyserver pgpkeys.mit.edu --recv-key AED4B06F473041FA
# gpg -a --export AED4B06F473041FA |  apt-key add -
 
或服务器:keys.gnupg.net,似乎是最官方的。
 
如果是Ubuntu PPA的
代码:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com

然后更新源:

$ sudo apt-get update

使用此方法成功,但是,此方法添加的密钥似乎不是明显官方的.可以看到/etc/apt目录下有"trust.gpg"文件,./trust.gpg.d文件夹下有"debian-archive-wheezy-stable.gpg"等文件.考虑到安全性和解决方案的长久性,显然针对此debian系统的sid发行版,我们需要类似"debian-sid.gpg"的文件来代替这些文件,而不是全部都从第三方中下载的验证文件来顶事.而且可以看到,使用当前的这种方法后,以上的".gpg"文件确实发生了改变,说明这几个文件确实需要改变.

为此我们查看更新源网址"http://mirrors.ustc.edu.cn/debian/dists/sid/"中的文件,发现有一个文件"Release.gpg",但是不同的是此文件可以很容易的作为文本文档打开,而系统中的"debian-archive-wheezy-stable.gpg"文件并不能作为文本文件打开.那么推测,系统中的文件经过了某种加密,可是加密手段不知,此探索中断...既然问题已经解决了就留待以后吧.(见补充2)


3)另副一种更新或禁用缓存的方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
转贴自:http: //www .ubuntugeek.com /how-to-fix-the-ubuntu-gpg-error-badsig .html
 
If you are seeing Ubuntu GPG Error BADSIG use the one of the following methods to fix
 
Error Message
 
W: GPG error: http: //archive .canonical.com intrepid Release: The following signatures were invalid: BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key
 
Method 1
 
Try to run the following comamnds from terminal
 
     $ sudo -i
 
     # apt-get clean
 
     # cd /var/lib/apt
 
     # mv lists lists.old
 
     # mkdir -p lists/partial
 
     # apt-get clean
 
     # apt-get update
 
Method 2
 
Try to run the following comamnds from terminal
 
     sudo aptitude -o Acquire::http::No-Cache=True -o Acquire::BrokenProxy= true update
 
     sudo apt-get update

暂完结。

补充1:

在文章: 使用apt-mirror建立debian的源(http://zx0319.blogspot.com/2011/03/apt-mirrordebian.html)

中获得一个貌似很正规的做法:

?
1
2
3
4
如果出现public key的问题,通过以下指令解决。
apt-get install debian-keyring debian-archive-keyring
apt-key update
apt-get upgrade

补充2:

在软件源设置选项中有 “身份验证” 选项卡中,可以Import key File,这是导入“Release.gpg”文件的接口?需要时可以测试下。

补充:官方发行版介绍中提到:

数据的完整性是通过一个经数字签名的 Release 文件得到满足的。为了保证发行版中的每个文件确实属于该发行版,每个 Packages 文件的 MD5 校验码都被复制到 Release 文件中。 
该文件经数字签名之后被保存在文件 Release.gpg 中,用的是当前版本的存档签名密钥。这个附加的签章是给稳定版 (stable)与被淘汰的稳定版 (oldstable) 释出用的,由稳定版释出团队的成员用一把专门产生用的离线金钥制作而成。

这应该是证实了我们的猜想。


【引用】

【1】http://drbl.nchc.org.tw/one4all/desktop/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 更换 软件源后 GPG错误 的相关文章

  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 如何检测并找出程序是否陷入死锁?

    这是一道面试题 如何检测并确定程序是否陷入死锁 是否有一些工具可用于在 Linux Unix 系统上执行此操作 我的想法 如果程序没有任何进展并且其状态为运行 则为死锁 但是 其他原因也可能导致此问题 开源工具有valgrind halgr
  • 如何使用 xterm.js 创建基于 Web 的终端以 ssh 进入本地网络上的系统

    我偶然发现了这个很棒的图书馆xterm js https xtermjs org 这也是 Visual Studio Code 终端的基础 我有一个非常普遍的问题 我想通过基于网络的终端 不在网络中 可能位于 aws 服务器上 访问本地网络
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C

随机推荐