Как я добавляю двоичный файл к своему существующему пакету PPA

Добавление измененных или новых текстовых файлов к моему пакету 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 - просто скопированный в [пакет нечто]

На шаге 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
10
задан 17 July 2012 в 23:33

3 ответа

Что я сделал:

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

0
ответ дан 17 July 2012 в 23:33

Просто заставьте dpkg-source --commit игнорировать двоичные файлы с помощью переключателя extend-diff-ignore

Вот еще один более простой способ сделать это: вы в основном говорите dpkg-source игнорировать то, что он не может понять (т. Е. Двоичные файлы), и заниматься своим делом;)

После добавления двоичных файлов в первый раз, ключ должен использовать [ 116] с переключателем --extend-diff-ignore вместе с соответствующими путями / именами файлов, которые следует игнорировать (формат регулярного выражения Perl).

Например, предположим, что вы вставили кучу PNG в каталог llyrics, а затем изменили некоторые текстовые файлы. Правильный вызов коммита:

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

. Затем выполните:

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

, чтобы получить загрузку PPA.


Давайте проверим это с помощью пакета rhythmbox-plugin-llyrics из PPA-приложения fossfreedom:

  1. Получить источник: apt-get source rhythmbox-plugin-llyrics

  2. [ 1129] Измените текстовый файл и добавьте PNG:

    $ cd rhythmbox-plugin-llyrics-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' saved [243304/243304]
    
  3. Добавить в список изменений и увеличить версию с помощью dch -v 0.1-3ubuntu6~izx1

  4. Фиксация текста изменяется при игнорировании PNG с:

    $ dpkg-source --commit --extend-diff-ignore="(^|/)(llyrics/.*\.png)$"
    dpkg-source: info: local changes detected, the modified files are:
    rhythmbox-plugin-llyrics-0.1/llyrics/README
    Enter the desired patch name: PPABinaryTest
    dpkg-source: info: local changes have been recorded in a new patch: rhythmbox-plugin-llyrics-0.1/debian/patches/PPABinaryTest
    
  5. Создание источника / изменения:

    $ debuild -S --source-option=--include-binaries
    ...
    dpkg-source: info: building rhythmbox-plugin-llyrics using existing ./rhythmbox-plugin-llyrics_0.1.orig.tar.gz
    dpkg-source: info: adding llyrics/dancemonkeyboy.png to debian/source/include-binaries
    ...
    

И ... вуаля! ( deb, созданный на Launchpad, обратите внимание на разницу в размере ~ 200k ... )

0
ответ дан 17 July 2012 в 23:33

Это немного сложнее, чем просто добавить файл.

Во-первых, вам нужно пересобрать файл .orig.tar.gz с включенными двоичными файлами в новый пакет с исходным кодом, и, вероятно, потребуется увеличить версию программного обеспечения (package_1.0.0.orig.tar.gz -> package_1.0.1.orig.tar.gz или что-то еще) в смолы, а в debian/changelog.

После изменения файла orig.tar.gz новыми файлами (НЕ включайте debian / files в файл orig.tar.gz), вы должны добавить запись debian/changelog, изменив версию, увеличивая ее, как вы это делали к orig.tar.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
0
ответ дан 17 July 2012 в 23:33

Другие вопросы по тегам:

Похожие вопросы: