linux(ubuntu) E: 无法找到软件包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux(ubuntu) E: 无法找到软件包相关的知识,希望对你有一定的参考价值。
root@wanglei-linux:/etc# apt-get install xinetd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
Reading state information... 完成
现在没有可用的软件包 xinetd,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
E: 软件包 xinetd 还没有可供安装的候选者
Linux下OpenCV的安装与测试成功教程(解决E: 无法定位软件包 libjasper-dev无法找到directory `opencv.pc‘fatal error:“highgui.h“)
目录
前言
好激动,断断续续装了两三天才装上,踩了好多坑。
这里把成功安装的步骤详细写下来,如果有小伙伴需要,可以尝试一下,但我不能保证你也可以装好。
首先说一下我的各个版本(不谈版本的安装教程都是耍流氓!)
是用虚拟机软件:VirtualBOX6.1.30
系统版本:ubuntu-20.04.3-desktop-amd64(最小安装模式,中文)
OpenCV版本:4.5.5
安装时间:2022.2.11
下面是步骤
1、下载OpenCV源码
进入OpenCV的官方下载地址Releases - OpenCV,下载Sources。为啥官方上有Windows和MacOS的版本却没有LInux的版本?由于Linux环境比较复杂多样,所以需要将源码下载下来在本机安装好依赖库之后,自行编译。
2、解压到指定目录并创建build目录
下载好之后我是通过终端以下指令打开root的文件管理器,将下载好的zip文件解压到了/opt里面然后更名为opencv.(作为小白,暂时只知道这样子好操作)
sudo nautilus
进入该文件夹创建一个build文件夹在终端中进入
sudo -i
cd /opt/build
3、下载编译OpenC源码的cmake和一些依赖库。
apt-get install cmake
apt-get install build-essential libgtk2.0-dev libavcodec-dev
apt-get install libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
在安装过程中注意一下有没有“连接失败”或者“忽略”的库,如果有的话执行以下指令后再重新执行前一条指令。如果还是不行可以参考我的领一篇分享Linux在sudo apt-get update或install时出现archive.ubuntu.com连接失败 [IP: 91.189.91.39 80]的错误解决方案
sudo apt-get update
如果出现E: 无法定位软件包 libjasper-dev问题,执行一下指令
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
如果确保全部都安装好了之后进行下一步步骤
4、检查cmake安装版本,检查是否安装成功
cmake -version
接下来安装pkg-config,用来配置环境变量检查版本是否安装成功。
apt-get install pkg-config
pkg-config --version
5、接下来用cmake编译opencv。
这个步骤需要配置很多参数,如果参数错误可能导致安装好之后也不能使用,如果使用别人的方法编译完成后在测试的时候出现opencv.pc找不到的情况,多半是这个原因
cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON ..
cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF ..
cmake -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF ..
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=O -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
这条命令会在build目录里生成对应配置的Makefile文件,可以看到配置信息之间是通过空格和-D来分割和标示的,配置了很多信息,我觉得比较重要的一个是 -D OPENCV_GENERATE_PKGCONFIG=ON,生成opencv.pc文件的配置(注意,opencv4生成的文件叫做opencv4.pc),另外就是 CMAKE_INSTALL_PREFIX=/usr/local这个关于安装路径的配置,这里的安装路径是在/usr/local下,这也是opencv的默认配置。
千万注意,最后的两个..千万不要删,这个指向CMakeLists.txt所在的目录
此时当前目录仍是build,直接编译安装即可
sudo make install
这里需要sudo权限,也有的同学喜欢先make,在make install ,均可,先make的话可以使用make -j8指定多线程编译,会更快
安装成功后会刷出很多信息,仔细看会发现都是说×××库被安装在×××目录下的,我们这里说明一下:因为我们指定了安装路径,所以我们的头文件被放在/usr/local/include/opencv4/opencv2/目录下,我们的库文件被放在/usr/local/lib/目录下,可以进去查看一下这些文件是否是否存在。
接下来可以输入
opencv_version
来判定安装成功的opencv版本号,当出现你安装的opencv版本号时,就安装成功了。
6、系统环境变量进行配置
opencv是一个第三方的库,我们要引用它需要对系统的环境变量进行配置。
vim /etc/ld.so.conf.d/opencv.conf
在文件末尾添加:
/usr/local/lib
如果这是我们第一次安装opencv,这个文件可能是个空文件,这里的/usr/local/lib就是我们安装opencv时安装的那些库的目录
将这个文件保存然后
sudo ldconfig
7、c++程序配置环境变量
接下来要为我们编写c++程序配置环境变量,我们知道一个c文件编译时首先会预处理,将头文件转换为对应的代码,所以第一步会先去找c文件里引用的头文件,然后生成中间文件,中间文件会去找它依赖的库,然后生成可执行文件,这是第二步,我们需要配置的环境变量主要就是这两个方面。
我们这里使用2步骤时安装成功的pkg-config来进行配置
首先在终端输入(这里为了编辑方便先安装一vim)
sudo apt-get install vim-gtk
vim /etc/bash.bashrc
这里是vim的操作,如果有小伙伴不太熟悉的可以跟着操作,按i后终端界面最后一行会出现-插入-,然后通过键盘下方向键一道文件末尾,在文本末尾处鼠标右键粘贴如下代码,然后按Esc后输入:(英文输入法下的冒号)然后输入x回车即可
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
这里是为pkg-config设置系统环境变量,当pkg-config运行时,他会在他的配置目录下查找.pc文件,找到对应的文件就读取它,pkg-config的默认路径是: /usr/lib/pkgconfig/和/usr/share/pkgconfig/,这里我们新给他添加了一个路径/usr/local/lib/pkgconfig。
然后
source /etc/bash.bashrc
更新一下系统的环境变量
8、确保opencv4.pc在指定位置
接下来在/usr/local/lib/目录下建立pkgconfig目录,然后将build文件夹下编译生成的opencv4.pc 拷贝进/usr/local/lib/pkgconfig(如果pkgconfig目录已经存在可以进文件夹检查一下是否已经存在opencv4.pc,如果存在即可跳过本步骤)
(可以通过命令行查找opencv4.pc:)
find ./ -name opencv4.pc
然后
pkg-config --cflags opencv4
测试是否配置好环境变量
这里记住两个值: pkg-config --cflags 代表我们安装的头文件路径, pkg-config --libs opencv4代表我们安装的库文件路径
9、利用官方samples库验证是否安装成功
环境变量配置好后,进到我们解压opencv包的目录,里面有一个samples文件夹,这个里面全是各种语言的测试
cd opencv-4.3.0/samples/cpp/
进到cpp目录下测试c++使用opencv,随便找一个.cpp文件进行编译
例如:
g++ edge.cpp `pkg-config --cflags --libs opencv4`
注意这里的两个``是键盘左上方的符号,不是单引号,这代表shell的运行语句
编译成功就代表你的opencv可以使用啦!!!
然后可以运行看看效果
./a.out
如果出现如下窗口,说明你也安装成功啦,恭喜!
以上是关于linux(ubuntu) E: 无法找到软件包的主要内容,如果未能解决你的问题,请参考以下文章
linux安装gcc报错,该怎么解 E: 未发现软件包 gcc-c+ E: 无法按照正则表达式 gcc-c+ 找到任何软件包
E: 软件包*需要重新安装,但是我无法找到相应的安装文件。(ubuntu14.04)
linux ubuntu安装wine时出现无法定位软件包 wine
Linux下OpenCV的安装与测试成功教程(解决E: 无法定位软件包 libjasper-dev无法找到directory `opencv.pc‘fatal error:“highgui.h“)
ubuntu12.04软件中心打开错误和 ubuntu 包管理之“:E: 读错误 - read (5: 输入/输出错误) E: 无法解析或打开软件包的列表或是状态文件。”的解决