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#

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM