질문:

질문:

질문:

내 소스에서 DEB 패키지를 만들려고 합니다.
종속성 처리를 제외하고는 모든 것이 정상입니다.

내가 아는 한, 종속성을 표시하는 가장 진정한 방법은 파일 Depends의 섹션 에 나열하는 것입니다 control. 내 응용 프로그램에는 두 개의 기존 패키지( aaptzipalign오직최근 데비안에서는 (≥제시) 및 우분투(≥윌리) 저장소이므로 이전 버전에 .deb를 설치하는 데 확실히 문제가 있을 것입니다.

아이디어:

이 문제에 대한 몇 가지 생각:

  • 필요한 독립 실행형 바이너리(내 .deb의 일부)를 /usr/bin.
    • 프로페셔널 버전: 필요한 종속성이 내 패키지에 독립 실행형 바이너리로 존재하므로 Depends해당 부분은 사용되지 않으며 누락된 저장소 패키지는 문제가 되지 않습니다.
    • 건강한: 대상 바이너리가 다른 패키지의 일부로 대상 컴퓨터에 이미 존재하는 경우 dpkg오류가 발생하며 사용자에게 --force-overwrite옵션을 전달하도록 강제하는 것은 좋은 생각이 아닙니다.
  • 필요한 독립 실행형 바이너리(내 .deb의 일부)를 /usr/share/myapp.
    • 프로페셔널 버전: 애플리케이션은 자체 별도 디렉터리를 사용하여 타사 바이너리를 저장하므로 잠재적으로 기존 패키지를 변경하지 않습니다(그리고 Depends해당 부분은 더 이상 필요하지 않습니다).
    • 건강한: 이 share디렉터리는 아키텍처 독립적인 데이터를 저장하는 데 사용되지만 이진 파일은 그렇지 않습니다.
  • 전체 애플리케이션을 이 /opt/myapp디렉터리에 설치합니다.
    • 프로페셔널 버전: 이 방법은 FHS 구조를 위반하지 않으며 파일을 완전히 격리된 디렉터리에 보관합니다.
    • 건강한: 그러나 이것은 특히 오픈 소스 소프트웨어의 경우 정통 UNIX 방식이 아닙니다.
  • 약한 관계 Recommends대신 해당 섹션을 사용 하고 사용자에게 누락된 패키지를 얻는 방법에 대한 몇 가지 지침을 제공하십시오.Depends
    • 건강한: .deb 패키지 자체가 의미를 잃었습니다.

이 방법 중 어느 것도 나에게 적합하지 않습니다. 이 문제를 처리하는 표준 방법이 있습니까? 확실한 해결책이 누락되었습니까? 예를 들어, 일종의 조건부 설치가 유용할 수 있습니다( which명령이 아무것도 출력하지 않는 경우에만 타사 바이너리를 설치하는 등).

어떤 아이디어나 제안이라도 대단히 감사하겠습니다.

답변1

(메인 패키지 외에) 별도의 패키지를 제공 aapt하고 고유한 버전이 zipalign있는지 확인하세요 ~(예 zipalign-21-4~kefir1.deb: : ). 그런 다음 이를 기본 패키지와 함께 저장소에 넣습니다 Depends: aapt, zipalign(저는 저장소를 호스팅하는 데 용이하며 reprepro어렵지 않습니다).

이것은이것데비안 방식(동일한 방식)backports.debian.org유효한) - 시스템이 Jessie이고 제공된 경우 aapt해당 시스템이 사용됩니다(패키지 버전에 물결표가 있으므로 최후의 수단으로만 사용됩니다). 시스템이 이전 Debian인 경우에만 추가 패키지가 추출됩니다. 사용자는 소프트웨어 패키지에 대한 업그레이드/보안 수정 사항을 쉽게 얻을 수 있습니다.

추가 이점은 Jessie에서 업그레이드할 때 공식 패키지가 추출되어 이전 추가 패키지를 덮어쓴다는 것입니다(물론 특정 버전이나 추가 패키지에 특별히 의존하지 않는 한). 따라서 더 이상 이전/중복 버전이 없으며 사용자는 데비안 보안 팀 패치 등의 추가 혜택을 얻을 수 있습니다.

관련 정보