解決opencv在arm64上提示找不到libjasper-dev的問題。
本文首發于?慕雪的寒舍
問題說明
最近我在嘗試編譯opencv,安裝依賴項libjasper1
和libjasper-dev
的時候就遇到了這個問題。在amd64平臺上,我們可以通過下面的命令安裝(ubuntu18.04)
apt-get install -y software-properties-common
add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
apt-get -y update
apt-get install -y libjasper1 libjasper-dev
但是在arm64的機器上,這個新添加的源會提示404。注意404不是網絡問題,而是指定的文件不存在。根據這里顯示的url,其實就是因為binary-arm64
這個路徑不存在。
Err:6 http://security.ubuntu.com/ubuntu xenial-security/main arm64 Packages404 Not Found [IP: 185.125.190.83 80]
Fetched 106 kB in 2s (44.6 kB/s)
Reading package lists... Done
E: Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-arm64/Packages 404 Not Found [IP: 185.125.190.83 80]
E: Some index files failed to download. They have been ignored, or old ones used instead.
解決方案
根據這篇博客,arm架構的ubuntu18.04需要使用下面的方式安裝這兩個庫。
將下面的清華源寫入/etc/apt/sources.list
文件的末尾(注意,如果你執行過上文的命令錯誤添加了會404的源,需要將那個源注釋掉)
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
修改文件之后,執行如下命令就可以安裝了。
apt-get -y update
apt-get install -y libjasper1 libjasper-dev
安裝成功的輸出如下
root@ubuntu-linux-22-04-02-desktop:/# apt-get install -y libjasper1 libjasper-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:libjasper-runtime
The following NEW packages will be installed:libjasper-dev libjasper1
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 613 kB of archives.
After this operation, 1327 kB of additional disk space will be used.
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports xenial-security/main arm64 libjasper1 arm64 1.900.1-debian1-2.4ubuntu1.3 [111 kB]
Get:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports xenial-security/main arm64 libjasper-dev arm64 1.900.1-debian1-2.4ubuntu1.3 [502 kB]
Fetched 613 kB in 1s (758 kB/s)
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76, <> line 2.)
debconf: falling back to frontend: Readline
Selecting previously unselected package libjasper1:arm64.
(Reading database ... 67223 files and directories currently installed.)
Preparing to unpack .../libjasper1_1.900.1-debian1-2.4ubuntu1.3_arm64.deb ...
搞定!