【问题标题】:Removing all installed OpenCV libs删除所有已安装的 OpenCV 库
【发布时间】:2012-03-05 18:41:10
【问题描述】:

我正在运行 Kubuntu 11.10(带 KDE 4.8)

在你阅读所有这些之前:

我只是想从我的系统中删除所有 OpenCV 的痕迹,这样我就可以重新开始..

整个故事

很久以前,我第一次从https://launchpad.net/~gijzelaar/+archive/opencv2 安装了python-opencv 和libopencv(我认为是2.1)。我当时只尝试了python-opencv,效果很好(我没有尝试使用OpenCV使用C++代码)

然后我最近尝试从源代码安装 OpenCV 2.3.1,它已安装,但在编译我自己的 C++ 代码(使用 OpenCV)时,它给了我关于 libgtk 未安装的错误,并且还破坏了我运行良好的 python opencv 代码早点

所以我安装了 libgtk2-dev 库并再次编译并安装了 OpenCV 2.3.1..

错误仍然发生,所以我删除了运行 cmake、make 等的未解压的 OpenCV 目录。我没有卸载(我现在意识到这是我的错误)

而是从这里安装了 ubuntu opencv 2.3 包(包含所有依赖项):https://launchpad.net/~gijzelaar/+archive/opencv2.3

现在的问题是我在编译包含 OpenCV 的 C++ 代码时仍然遇到同样的错误,并且错误仍然指向我的(已删除)OpenCV 源文件夹:

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /home/anant/opencv/OpenCV-2.3.1/modules/highgui/src/window.cpp, line 275
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/anant/opencv/OpenCV-2.3.1/modules/highgui/src/window.cpp:275: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvNamedWindow

如您所见,错误仍然指向我编译和安装 OpenCV 的目录

有没有办法完全删除我编译的 OpenCV 版本的所有痕迹,只保留 ubuntu 包中的文件?正如我之前提到的,我没有“卸载”并且还(愚蠢地)删除了安装清单

编辑: 我再次运行包管理器,发现并非所有来自 ppa 的 opencv 包都已正确安装。所以我又做了一个 sudo apt-get install opencv ,现在我得到了这个错误:

Unpacking libopencv2.3 (from .../libopencv2.3_2.3.1-3_amd64.deb) ...
dpkg: error processing /var/cache/apt/archives/libopencv2.3_2.3.1-3_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/libopencv_video.so.2.3.1', which is also in package libopencv-video2.3 2.3.1-4ppa1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Unpacking opencv (from .../opencv_2.3.1-3_amd64.deb) ...
dpkg: error processing /var/cache/apt/archives/opencv_2.3.1-3_amd64.deb (--unpack):
 trying to overwrite '/usr/bin/opencv_haartraining', which is also in package libopencv-core-dev 2.3.1-4ppa1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/libopencv2.3_2.3.1-3_amd64.deb
 /var/cache/apt/archives/opencv_2.3.1-3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

我只想从我的系统中删除 OpenCV 的所有痕迹,以便重新开始

