기존 PPA 패키지에 이진 파일을 추가하는 방법


10

PPA 패키지에 수정되거나 새로운 텍스트 파일을 추가하는 것은 간단합니다.

1 단계:

apt-get source [foo-package]
cd [foo-package]

2 단계 : 변경 사항이 포함 된 새 텍스트 파일 추가 또는 수정

3 단계-변경 로그를 업데이트하십시오.

dch -i

4 단계-패치 작성

dpkg-source --commit

5 단계-소스 패키지 작성

debuild -S 

6 단계-런치 패드에 업로드

cd ..
dput [myppa]/[foo_source.changes]

그러나 기존 패키지에 새 아이콘 파일 (.png 파일)을 추가해야합니다.

그래서에서 2 단계 - 바로 [foo는 패키지]로 복사

에서 4 단계 - 나는 다음과 같은 오류를 얻을 :

dpkg-source: error: cannot represent change to foo-package/foo-icon.png: binary file contents changed
dpkg-source: error: unrepresentable changes to source

5 단계로 이동하려고하면 위와 같은 추가 오류가 발생합니다.

dpkg-source: error: add foo-package/foo-icon.png in debian/source/include-binaries if you want to store the modified binary in the Debian tar-ball
...
dpkg-buildpackage -rfakeroot -d -us -uc -S failed

기존 PPA 패키지에 바이너리 아이콘 파일을 어떻게 추가합니까?


추가 정보

실행하여 :

debuild -S --source-option=--include-binaries

그러면 소스 패키지가 빌드되고 6 단계 가 가능합니다.

그러나 이것은 여전히 답이 아닙니다. 나중에 여전히 동일한 오류가 발생하기 때문에 추가 코드 변경을 수행 할 수 없기 때문에 ( 2 단계 ).

dpkg-source --commit --source-option=--include-binaries오류가 발생하기 때문에 내가 할 수있는 것처럼 보이지 않습니다 .

dpkg-source --commit --source-option=--include-binaries
dpkg-source: warning: --source-option=--include-binaries is not a valid option for Dpkg::Source::Package::V3::quilt
dpkg-source: error: cannot represent change to foo-package/foo-icon.png: binary file contents changed
dpkg-source: error: unrepresentable changes to source

답변:


8

제가 한:

apt-get source rhythmbox-plugin-llyrics
cd rhythmbox-plugin-llyrics-0.1/
echo '#Junk commit' >> llyrics/ChartlyricsParser.py
sed -i 's/Maintainer: fossfreedom <somewhere@xmail.com>/Maintainer: Andrew King (No comment) <newplace@ymail.com>/g' debian/control
sed -i 's/fossfreedom <somewhere@xmail.com>/Andrew King (No comment) <newplace@ymail.com>/g' debian/changelog
dpkg-source --commit

debuild -S -sa
mkdir debian/icons
cp ~/Pictures/awesome-cat.jpg ./debian/icons/
echo 'debian/icons/awesome-cat.jpg' > debian/source/include-binaries
cd ..
dpkg-source --include-binaries -b rhythmbox-plugin-llyrics-0.1
cd -
debuild -S

echo '#Junk commit' >> llyrics/ChartlyricsParser.py
dpkg-source --commit

#so now it's still allowing commits and in the deb-src...add it to install
echo 'debian/icons/* /usr/share/icons/hicolor/' >> debian/install
echo '' >> debian/install
debuild -S

#note that you should have the proper subfolders here e.g. 32x32/myicon.png or whatever
#also note that per packaging guidelines it should be one entry per file, not a wildcard

Launchpad fossfreedom을 올바르게 푸시하고 빌드했는지 확인


1
ek시, 친구! <fistbump> uuencoders를 바로 설정할 시간입니까? ;)
ish

5

스위치를 사용하여 이진 파일을 무시하려면 dpkg-source --commit 을 얻으십시오.extend-diff-ignore

여기에 또 다른 간단한 방법이 있습니다 : 기본적으로 dpkg-source 가 이해할 수없는 것 (즉, 이진 파일)을 무시하고 자체 비즈니스를 염두에 두도록 지시합니다.)

바이너리 파일은 처음에 첨가 한 후, 키를 사용하는 dpkg-source --commit으로 --extend-diff-ignore무시하도록 적절한 경로 / 파일명 (펄 정규식 포맷)와 함께, 스위치.

예를 들어, llyrics디렉토리 에 여러 PNG를 붙인 다음 일부 텍스트 파일을 수정 한다고 가정 합니다. 올바른 커밋 호출은 다음과 같습니다.

