Sudo在Ubuntu 14.04上发出安装权限问题

时间:2016-06-05 11:42:40

标签: opencv makefile ubuntu-14.04

我修改了https://github.com/jayrambhia/Install-OpenCV/blob/master/Ubuntu/2.4/opencv2_4_10.sh的脚本,尝试将OpenCV 2.4.13安装到运行Ubuntu 14.04的vm上,我有sudo权限。我是openCV,cmake& amp;的新手。如此任何帮助让这个脚本工作将不胜感激,因为我必须在20伏安装它。

运行几分钟后,脚本会返回错误,上面写着“不能

/bin/sh: 1: cd: can't cd to /home/myaccount/setups/OpenCV/opencv-2.4.13/build

make[2]: *** [3rdparty/libtiff/CMakeFiles/libtiff.dir/depend] Error 2
make[1]: *** [3rdparty/libtiff/CMakeFiles/libtiff.dir/all] Error 2

输出的最后几行包含在下面,脚本就在此之前。

有关脚本无法成功完成或如何更正权限问题的任何想法?

额外详情

我不确定这些是否相关,但当我深入研究这个问题时,我会更新此部分

  • cmake version 2.8
  • Makerfile提及#执行make规则的shell。贝壳 = / bin / sh但我的终端报告回显$ 0为bash
  • 当我运行make install V=1时,它构建100%,然后报告 - 安装配置:" RELEASE" cmake_install.cmake上的CMake错误:36(文件):文件无法创建目录:/ usr / local / include / opencv2。可能需要管理权限
  • 但是当我运行sudo make install V=1时,我得到了
  • 上面的错误
  • 将Shebang #!/bin/bash添加到我的脚本开头并没有解决它
  • 在新的ubuntu本地计算机上运行脚本会使脚本运行但我需要让它在托管的vm​​上运行
  • umask setups文件夹(其中脚本运行并创建目录为0022。setups文件夹的权限为755,group = Domain Users,Owner = {{1这是创建源文件文件夹的位置,以及创建后也是myaccount的构建文件夹

脚本

755

命令输出

arch=$(uname -m)
if [ "$arch" == "i686" -o "$arch" == "i386" -o "$arch" == "i486" -o "$arch" == "i586" ]; then
flag=1
else  
flag=0
fi
echo "Installing OpenCV 2.4.13"
mkdir OpenCV
cd OpenCV
echo "Removing any pre-installed ffmpeg and x264"
sudo apt-get -y remove ffmpeg x264 libx264-dev
echo "Installing unzip"
sudo apt-get -y install unzip
echo "Installing Dependenices"
sudo apt-get -y install libopencv-dev
sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm
sudo apt-get -y install libtiff4-dev libjpeg-dev libjasper-dev
sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev
sudo apt-get -y install python-dev python-numpy
sudo apt-get -y install libtbb-dev libeigen3-dev
sudo apt-get -y install libqt4-dev libgtk2.0-dev
sudo apt-get -y install libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-core-dev
sudo apt-get -y install x264 v4l-utils ffmpeg
sudo apt-get -y install libgtk2.0-dev
echo "Downloading OpenCV 2.4.13"
if ! [ -f "OpenCV-2.4.13.zip" ]; then
  wget -O OpenCV-2.4.13.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.13/opencv-2.4.13.zip/download
fi
echo "Installing OpenCV 2.4.13"
if ! [ -d "opencv-2.4.13" ]; then
  unzip OpenCV-2.4.13.zip
fi
rm OpenCV-2.4.13.zip
cd opencv-2.4.13
rm -rf build
mkdir build
cd build
cmake -D CUDA_ARCH_BIN=3.2 -D CUDA_ARCH_PTX=3.2 -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D BUILD_TIFF=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
make -j$(nproc)
sudo make install
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
echo "OpenCV 2.4.13 ready to be used"

1 个答案:

答案 0 :(得分:0)

我的脑海中浮现出什么来解释缺少权限问题:如果您的/home在NFS上,root可能会nobody拥有root个文件的权限。有很多related questions on StackExchange

我的解决方案是首先尝试将第三方软件安装为root。执行make install后,您的/usr/local可以执行任何,包括添加或覆盖已由您的软件包管理器管理的文件。这可能会使包管理器感到困惑甚至使您的系统无法使用。最好在其他地方安装软件;为此目的创建了/optlocal。为了确保您的安装过程不会偏离此,您可以为该用户创建不同的用户(我称之为chown -R),sudo -u local这些目录,并使用{{1}进行安装而不是sudoing到root。对于大多数安装来说这都没问题,如果你遇到一个试图做一些需要root权限的事情(例如将文件写入/etc/usr/bin,重启系统服务,那就太狡猾了)有权限的东西等),它将失败并显示错误消息,允许您在它已经发生之前决定是否需要它。我不知道OpenCV是否需要任何这样的步骤。