【问题讨论】:

    标签: ubuntu opencv uninstallation


    【解决方案1】:

    系统使用的一些文件和文件夹的名称中包含“opencv”。您绝对想删除它们。所以我建议反对使用$ sudo find / -name "*opencv*" -exec rm -rf {} \; 删除opencv,因为它会递归删除所有名称中包含“opencv”的文件和文件夹。

    更好的选择是使用此命令,它会在删除找到的每个文件和文件夹之前提示您:

    $ sudo find / -name "*opencv*" -exec rm -i {} \;

    如果您不小心删除了系统的任何本机 opencv 文件并破坏了某些东西(或者在当时这似乎是个好主意),这是您的解决方法:

    1. 删除已安装的 opencv 库
    $ sudo apt remove libopencv-dev   
    $ sudo apt remove libopencv-core3.2
    
    1. 但是,opencv-data 可能不会随之删除。你可以用这个找到剩余的文件:

    $ sudo apt list --installed | grep opencv

    1. 之后,使用 ROS Melodic 重新安装系统 opencv 文件:

    $ sudo apt install ros-melodic-desktop-full

    注意如果您需要在安装 ros melodic 之前设置源列表,您可以使用以下命令(如果第 3 步不适合您,请在第 3 步之前执行它们):

    $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
    
    $ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
    
    $ sudo apt-get update
    
    $ sudo apt-get install ros-melodic-desktop-full
    

    【讨论】:

      【解决方案2】:
      sudo rm /home/god/softwares/miniconda3/{bin,lib}/*opencv* 
      

      【讨论】:

      • 你应该替换目录的路径。
      【解决方案3】:

      我找不到构建目录,所以找到了:

      sudo apt-get purge '*opencv*'

      还有:

      sudo find / -name "*opencv*" -exec rm -rf {} \;

      这似乎工作得很好。

      您可以仔细检查:

      sudo find / -name "*opencv*";

      【讨论】:

        【解决方案4】:

        对于特定版本,例如 3.2:

        sudo find / -name "*opencv*3.2*"   -exec rm -rf {} \;
        

        【讨论】:

          【解决方案5】:

          如果你有构建目录,那么建议执行:

           $ sudo make uninstall
          

          根据@Navid 的回答从构建目录中

          但这会在某处留下少量 .so* 文件

          要完全删除所有此类文件,请执行以下操作:

          $ sudo rm /usr/local/{bin,lib}/*opencv* 
          

          /usr/local 是我们在运行cmake 时通常设置的CMAKE_INSTALL_PREFIX。根据你的执行方式替换cmake

          【讨论】:

          • {bin, lib} 之间的空格使它在我的 Ubuntu 16.04 上看起来像是两条独立的路径。应该是{bin,lib}
          • 应该是 $ sudo rm -r /usr/local/{bin,lib}/*opencv* 甚至删除 opencv 文件夹?
          【解决方案6】:

          如果在源代码上使用sudo make install 命令安装了opencv,则转到构建文件夹并使用sudo make uninstall,它应该卸载opencv

          【讨论】:

            【解决方案7】:

            要删除所有没有“交互”的文件和文件夹,请使用以下命令:

            sudo find / -name "*opencv*" -exec rm -rf {} \;
            

            注意:不建议运行“递归”和“强制”删除。

            【讨论】:

            • ? 以防其他人看到这个(赞成?)答案并正在考虑运行它——请不要。而是做类似的事情(注意:检查上/下,两者都有):sudo find / \( -name "*opencv*" -o -name "*OpenCV*" \) -print 2>/dev/null > /tmp/out.txt 并手动检查 /tmp/out.txt 以查找要删除的内容。运行上面的命令会有点疯狂。要尝试的另一件事(但并非详尽无遗)是locate -i opencv。您很快就会明确地注意到有些东西是您不想删除的
            • @michael 使用 -iname 代替不区分大小写
            • 我不会使用-iname,出于同样的原因,我建议不要运行-name "*opencv*" ,而是通过locate -i 手动检查(locate 不区分大小写),因为有可能与仍需要/期望的子字符串匹配的其他名称(例如libgstreamer1.0-opencv 等)。通常,与 OpenCV 相关的除了opencvOpenCV(例如,不是MicroPenCVS)之外的任何内容,因此精度可以避免不受欢迎的意外。话虽如此,我仍然永远不会来自/(root)的find / ... rm,因为那是pkg mgr域,而只是来自/opt等。跨度>
            • @michael 如果我想完全删除 opencv 为什么会有我不想删除的名为 opencv 的文件?
            • @kong 不知道,不可能说不区分大小写的通配符将来会匹配什么(但这就是重点)。我以假设的包“MicroPenCVS”为例。试运行 == 测量两次,切割一次。
            【解决方案8】:

            您可以通过sudo make uninstall 进行彻底卸载

            【讨论】:

            • 在我的情况下,也许是 flak37,使用 make 卸载 opencv 时出错。
            【解决方案9】:

            默认情况下,从源代码构建 OpenCV 时,它会将其输出放在 /usr/local/lib/usr/local/bin 中。虽然,从您的错误消息来看,它似乎将库放在 /usr/lib 中,将二进制文件放在 /usr/bin 中,所以您也可以在那里签入。

            您也可以使用 Linux find 命令。因此,要查找所有 OpenCV 库,您可以执行以下操作(这可能需要一段时间):

            $> sudo find / -name "*opencv*" -exec rm -i {} \;
            

            上述命令将查找名称中包含 opencv 的任何文件,并提示您将其删除。与往常一样,手动删除内容时要小心!

            另一种选择可能是再次手动编译 OpenCV(完全相同,就像您之前所做的那样),make install 创建安装清单,然后尝试 make uninstall 以看看它是否会自行清理。

            希望对您有所帮助! :)

            【讨论】:

            • 谢谢!正是我想要的。我卸载了软件包,然后运行 ​​sudo find / -name "opencv" -exec rm -i {} \;然后重新安装了软件包。通过运行 sudo dpkg -i --force-overwrite path-to-package 修复了我的最后一个错误。 OpenCV 现在似乎可以工作了,尽管我还没有彻底测试它。 Python-OpenCV 像以前一样工作。
            • 另外一个相关的建议是下次需要使用OpenCV的时候在虚拟机中安装;这样,当你需要卸载时,你所要做的就是销毁虚拟机并,你就完成了。
            • 不是一个好的答案,关于find 命令。这将删除任何内容,即使在您的用户目录或其他用户目录中,其中可能包含 opencv(例如,自己的脚本、文件、来自其他库的文件等)。非常危险,我不会使用它。如果您真的必须删除这些文件,请非常小心并测试版本是否会干扰 apt-packages:sudo find /usr/ -name "*opencv*3.4*" -delete
            • @DomTomCat 是的,你绝对可以像这样过滤起始目录。我还建议将 rm -i 用于交互模式,以确保您要实际删除文件。
            • 感谢添加交互模式,这样会更安全一些
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-02-20
            • 1970-01-01
            • 1970-01-01
            • 2014-09-21
            • 1970-01-01
            • 2019-03-20
            • 2020-12-19
            相关资源
            最近更新 更多