执行 sudo apt-get update 时如何修复“执行 gpgv 的未知错误”?

执行 sudo apt-get update 时如何修复“执行 gpgv 的未知错误”?

我收到以下错误

Reading package lists... Done
W: GPG error: http://extras.ubuntu.com oneiric Release: Unknown error executing gpgv
executing gpgv
----
----
W: GPG error: http://archive.ubuntu.com oneiric-updates Release: Unknown error executing gpgv

然后在谷歌搜索之后我找到并遵循以下说明但导致了一个错误:

**sudo -i
apt-get clean
cd /var/lib/apt
mv lists lists.old
mkdir -p lists/partial
apt-get clean
apt-get update**

运行时出现错误:

kapil@ubuntu:/var/lib/apt$ sudo mv lists lists.old
mv: cannot move `lists' to `lists.old/lists': Directory not empty

因此,再次运行更新命令时,我再次收到相同的错误。请帮我解决该怎么做?


我按照你的建议做了以下操作,结果显示如下

root@ubuntu:/home/kapil# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/loop0             15G  4.7G  8.8G  35% /

udev                  1.5G  4.0K  1.5G   1% /dev

tmpfs                 591M  880K  590M   1% /run

none                  5.0M     0  5.0M   0% /run/lock

none                  1.5G  488K  1.5G   1% /run/shm

/dev/sda5             229G  221G  7.2G  97% /host

/dev/sda1             100M   25M   76M  25% /media/System Reserved

root@ubuntu:/home/kapil# ls -al /var/lib/apt/

total 68

drwxr-xr-x  7 root root  4096 2012-04-08 09:53 .

drwxr-xr-x 58 root root  4096 2012-03-28 09:59 ..

-rw-r--r--  1 root root   203 2012-03-24 13:18 cdroms.list

-rw-r--r--  1 root root  7261 2012-04-06 15:27 extended_states

drwxr-xr-x  2 root root  4096 2011-10-12 10:27 keyrings

drwxr-xr-x  3 root root 16384 2012-04-14 06:26 lists


drwxr-xr-x  4 root root 20480 2012-04-08 07:46 lists.old

drwxr-xr-x  3 root root  4096 2011-10-12 10:27 mirrors

drwxr-xr-x  2 root root  4096 2012-03-24 14:39 periodic*

当我按照上述说明操作时,它首先显示以下警告:

root@ubuntu:/home/kapil# sudo apt-get clean

root@ubuntu:/home/kapil# sudo rm /var/lib/apt/lists/*

rm: cannot remove `/var/lib/apt/lists/partial': Is a directory

root@ubuntu:/home/kapil# sudo rm /var/lib/apt/lists/partial/*

root@ubuntu:/home/kapil# sudo apt-get clean

root@ubuntu:/home/kapil# sudo apt-get update

此后它再次显示错误:

Reading package lists... Done

W: GPG error: http//archive.canonical.com oneiric Release: Unknown error executing gpgv

W: GPG error: http//extras.ubuntu.com oneiric Release: Unknown error executing gpgv

W: GPG error: http//archive.ubuntu.com oneiric Release: Unknown error executing gpgv

W: GPG error: http//archive.ubuntu.com oneiric-backports Release: Unknown error executing gpgv

W: GPG error: http//archive.ubuntu.com oneiric-security Release: Unknown error executing gpgv

W: GPG error: http//archive.ubuntu.com oneiric-proposed Release: Unknown error executing gpgv

W: GPG error: http//archive.ubuntu.com oneiric-updates Release: Unknown error executing gpgv

现在做什么?

答案1

我有两个解决方案:

  • 解决方案 #1 (受到推崇的):

    只需打开终端并运行以下命令:

    sudo apt-get clean

    sudo rm /var/lib/apt/lists/*

    sudo rm /var/lib/apt/lists/partial/*

    sudo apt-get clean

    sudo apt-get update

    完成!运行这些sudo rm ...命令时,不必担心错误或警告。

  • 解决方案 #2:

    1. 首先在更新管理器->设置->其他软件中删除所有 ppa 存储库;

    2. sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak

    3. sudo touch /etc/apt/sources.list

    4. sudo apt-get update

    5. sudo mv /etc/apt/sources.list.bak /etc/apt/sources.list

    6. sudo apt-get update

    7. 现在再次添加所有 ppa 存储库。

    8. sudo apt-get update

    完毕!

答案2

您原来的错误:

mv: cannot move `lists' to `lists.old/lists': Directory not empty

可以通过在目录重命名中添加时间戳来解决,如下所示。此外,通过&& 在每行之间添加一个将划分每个命令,您可以将下面的整个命令集从您的笔记中剪切并粘贴回终端

sudo apt-get clean && \
cd /var/lib/apt && \
sudo mv lists lists.old_`date '+%Y%m%d_%H%M%S'`   && \
sudo mkdir -p lists/partial && \
sudo apt-get clean && \
sudo apt-get update

另一种方法是将其放入出错时退出的脚本中...vi myscript.sh

#!/bin/bash 
set -o errexit

sudo apt-get clean 
cd /var/lib/apt 
sudo mv lists lists.old_`date '+%Y%m%d_%H%M%S'`   
sudo mkdir -p lists/partial 
sudo apt-get clean 
sudo apt-get update

答案3

我唯一一次遇到该错误是因为我在之前修复该问题时已经创建了“lists.old”。尝试执行上面的脚本/终端指令,但将“lists.old2”替换为“lists.old”,一切应该都很好(假设问题正如它声称的那样,目录不为空)。

如果没有,那么您可以随时尝试使用 aptitude 来解决问题,因为据我所知,它使用与 apt-get 不同的列表,但可以解决相同的依赖结构(sudo aptitude update && sudo aptitude upgrade)或使用 aptitude shell(只需输入 aptitude 并按回车键,它会在需要时提示您输入 root 权限),它是交互式的并提供更多选项来尝试纠正 apt-get 的问题 - aptitude shell 也不太直观,因此请查找如何使用它(u、U、g、g 等)

还要注意,如果您使用的是旧版本的 ubuntu,那么不要尝试使用 aptitude 来修复问题,因为 apt-get 不能很好地与它通信,如果您同时使用它们,您的系统可能会变得混乱。

答案4

我遇到了同样的问题,在首先执行 apt-get clean 和 lists purge 之后,这个问题就帮我解决了。

mkdir ~/tmp
sudo mv /usr/local/lib/libreadline* ~/tmp
sudo ldconfig
sudo apt-get update

相关内容