소스 코드 저장소에서 라이브러리 버전을 다운로드하여 설치해야 합니다. 문제는 쿠분투 패키지 관리자의 다른 패키지에는 이 라이브러리를 설치해야 한다는 것입니다. 지금은 ffmpeg를 사용하고 있지만 이전에도 이 작업을 수행해야 했습니다(예: OpenCV). 앞으로는 이 작업을 수행하는 가장 좋은 방법을 찾고 있습니다...
그래서 제가 하고 싶은 것은 checkinstall을 사용하여 dpkg와 함께 설치할 수 있는 데비안 패키지를 만드는 것입니다. deb 파일의 압축을 풀고 수정하여 작동시키려고 했습니다.
문제는 ffmpeg가 패키지 관리자에서 여러 패키지로 분할되어 있으며 필요하지 않은 경우 각 패키지를 교체하기 위해 5/6 패키지를 작성하고 싶지 않다는 것입니다. 이 모든 패키지에 필요한 모든 것이 올바르게 컴파일되는지 확인했습니다.
"require"와 "replace"를 사용해 보았지만 작동하지 않는 것 같습니다. 그런 다음 VLC를 설치하려고 하면 패키지 관리자에서 모든 것을 설치하라는 메시지가 표시됩니다. 또한 버전 번호가 패키지 관리자의 버전 번호보다 최신인지도 확인했습니다.
이것이 내 deb 제어 파일에 기록된 내용입니다. 내가 아는 한 이것은 muon 패키지 관리자에서 모두 인식됩니다.
Package: ffmpeg
Priority: extra
Section: checkinstall
Installed-Size: 172216
Maintainer: root@skund
Architecture: amd64
Version: 8:1.2.1-git-2
Provides: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Replaces: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Description: Package created with checkinstall 1.6.2
여기서는 패키지 관리자에 설치됩니다.
누구든지 작동시키는 데 대한 아이디어가 있습니까?
답변1
우선, Provides:
지정된 버전의 종속성에서는 작동하지 않습니다. ~에서데비안 정책 매뉴얼, "가상 패키지 - 프로비저닝":
관계 필드에 버전 번호가 추가된 경우 실제 패키지만 고려됩니다 [...] 즉, 버전 번호가 지정되면 해당 패키지 이름에 대한 모든 제공을 무시하고 실제 패키지만 고려하는 요청입니다.
라이브러리에 대한 종속성은 거의 항상 버전이 지정됩니다. 그래서 그것은 작동하지 않습니다.
대신 다음을 수행할 수 있습니다.
- Debian 패키지(
apt-get source PACKAGE
)를 다운로드하고 최신 ffmpeg로 업데이트합니다(실제로 필요한 패치를 Debian 버그 추적기로 보낼 수도 있습니다). 물론 라이브러리의 이름을 업데이트해야 하며(ABI가 변경되었을 것임) 아마도 ffmpeg에 의존하는 많은 것을 다시 빌드해야 할 것입니다. API가 변경되면 일부는 소스 코드 변경이 필요할 수 있습니다. - 또는 쉬운 방법: 이 중 하나를
/usr/local
빌드하고 다른 패키지 이름을 지정할 수.deb
있습니다(예:local-ffmpeg
). 그런 다음 위의 모든 사항에 대해 걱정할 필요 없이 데비안에서 제공하는 ffmpeg를 사용하여 설치할 수 있습니다.stow
를 사용하여 설치할 수도 있습니다/usr/local
.