바이너리 파일과 바이너리가 아닌 파일이 포함된 패키지에 대한 소스 deb를 만드는 방법은 무엇입니까?

바이너리 파일과 바이너리가 아닌 파일이 포함된 패키지에 대한 소스 deb를 만드는 방법은 무엇입니까?

나는 현재 일반 프로그램(예: 쉘 스크립트, Python 코드 등)과 바이너리(컴파일된 C 코드 ) deb모음을 포함하는 패키지를 만들고 있습니다. gcc패키지 생성 지침을 충족하려면 바이너리의 소스 코드가 포함된 소스 패키지가 필요합니다. 내 패키지에는 바이너리 파일이 하나만 있고 나머지는 일반 텍스트 프로그램이므로 소스 패키지를 만들려면 어떻게 사용해야 합니까?

자세한 설명: 내 소스 코드 패키지는

  1. 디렉토리가 있고 DEBIAN바이너리 경로만 있습니다(바이너리의 소스 코드로 대체하시겠습니까?)
  2. 디렉토리가 없는 디렉토리에 바이너리의 소스 코드를 넣은 DEBIAN다음 gunzip해당 디렉토리에 넣으시겠습니까?
  3. 실제 패키지와 정확히 동일한 디렉토리 레이아웃을 갖고 바이너리를 자신의 소스 코드(예: bin/somebinarybe bin/somebinary.c)로 바꾸시겠습니까?

    어떤 도움이라도 대단히 감사하겠습니다!

답변1

사용dh_make패키지에 대한 템플릿을 만듭니다. 몇 가지 질문을 하고 필요한 debian디렉토리를 생성합니다.

바이너리 실행 파일과 아키텍처 독립적 프로그램을 모두 포함하는 패키지의 경우 단일 아키텍처 종속 바이너리 패키지를 만들거나 바이너리 실행 파일을 포함하고 아키텍처 독립적 바이너리 패키지를 포함하는 아키텍처 종속 바이너리 패키지를 만드는 두 가지 옵션이 있습니다. 스크립트 및 기타 아키텍처 독립적인 파일. 아키텍처 독립적 패키지의 주요 장점은 여러 아키텍처에 대한 패키지 배포 이미지를 저장할 때 공간을 절약하는 것입니다. 멀티 아키텍처 설치가 있고 여러 아키텍처용 바이너리를 설치하려는 경우 아키텍처 독립적인 파일을 아키텍처 독립적 패키지에 넣어야 합니다. 이것에 신경 쓰지 않는 한 패키지를 만드는 것이 더 쉽습니다. 두 개의 패키지를 만들기로 결정한 경우 일반적으로 foo아키텍처 종속적 foo-common이거나 foo-data아키텍처 독립적 인 아키텍처 종속 패키지가 있습니다 .

소스 패키지에는 하위 디렉터리의 deb 패키징 스크립트 debian, 컴파일된 프로그램의 소스 코드 및 다양한 스크립트를 포함하여 바이너리 패키지를 준비하는 데 필요한 모든 것이 포함됩니다. 업스트림 아카이브를 소스 아카이브로 유지하고 deb 소스 패키지를 만들기 위해 파일을 재구성하거나 삭제하지 마십시오.

Debhelper( dh) 빌드 자동화 도구는 바이너리 패키지의 디렉터리 구조를 어셈블하는 작업을 담당합니다. 소스 트리의 디렉터리 구조와 설치된 패키지의 디렉터리 구조 사이에는 아무런 관계가 없습니다. 기본값 debian/rules

%:
        dh $@

명령이 가 아닌 경우 ./configure && make && make install해당 대상을 에 추가합니다 debian/rules. 예를 들어 옵션을 다음으로 전달합니다 ./configure.

configure:
        ./configure --with-foo

설치 파일의 경우 복사해야 하는 파일을 나열하면 debian/PACKAGENAME.install해당 파일이 복사됩니다.dh_install. 생성될 디렉터리를 나열합니다 debian/PACKAGENAME.dirs(예:dh_installdirs).

보다개발자 매뉴얼모든 구성 가능한 단계에 대해. 빌드 출력, 매뉴얼 페이지, 글꼴, 공유 라이브러리, Perl 모듈 등이 자동으로 설치될 수 있습니다.

자세한 내용은 다음을 참조하세요.

답변2

우선, 이것은 매우 광범위한 주제입니다. dpkg-buildpackge소스 코드에서 빌드 소스 패키지를 사용할 수 있습니다 . 당신이 데비안 패키징이 어떻게 되어야 하는지 명시적으로 언급했으므로 이에 대해 쓰겠습니다.

  • debian소스 폴더에 디렉터리가 있어야 합니다.
  • rulesauto configuredebian 디렉토리에서 deb 도우미 키워드를 사용 하거나 같은 일부 deb 도우미 규칙을 재정의해야 합니다 strip(예: using override_dh_auto_configure:또는 override_dh_strip기타...).
  • 무엇을 어디에 배치할지 지정하는 파일이 있어야 합니다 package.install. 예를 들어 바이너리를 생성한 경우 바이너리가 설치되어야 하는 해당 바이너리의 경로를 언급해야 하거나 공유 개체(.so) 파일이 있는 경우를 언급해야 합니다. 사용하고 있다면 automake매우 쉬울 것입니다. Makefile.am바이너리나 라이브러리를 어디에 설치해야 하는지 언급할 때 언급하기 만 하면 됩니다 .
  • control빌드 종속성과 패키지 종속성을 언급하는 파일이 있어야 합니다 . (데비안 패키지 설치시 필요한 것들.)
  • 데비안 패키지 설치 후 작업/변경을 수행하기 위한 설치 후 스크립트입니다. (예를 들어 설치 후 파일 권한 등을 변경하려는 경우)
  • changelog패키지 변경 설명과 버전 번호가 포함된 파일입니다.

    모든 일이 순조롭게 진행되면 파일 dpkg-buildpackage을 받아야 합니다 package_arch_version.deb.

내가 말했듯이 이것은 엄청난 주제입니다. 단지 데비안 패키지의 모양과 그 안에 무엇이 포함되어 있는지에 대한 아이디어를 제공할 뿐입니다. 요구 사항에 따라 이러한 파일을 사용자 정의해야 합니다.

관련 정보