Làm cách nào để thêm tệp nhị phân vào gói PPA hiện tại của tôi


10

Thêm tệp văn bản sửa đổi hoặc mới vào gói PPA của tôi là đủ đơn giản:

Bước 1:

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

Bước 2: thêm hoặc sửa đổi các tệp văn bản mới có chứa các thay đổi

Bước 3 - cập nhật thay đổi:

dch -i

Bước 4 - tạo một bản vá

dpkg-source --commit

Bước 5 - tạo gói nguồn

debuild -S 

Bước 6 - tải lên launchpad

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

Tuy nhiên, bây giờ tôi cần thêm một tệp biểu tượng mới (tệp .png) vào gói hiện có.

Vì vậy, ở bước 2 - chỉ cần sao chép vào [foo-pack]

bước 4 - tôi nhận được các lỗi sau:

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

Nếu tôi cố gắng chuyển sang bước 5, tôi sẽ nhận được các lỗi bổ sung sau:

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

Bất kỳ ý tưởng nào làm cách nào để thêm tệp biểu tượng nhị phân vào gói PPA hiện tại của tôi?


Thêm thông tin

Bằng cách chạy:

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

Điều này sau đó cho phép gói nguồn được xây dựng và bước 6 là có thể.

Tuy nhiên đây không thực sự là câu trả lời - vì sau đó tôi không thể thực hiện thay đổi mã tiếp theo ( bước 2 ) vì tôi vẫn nhận được các lỗi tương tự.

Có vẻ như tôi không thể làm được dpkg-source --commit --source-option=--include-binariesvì điều này chỉ gây ra lỗi:

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

Câu trả lời:


8

Tôi đã làm gì:

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

Xác nhận rằng nó đẩy và xây dựng chính xác trên Launchpad fossfreedom


1
Skeksi, anh bạn! <fistbump> Thời gian để đặt các uuencoder đó thẳng? ;)
ish

5

Chỉ cần lấy dpkg-source --commit để bỏ qua các tệp nhị phân với công extend-diff-ignoretắc

Đây là một cách đơn giản hơn để làm điều đó: về cơ bản, bạn nói với nguồn dpkg bỏ qua những gì nó không thể hiểu được (nghĩa là các tệp nhị phân) và để ý đến việc kinh doanh của chính nó;)

Sau khi thêm (các) tệp nhị phân lần đầu tiên, khóa là sử dụng dpkg-source --commitvới công --extend-diff-ignoretắc, cùng với các đường dẫn / tên tệp thích hợp để bỏ qua (định dạng regl Perl).

Ví dụ: giả sử bạn dán một loạt các PNG trong llyricsthư mục và sau đó bạn sửa đổi một số tệp văn bản. Cuộc gọi cam kết chính xác là:

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

Làm theo điều đó với:

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

để tải lên PPA của bạn.


Hãy thử nghiệm điều này với rhythmbox-plugin-llyricsgói từ PPA "sân chơi" của fossfreedom:

  1. Lấy nguồn: apt-get source rhythmbox-plugin-llyrics

  2. Sửa đổi tệp văn bản và thêm PNG:

    $ cd nhịp hộp-plugin-llyrics-0,1
    $ echo FORCE-A-DIFF >> llyrics / README 
    $ wget -Ollyrics / dancemonkeyboy.png \
       http://www.samrethsingh.com/wp-content/uploads/2009/02/untitle-image.png
    ... `llyrics / dancemonkeyboy.png 'đã lưu [243304/243304]
    
  3. Thêm vào thay đổi và phiên bản gia tăng với dch -v 0.1-3ubuntu6~izx1

  4. Cam kết thay đổi văn bản trong khi bỏ qua PNG với:

    $ dpkg-source --commit --extend-diff-ign = "(^ | /) (llyrics /.* \. png) $"
    dpkg-source: thông tin: phát hiện thay đổi cục bộ, các tệp đã sửa đổi là:
    nhịp điệu-plugin-llyrics-0,1 / llyrics / README
    Nhập tên bản vá mong muốn: PPABinaryTest
    dpkg-source: thông tin: những thay đổi cục bộ đã được ghi lại trong một bản vá mới: nhịp điệu-plugin-llyrics-0.1 / debian / patch / PPABinaryTest
    
  5. Xây dựng nguồn / thay đổi:

    $ debuild -S --source-tùy chọn = - bao gồm nhị phân
    ...
    dpkg-source: thông tin: xây dựng nhịp điệu-plugin-llyrics bằng cách sử dụng ./rardibox-plugin-llyrics_0.1.orig.tar.gz
    dpkg-source: thông tin: thêm llyrics / dancemonkeyboy.png vào debian / source / include-binaries
    ...
    

Và Voila! ( Gỡ lỗi do Launchpad tạo - lưu ý chênh lệch kích thước ~ 200k ... )


2

Điều này khó hơn một chút so với việc chỉ thêm một tập tin.

Trước tiên, bạn sẽ cần xây dựng lại .orig.tar.gz với các nhị phân đi kèm trong gói nguồn mới và có thể sẽ cần tăng phiên bản phần mềm ( package_1.0.0.orig.tar.gz-> package_1.0.1.orig.tar.gzhoặc một cái gì đó) cả trong tar và trong debian/changelog.

Sau khi sửa đổi orig.tar.gz với các tệp mới (KHÔNG bao gồm debian / tệp trong orig.tar.gz), sau đó bạn sẽ thêm một debian/changelogmục nhập, thay đổi phiên bản để tăng nó như bạn đã làm với orig.tar. gz.

Sau đó, xây dựng lại gói nguồn ( debuild -S) và tải gói nguồn mới lên PPA. Gói nguồn mới đó sẽ ghi đè lên gói "cũ" trong PPA.


Từ trò chuyện:

@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

Có lẽ câu trả lời này sẽ có lợi khi được chỉnh sửa thành "nếu bạn không tăng phiên bản thì nó sẽ phát nổ"?
Jonas G. Drange

Bạn luôn có thể đề xuất một chỉnh sửa cho câu trả lời Jonas và nhận xét lý do tại sao bạn nghĩ rằng chỉnh sửa đó hữu ích và tôi và những người khác có thể xem xét và xem xét nó.
Thomas Ward

Đáng buồn là tôi không quen thuộc với hệ thống đóng gói Debian, vì vậy chính xác lý do tại sao nó nổ tung lại nằm ngoài tôi. Một chỉnh sửa được thực hiện bởi bản thân tôi sẽ rất khó khăn.
Jonas G. Drange
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.