
OpenCV를 사용하는 Qt 애플리케이션에서 데비안 패키지를 만들려고 합니다.
지금까지 내가 한 일:
- Virtualbox에서 Ubuntu를 설정했습니다.
- 애플리케이션(Qt 항목,
ffmpeg
코덱, OpenCV 등) 을 컴파일하고 실행하는 데 필요한 소프트웨어를 설치했습니다. - 애플리케이션을 성공적으로 컴파일하고 실행했습니다.
- GPG 키를 만들었습니다
- dh_make를 사용하여 프로젝트 디렉토리에 debian 디렉토리를 만들었습니다.
- debian/control->Build Does에 패키지를 추가했고 이를 실행하여 얻은 결과를 얻었습니다.
dpkg-depcheck -d qmake
- 또한 dpkg-depcheck -d SampleApp을 dpkg-depcheck -d SampleApp을 추가하여
- 저작권 및 변경 로그 파일을 편집했습니다.
- 나는 달리려고 노력한다
dpkg-buildpackage -b
이 시점에서 다음과 같은 오류 메시지가 나타납니다.
dpkg-shlibdeps: error: no dependency information found for /usr/local/lib/libopencv_imgcodecs.so.3.1 (used by debian/sampleapp/opt/SampleApp/bin/SampleApp)
dh_shlibdeps: dpkg-shlibdeps -Tdebian/sampleapp.substvars debian/sampleapp/opt/SampleApp/bin/SampleApp returned exit code 2
make: *** [binary] Error 2
dpkg-buildpackage: error: debian/rules binary gave error exit status 2
이 모든 파일은 아래에서 찾을 수 있습니다 /usr/local/lib/
. 나는 이것을 읽었습니다:https://www.debian.org/doc/debian-policy/ch-sharedlibs.html하지만 해결책을 찾을 수 없습니다. 이러한 종속성을 패키지에 어떻게 추가할 수 있나요?
편집하다:
Build-Depends field:
Build-Depends: debhelper (>= 8.0.0), libpopt0:i386, libqt5core5a:i386, qtdeclarative5-dev, libglib2.0-0:i386, qtchooser, pkg-config, qt5-qmake:i386, locales
Depends field:
Depends: ${shlibs:Depends}, ${misc:Depends}, udev, libxext6:i386, libxcomposite1:i386, libopencore-amrwb0:i386, libglib2.0-0:i386, libpangocairo-1.0-0:i386, libva-drm1:i386, libxinerama1:i386, libmp3lame0:i386, libnih1:i386, libx11-6:i386, libxcb-render0:i386, libffi6:i386, libgdk-pixbuf2.0-0:i386, libdrm2:i386, libvorbis0a:i386, libfontconfig1:i386, libxrender1:i386, libpango-1.0-0:i386, libdbus-1-3:i386, libpixman-1-0:i386, libopenexr6:i386, libxvidcore4:i386, libjpeg-turbo8:i386, libcgmanager0:i386, libcairo2:i386, libjasper1:i386, libxfixes3:i386, libilmbase6:i386, libtiff5:i386, libusb-1.0-0:i386, libdc1394-22:i386, libxi6:i386, libfreetype6:i386, libxrandr2:i386, libqt5network5:i386, libpng12-0:i386, libthai0:i386, libxcb-shm0:i386, libva1:i386, libvorbisenc2:i386, libtheora0:i386, libharfbuzz0b:i386, libicu52:i386, libjbig0:i386, libopencore-amrnb0:i386, libogg0:i386, libxcursor1:i386, libxcb1:i386, libraw1394-11:i386, libudev1:i386, libnih-dbus1:i386, libqt5core5a:i386, libgraphite2-3:i386, libva-x11-1:i386, libatk1.0-0:i386, libexpat1:i386, libgtk2.0-0:i386, libpangoft2-1.0-0:i386, libdatrie1:i386, libxdmcp6:i386, libvdpau1:i386, libxdamage1:i386, libxau6:i386
답변1
당신이 의존하는 공유 라이브러리가 /usr/local/lib
대신 (또는 유사한)에 설치되어 있다면, 패키지 관리자가 관리하는 패키지의 일부가 /usr/lib
아닌 것으로 의심됩니다 . 새 패키지가 의존해야 하는 모든 항목의 전체 목록을 작성하려고 하지만 이 경우 그 중 하나가 패키지 외부에 존재하는 것으로 보이므로 나열할 수 없습니다.dpkg
dh_shlibdeps
로컬이 아닌 Debian 패키지(및 -dev
이에 대해 빌드할 수 있는 해당 패키지)에서 OpenCV를 설치해야 합니다.