IT story

소스에서 데비안 / 우분투 패키지를 빌드하는 방법?

hot-time 2020. 7. 26. 12:01
반응형

소스에서 데비안 / 우분투 패키지를 빌드하는 방법?


프로그램 소스 (cvs / svn / git / ...에서 가져 왔습니다)가 있으며 데비안 / 우분투 패키지를 만들고 싶습니다. 패키지는 리포지토리에 있지만 다음과 같습니다.

  • 이전 버전입니다 (필요한 기능 부족).
  • 기본값과 약간 다른 컴파일 옵션이 필요합니다.

가장 쉬운 방법은 무엇입니까? 몇 가지 일이 걱정됩니다

  • 모든 종속성을 올바르게 나열했는지 어떻게 확인할 수 있습니까? (이전 버전의 의존성을 살펴보면 힌트를 얻을 수 있지만 새로운 의존성이 추가되었을 수 있습니다.)
  • 업데이트 시스템이 업데이트의 저장소에 이전 버전을 설치하지 못하게하려면 어떻게해야합니까?
  • 시스템이 최신 버전을 설치하지 않고 사용자 정의 패키지를 덮어 쓰지 못하게하려면 어떻게해야합니까?

아직 debian / ubuntu에없는 모든 패키지에 대해 "checkinstall"특수 패키지를 사용할 수 있습니다.

"uupdate"( apt-get install devscripts)를 사용하여 기존 데비안 소스가있는 소스에서 패키지를 빌드 할 수 있습니다.

libdrm2의 예 :

apt-get build-dep libdrm2
apt-get source libdrm2
cd libdrm-2.3.1
uupdate ~/Downloads/libdrm-2.4.1.tar.gz
cd ../libdrm-2.4.1
dpkg-buildpackage -us -uc -nc

먼저, 제목 질문 : debian 디렉토리가 이미 있다고 가정하고 소스 디렉토리 (debian 디렉토리를 포함하는 디렉토리)에 있고 dpkg-buildpackage를 호출하십시오. 다음 옵션으로 실행하고 싶습니다.

dpkg-buildpackage -us -uc -nc

결과에 서명하지 않고 깨끗하지 않음을 의미합니다.

모든 종속성을 올바르게 나열했는지 어떻게 확인할 수 있습니까?

의존성을 얻는 것은 검은 예술입니다. 빌드를 확인하는 "공식적인"방법은 패키지가 기본 시스템, "빌드 필수"패키지 및 지정한 빌드 종속성으로 만 빌드하는 경우입니다. 일반적인 의존성에 대한 일반적인 대답을 모른다.

업데이트 시스템이 업데이트의 저장소에 이전 버전을 설치하지 못하게하려면 어떻게해야합니까? 시스템이 최신 버전을 설치하지 않고 사용자 정의 패키지를 덮어 쓰지 못하게하려면 어떻게해야합니까?

내 지식이 오래되었지만 둘 다 해결하려면 dpkg --set-selections를 사용하십시오. nullidentd가 그대로 유지하려는 패키지라고 가정하고 루트로 실행

echo 'nullidentd hold' | dpkg --set-selections

또는 소스에서 빌드하기 때문에 에포크 (epoch) 를 사용하여 버전 번호를 인위적으로 높게 설정하고 다시는 신경 쓰지 않아도됩니다. 신기원을 사용하려면 debian / changelog 파일에 새 항목을 추가하고 버전 번호 앞에 99를 입력하십시오. 내 nullidentd 예제가 주어지면 업데이트 된 변경 로그의 첫 번째 줄은 다음과 같습니다.

nullidentd (99:1.0-4) unstable; urgency=low

Bernard의 링크 는 특히 데비안 디렉토리를 직접 만들어야하는 경우에 유용합니다. 개발자 참조일반 리소스 페이지 도 도움이 됩니다 . Adam의 링크 도 좋아 보이지만 익숙하지 않습니다.


당신이하고 싶은 일을 위해, 데비안 소스 diff를 사용하고 싶을 것이므로 패키지는 사용 된 업스트림 버전을 제외하고 공식 패키지와 비슷합니다. packages.debian.org 에서 소스 diff를 다운로드 하거나 "apt-get source"를 사용하여 .dsc 및 원본 소스 아카이브와 함께 가져올 수 있습니다.

그런 다음 새 버전의 업스트림 소스를 풀고 해당 디렉토리로 변경 한 다음 다운로드하여 diff를 적용하십시오.

zcat ~/downloaded.diff.gz | patch -p1
chmod +x debian/rules

그런 다음 옵션을 컴파일하려는 변경을 수행하고 다음을 수행하여 패키지를 빌드하십시오.

dpkg-buildpackage -rfakeroot -us -uc

ccache 용 샘플 우분투 기반 빌드 :

sudo apt-get update
sudo apt-get build-dep ccache
apt-get -b source ccache
sudo dpkg -i ccache*.deb

자세한 내용은 http://blog.aplikacja.info/2011/11/building-packages-from-sources-in-debianubuntu/


  • "debian"디렉토리를 원본 패키지에서 소스 디렉토리로
  • " dch "를 사용하여 패키지 버전을 업데이트하십시오.
  • "debuild"를 사용하여 패키지 작성

나는 이것이 데비안 패키지 '성경' 이라고 생각 합니다 .

글쎄, 그것은 데비안 새로운 관리자 안내서이므로 많은 것들을 적용 할 수는 없지만 어디로 가는지 다룹니다.


Ubuntu를 사용하는 경우 pkgcreator 프로젝트를 확인하십시오 ( http://code.google.com/p/pkgcreator).


다음 은 데비안 패키지를 만들기위한 튜토리얼입니다.

기본적으로 다음을 수행해야합니다.

  1. 폴더 구조 설정
  2. 컨트롤 파일 만들기
  3. 선택적으로 postinst 또는 prerm 스크립트를 작성하십시오
  4. dpkg-deb 실행

I usually do all of this in my Makefile so I can just type make to spit out the binary and package it in one go.


How can I check if I have listed all the dependencies correctly?

The pbuilder is an excellent tool for checking both build dependencies and dependencies by setting up a clean base system within a chroot environment. By compiling the package within pbuilder, you can easily check the build dependencies, and by testing it within a pbuilder environment, you can check the dependencies.


If you want a quick and dirty way of installing the build dependencies, use:

apt-get build-dep

This installs the dependencies. You need sources lines in your sources.list for this:

deb-src http://ftp.nl.debian.org/debian/ squeeze-updates main contrib non-free

If you are backporting packages from testing to stable, please be advised that the dependencies might have changed. The command apt-get build-deb installs dependencies for the source packages in your current repository.

But of course, dpkg-buildpackage -us -uc will show you any uninstalled dependencies.

If you want to compile more often, use cowbuilder.

apt-get install cowbuilder

Then create a build-area:

sudo DIST=squeeze ARCH=amd64 cowbuilder --create

Then compile a source package:

apt-get source cowsay

# do your magic editing
dpkg-source -b cowsay-3.03+dfsg1              # build the new source packages
cowbuilder --build cowsay_3.03+dfsg1-2.dsc    # build the packages from source

Watch where cowbuilder puts the resulting package.

Good luck!

참고URL : https://stackoverflow.com/questions/130894/how-to-build-a-debian-ubuntu-package-from-source

반응형