TX2更新源失败的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TX2更新源失败的问题相关的知识,希望对你有一定的参考价值。

 

TX2自身的Linux系统自带了opencv,不过由于版本比较低是2.4.13,而我又需要使用opencv的GPU加速功能,虽然opencv2.4.13已经支持GPU加速,但是3.0以下的opencv对GPU加速的支持不是很好,使用起来很麻烦,于是便想着在TX2上安装opencv3.4。安装opencv之前需要安装依赖库,由此牵出来了一大堆问题。

首先需要换源,TX2默认的Ubuntu的源下载速度太慢,可以通过替换

/etc/lib/apt/sources.list

文件改为国内源(注意修改之前先将原文件备份),还有一点要注意,换源需要换ARM的源,不要换成了pc平台的软件源。这里推荐两个国内源,将原来文件里面的内容全部替换成下面两个源之一就可以:

清华源:

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse 
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse 
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse 
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse 
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse 
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main universe restricted 
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main universe restricted

和科大的源:

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse 
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse 
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse 
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse 
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse 
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse 
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted 
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted

替换之后,执行

sudo apt-get update

更新源,然后打印出来一堆错误,主要问题有两个。

其中一个是GPG错误: 下列签名无法验证,错误的情况是这样的

W: GPG error: http://repo.mate-desktop.org saucy InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 68980A0EA10B4DE8

我们需要获取系统中的这个公钥,从信息中获取密钥号,比如上面这个错误,密钥号是68980A0EA10B4DE8,执行

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 68980A0EA10B4DE8

后再次更新,这个错误消失,不过还有一个错误,错误的打印如下:

E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial/main/binary-arm64/Packages  404  Not Found [IP: 91.189.88.161 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/binary-i386/Packages  404  Not Found [IP: 91.189.88.161 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-backports/main/binary-i386/Packages  404  Not Found [IP: 91.189.88.161 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-security/main/binary-i386/Packages  404  Not Found [IP: 91.189.88.161 80]

 

这里显示是91.189.161.80这个IP无法访问,但是我用浏览器访问了一下这个ip发现是可以访问的,Ubuntu下所有的开源项目都在这里了,于是我按照log上的目录依次往下查找,到

archive.ubuntu.com/ubuntu/dists/xenial-backports/main/

这个目录之后,发现这个目录下面没有binary-i386这个目录,好了,问题找到了,那么是什么原因导致的更新源时程序会访问这个本来不存在的目录呢。网上查找一番后,找到一个比较关键的问题,在终端执行

dpkg --print-architecture

查看当前CPU的架构,然后打印如下:

终端执行

dpkg --print-foreign-architectures

查看设置的多架构支持,打印如下

发现多架构支持被设置了i386,然而我们的平台是ARM架构的,不需要x86平台的支持,先前的问题可能就是这个原因导致的,于是尝试删除这个设置

sudo dpkg --remove-architecture i386

然后更新源

sudo apt-get update

成功!更新源成功之后就可以安装opencv的依赖,然后安装opencv了。

 

主要参考:

[1] Ubuntu更新错误修复大全:http://www.linuxidc.com/Linux/2015-06/118678.htm

[2] https://askubuntu.com/questions/917081/how-to-get-rid-of-arm64-in-apt#

 

以上是关于TX2更新源失败的问题的主要内容,如果未能解决你的问题,请参考以下文章

CUDA在Windows/Linux平台的配置及编译

Jetson TX2 安装应用镭神激光模块(基于ROS)

第一次进入片段ListView时AsyncTask更新progressBar的进度失败,滚动ListView后就ok了

Ubuntu 更新国内镜像源失败

DJI Manifold 2(在 nvidia jetson tx2 上运行)USB 设备在使用 Ubuntu 的软件更新更新后无法工作

在 ubuntu 上更新 Openssh 失败