소스 코드 저장소에서 라이브러리 버전을 다운로드하여 설치해야 했습니다. 문제는 쿠분투 패키지 관리자의 다른 패키지에는 이 라이브러리를 설치해야 한다는 것입니다. 지금은 ffmpeg로 작업하고 있지만 이전에도 이 작업을 수행해야 했습니다(예: OpenCV). 미래를 위해 이 작업을 수행하는 가장 좋은 방법을 찾고 있습니다...
그래서 제가 하려는 것은 checkinstall을 사용하여 dpkg와 함께 설치할 수 있는 데비안 패키지를 만드는 것입니다. 이후 deb 파일의 압축을 풀고 올바르게 작동하도록 수정했습니다.
문제는 ffmpeg가 패키지 관리자에서 여러 패키지로 분할되어 있으며 필요하지 않은 경우 각각을 교체하기 위해 5/6 패키지를 작성하고 싶지 않다는 것입니다. 나는 이 패키지가 모든 패키지에 필요한 모든 것을 포함하여 적절하게 컴파일되었는지 확인했습니다.
"필요" 및 "교체"를 사용하려고 했지만 제대로 작동하지 않는 것 같습니다. 나중에 VLC를 설치하려고 하면 패키지 관리자에서 모든 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:
버전을 지정하는 종속성에서는 작동하지 않습니다. 로부터데비안 정책 매뉴얼, "가상 패키지 - 제공":
관계 필드에 버전 번호가 첨부된 경우 실제 패키지만 고려됩니다 [...]. 즉, 버전 번호가 지정되면 해당 패키지 이름에 대한 모든 제공을 무시하고 실제 패키지만 고려하라는 요청입니다.
라이브러리에 대한 종속성은 거의 항상 버전이 지정됩니다. 그래서 그것은 작동하지 않을 것입니다.
대신 다음을 수행할 수 있습니다.
- 데비안 패키지(
apt-get source PACKAGE
)를 다운로드하고 최신 ffmpeg용으로 업데이트하세요(실제로 데비안 버그 추적기에 필요한 패치를 보낼 수도 있습니다). 물론 라이브러리의 이름을 업데이트해야 하며(ABI가 변경되었을 것임) 아마도 ffmpeg에 의존하는 많은 항목을 다시 빌드해야 할 것입니다. API가 변경된 경우 그 중 일부는 소스 변경이 필요할 수 있습니다. - 또는 쉬운 방법: 에 설치하세요
/usr/local
..deb
이를 빌드하고 다른 패키지 이름(예: )을 지정할 수 있습니다local-ffmpeg
. 그런 다음 데비안에서 제공하는 ffmpeg와 함께 설치할 수 있으며 위의 모든 사항에 대해 걱정하지 않아도 됩니다.stow
에 설치하는 데 사용할 수도 있습니다/usr/local
.