在进行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( 推荐 ):

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

    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. 首先删除Update Manager中的所有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 repos。

    8. sudo apt-get update

    完成!

你原来的错误:

 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 

我唯一一次遇到这个错误的原因是因为’lists.old’在我之前解决了问题时已经由我做出了。 尝试上面的脚本/终端说明,但用’lists.old2’代替’lists.old’,一切都应该没问题(假设问题是,正如它声称的那样,目录不是空的)。

如果没有那么你总是可以尝试使用aptitude来解决问题,因为据我所知,它使用不同于apt-get的列表但可以解析相同的依赖结构(sudo aptitude update && sudo aptitude upgrade)或使用aptitude shell(只需键入aptitude并按Enter键,它会在需要时提示你root)这是交互式的,并提供更多选项来尝试纠正apt-get的问题 – aptitude shell也不太直观所以查看如何使用它(你,你,g,g等)

另请注意,如果您使用的是旧版本的ubuntu,那么请不要尝试使用aptitude进行修复,因为apt-get过去常常与它无关,如果您同时使用它们,系统可能会搞砸。

在第一次执行apt-get clean并列出清除之后,我遇到了同样的问题,这解决了我的问题。

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