Mevcut PPA pakeme nasıl ikili dosya eklerim


10

PPA paketimde değiştirilmiş veya yeni metin dosyaları eklemek yeterince basit:

Aşama 1:

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

2.Adım: Değişiklikleri içeren yeni metin dosyaları ekleyin veya değiştirin

3.Adım - Değişiklik günlüğünü güncelleyin:

dch -i

Adım 4 - Bir yama oluşturun

dpkg-source --commit

5.Adım - Bir kaynak paket oluşturun

debuild -S 

6.Adım - Launchpad'e yükleyin

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

Ancak, şimdi mevcut pakete yeni bir simge dosyası (.png dosyası) eklemem gerekiyor.

Yani 2. adımda - [foo paketine] kopyalandı

At 4. adımda - Ben aşağıdaki hataları alıyorum:

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

5. adıma geçmeye çalışırsam yukarıdakilere aşağıdaki ek hataları alıyorum:

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

Mevcut PPA paketine nasıl bir ikili simge dosyası ekleyebilirim?


Daha fazla bilgi

Koşarak:

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

Bu daha sonra kaynak paketin oluşturulmasına izin verir ve adım 6 mümkündür.

Ancak bu gerçekten cevap değil - çünkü daha sonra hala aynı hataları alıyorum çünkü daha fazla kod değişiklikleri ( adım 2 ) yapamam.

dpkg-source --commit --source-option=--include-binariesBu sadece hata veriyor çünkü yapabileceğim gibi görünmüyor :

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

Yanıtlar:


8

Ben ne yaptım:

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'ı doğru bir şekilde ittiğini ve oluşturduğunu doğruladı


1
Skeksi, kardeşim! <fistbump> Bu uuen kodlayıcıları düzleştirme zamanı geldi mi? ;)
ish

5

Sadece dpkg-source olsun - extend-diff-ignoreanahtar ile ikili dosyaları yok sayma komutu

İşte bunu yapmanın başka bir basit yolu: temelde dpkg-source'a anlayamadığını (yani ikili dosyalar) görmezden gelmesini ve kendi işine bakmasını söylersiniz ;)

İlk kez bir ikili dosya (lar) ekledikten sonra dpkg-source --commit, --extend-diff-ignoreanahtar, yok saymak için uygun yollar / dosya adları ile birlikte kullanmaktır (Perl regex formatı).

Örneğin, llyricsdizine bir grup PNG yapıştırdığınızı ve ardından bazı metin dosyalarını değiştirdiğinizi varsayalım . Doğru taahhüt çağrısı:

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

Şunu takip et:

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

PPA yüklemenizi almak için.


Bunu rhythmbox-plugin-llyricsfossfreedom'ın "oyun alanı" PPA'sındaki paketle test edelim :

  1. Kaynak alın: apt-get source rhythmbox-plugin-llyrics

  2. Bir metin dosyasını değiştirin ve bir PNG ekleyin:

    $ cd ritim kutusu-eklenti-llyrics-0.1
    $ echo FORCE-A-DIFF >> şarkı sözleri / README 
    $ wget -Ollyrics / dancemonkeyboy.png \
       http://www.samrethsingh.com/wp-content/uploads/2009/02/untitled-image.png
    ... llyrics / dancemonkeyboy.png 'kaydedildi [243304/243304]
    
  3. Değişiklik günlüğüne ekle ve sürümü artır dch -v 0.1-3ubuntu6~izx1

  4. PNG'yi aşağıdakilerle yoksayarken metin değişikliklerini uygulayın:

    $ dpkg-source --commit --extend-diff-ignore = "(^ | /) (llyrics /.* \. png) $"
    dpkg-source: info: yerel değişiklikler algılandı, değiştirilen dosyalar:
    Rhythmbox-eklentisi-llyrics 0.1 / llyrics / README'ye
    İstediğiniz yama adını girin: PPABinaryTest
    dpkg-source: info: yerel değişiklikler yeni bir yamada kaydedildi: rhythmbox-plugin-llyrics-0.1 / debian / patches / PPABinaryTest
    
  5. Derleme kaynağı / değişiklikler:

    $ debuild -S --source-option = - ikili dosyaları içerir
    ...
    dpkg-source: info: mevcut ./rhythmbox-plugin-llyrics_0.1.orig.tar.gz kullanarak ritim kutusu-eklenti-llyrics oluşturma
    dpkg-source: info: debian / source / include-binaries dosyasına llyrics / dancemonkeyboy.png ekleniyor
    ...
    

Ve ... işte! ( Launchpad tarafından oluşturulmuş deb - ~ 200k boyut farkına dikkat edin ... )


2

Bu sadece bir dosya eklemekten biraz daha zor.

İlk olarak, .orig.tar.gz dosyasını yeni kaynak paketine dahil edilen ikili dosyalar ile yeniden oluşturmanız gerekir ve muhtemelen hem tar hem de içindeki yazılım sürümünü ( package_1.0.0.orig.tar.gz-> package_1.0.1.orig.tar.gzveya bir şey) artırmanız gerekir debian/changelog.

Orig.tar.gz dosyasını yeni dosyalarla değiştirdikten sonra (orig.tar.gz dosyasına debian / files eklemeyin), daha sonra debian/changelogorig.tar'da yaptığınız gibi sürümü değiştirmek için bir giriş eklersiniz. gz.

Ardından kaynak paketi ( debuild -S) yeniden oluşturun ve yeni kaynak paketi PPA'ya yükleyin. Bu yeni kaynak paketi, PPA'daki "eski" paketin üzerine yazacaktır.


Sohbette:

@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

Belki de bu cevap sadece "patlayacak olan sürümü artırmazsanız" şeklinde düzenlenerek fayda sağlayabilir.
Jonas G. Drange

Her zaman Jonas yanıtına bir düzenleme önerebilir ve düzenlemenin neden yararlı olduğunu düşündüğünüzü yorumlayabilirsiniz ve ben ve diğerleri ona bakıp düşünebiliriz.
Thomas Ward

Ne yazık ki Debian paketleme sistemine aşina değilim, bu yüzden tam olarak neden havaya uçtu. Kendi başıma yaptığım bir düzenleme acı verici bir şekilde yetersiz olurdu.
Jonas G. Drange
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.