dpkg-source --commit --extend-diff-ignore="(^|/)(llyrics/.*\.png)$"

다음을 수행하십시오.

debuild -S --source-option=--include-binaries

PPA 업로드를 받으려면


rhythmbox-plugin-llyricsfossfreedom의 "놀이터"PPA의 패키지로 이것을 테스트 해 봅시다 :

  1. 소스 받기 : apt-get source rhythmbox-plugin-llyrics

  2. 텍스트 파일을 수정하고 PNG를 추가하십시오.

    $ CD 리듬 박스-플러그인-리릭 스 -0.1
    $ echo FORCE-A-DIFF >> llyrics / README 
    wget -Ollyrics / dancemonkeyboy.png \
       http://www.samrethsingh.com/wp-content/uploads/2009/02/untitled-image.png
    ...`llyrics / dancemonkeyboy.png '저장 됨 [243304/243304]
    
  3. 변경 로그에 추가하고 버전을 늘리십시오 dch -v 0.1-3ubuntu6~izx1

  4. 다음을 사용하여 PNG를 무시하면서 텍스트 변경 내용 커밋 :

    $ dpkg-source --commit --extend-diff-ignore = "(^ | /) (llyrics /.* \. png) $"
    dpkg-source : 정보 : 로컬 변경 사항이 감지되었습니다. 수정 된 파일은 다음과 같습니다.
    rhythmbox-plugin-llyrics-0.1 / llyrics / README
    원하는 패치 이름을 입력하십시오 : PPABinaryTest
    dpkg-source : info : 로컬 변경 사항이 새로운 패치로 기록되었습니다 : rhythmbox-plugin-llyrics-0.1 / debian / patches / PPABinaryTest
    
  5. 빌드 소스 / 변경 사항 :

    $ debuild -S --source-option =-include-binaries
    ...
    dpkg-source : info : 기존 ./rhythmbox-plugin-llyrics_0.1.orig.tar.gz를 사용하여 리듬 박스 플러그인 리듬 제작
    dpkg-source : 정보 : debian / source / include-binaries에 llyrics / dancemonkeyboy.png 추가
    ...
    

그리고 ... voila! ( 런치 패드 빌드 deb-~ 200k 크기 차이 ... )


2

이것은 단순히 파일을 추가하는 것보다 조금 어렵습니다.

먼저 새 소스 패키지에 포함 된 바이너리를 사용하여 .orig.tar.gz를 다시 빌드해야 하며, tar 및에서 모두 소프트웨어 버전 ( package_1.0.0.orig.tar.gz-> package_1.0.1.orig.tar.gz또는 기타) 을 증가시켜야 합니다 debian/changelog.

orig.tar.gz를 새 파일로 수정 한 후 (orig.tar.gz에 debian / 파일을 포함하지 마십시오), orig.tar에서와 debian/changelog같이 버전을 변경하여 항목 을 추가합니다 . gz.

그런 다음 소스 패키지 ( debuild -S)를 다시 빌드하고 새 소스 패키지를 PPA에 업로드하십시오. 새 소스 패키지는 PPA의 "이전"패키지를 덮어 씁니다.


채팅에서 :

@LordofTime ... wouldnt launchpad complain that its just received a different original source file


@fossfreedom not if you increment the version
new version, new source
@fossfreedom if you don't increment the version it'll explode
so you must increment the version
also, make individual debian packages for each release of ubuntu
and it'll not yell as much (it'll still enforce original version)
i.e.
"I am updating the NGINX PPA from 1.2.2 to 1.2.3. I need to get the 1.2.3 source, and work from that."
"I change the package, and the .orig.tar.gz, and upload the new package to Launchpad."
"If there are no build errors, then i'm done. If there is a build error, then I damned well better fix that error."
(then reupload with 1.2.3-2 or something)
but generally i do build testing in a staging repo

이 답변은 "버전을 늘리지 않으면 폭발 할 것"으로 편집하면 도움이 될 것입니다.
Jonas G. Drange

항상 Jonas 답변에 대한 편집을 제안하고 편집이 유용하다고 생각하는 이유를 설명 할 수 있으며 나와 다른 사람들이이를보고 고려할 수 있습니다.
토마스 워드

슬프게도 나는 데비안 패키징 시스템에 익숙하지 않기 때문에 그것이 왜 터지는 지 정확히 알 수 없습니다. 나 자신이 편집 한 내용은 고통스럽지 않습니다.
Jonas G. Drange 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.