Ajouter des fichiers texte modifiés ou nouveaux à mon paquet PPA est assez simple:
étape 1:
apt-get source [foo-package]
cd [foo-package]
Étape 2: ajouter ou modifier de nouveaux fichiers texte contenant les modifications
Étape 3 - mettez à jour le journal des modifications:
dch -i
étape 4 - créer un patch
dpkg-source --commit
Étape 5 - créer un paquet source
debuild -S
Étape 6 - télécharger sur le tableau de bord
cd ..
dput [myppa]/[foo_source.changes]
Cependant, je dois maintenant ajouter un nouveau fichier d'icône (un fichier .png) au paquet existant.
Donc, à étape 2 - vient de copier dans le [foo-package]
À étape 4 - Je reçois les erreurs suivantes:
dpkg-source: error: cannot represent change to foo-package/foo-icon.png: binary file contents changed
dpkg-source: error: unrepresentable changes to source
Si j'essaie de passer à l'étape 5, j'obtiens les erreurs supplémentaires suivantes:
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
Des idées, comment puis-je ajouter un fichier d'icône binaire à mon paquet PPA existant?
Plus d'information
En exécutant:
debuild -S --source-option=--include-binaries
Cela permet ensuite de construire le paquet source et étape 6 est possible.
Cependant, ce n’est pas vraiment la solution - parce que par la suite, je ne peux plus faire d’autres modifications de code (étape 2) car je reçois toujours les mêmes erreurs.
Il ne semble pas que je puisse faire dpkg-source --commit --source-option=--include-binaries
parce que cela ne donne que des erreurs:
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
Ce que j'ai fait:
apt-get source rhythmbox-plugin-llyrics
cd rhythmbox-plugin-llyrics-0.1/
echo '#Junk commit' >> llyrics/ChartlyricsParser.py
sed -i 's/Maintainer: fossfreedom <[email protected]>/Maintainer: Andrew King (No comment) <[email protected]>/g' debian/control
sed -i 's/fossfreedom <[email protected]>/Andrew King (No comment) <[email protected]>/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
Confirmé qu'il pousse correctement et s'appuie sur Launchpad fossfreedomedom
extend-diff-ignore
Voici une autre façon plus simple de le faire: vous dites fondamentalement à dpkg-source d’ignorer ce qu’il ne peut pas comprendre (c’est-à-dire les fichiers binaires), sa propre entreprise;)
Après avoir ajouté un ou plusieurs fichiers binaires pour la première fois, la clé consiste à utiliser dpkg-source --commit
avec le commutateur --extend-diff-ignore
, ainsi que les chemins/noms de fichiers à ignorer (format Perl regex).
Par exemple, supposons que vous colliez une série de fichiers PNG dans le répertoire llyrics
, puis modifiez certains fichiers texte. L'appel de validation correct est:
dpkg-source --commit --extend-diff-ignore="(^|/)(llyrics/.*\.png)$"
Suivez cela avec:
debuild -S --source-option=--include-binaries
pour obtenir votre téléchargement PPA.
Testons cela avec le package rhythmbox-plugin-llyrics
du PPA "terrain de jeu" de fossfreedom:
Obtenir la source: apt-get source rhythmbox-plugin-llyrics
Modifier un fichier texte et ajouter un fichier 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 'sauvé [243304/243304]
Ajouter au changelog et incrémenter la version avec dch -v 0.1-3ubuntu6~izx1
Le texte de validation change en ignorant le fichier PNG avec:
$ dpkg-source --commit --extend-diff-ignore = "(^ | /) (llyrics/.* \. png) $" dpkg-source: info: modifications locales détectées, fichiers modifiés are: rhythmbox-plugin-llyrics-0.1/llyrics/README Entrez le nom du patch souhaité: PPABinaryTest dpkg-source: info: les modifications locales ont été enregistrées dans un nouveau patch : rhythmbox-plugin-llyrics-0.1/debian/patches/PPABinaryTest
Construire la source/modifications:
$ debuild -S --source-option = - include-binaries ... dpkg-source: info: construction de rhythmbox-plugin-llyrics à l'aide de l'existant ./rhythmbox -plugin-llyrics_0.1.orig.tar.gz dpkg-source: info: ajout de llyrics/dancemonkeyboy.png à debian/source/include-binaries ...
Et ... voila! ( deb construit par Launchpad - notez la différence de taille d'environ 200k ... )
C'est un peu plus difficile que de simplement ajouter un fichier.
Tout d’abord, vous devrez reconstruire le fichier .orig.tar.gz avec les fichiers binaires inclus dans le nouveau paquet source et probablement devoir incrémenter la version du logiciel (package_1.0.0.orig.tar.gz
-> package_1.0.1.orig.tar.gz
ou quelque chose d’autre). dans le goudron et dans le debian/changelog
.
Après avoir modifié le fichier orig.tar.gz avec les nouveaux fichiers (n'incluez pas debian/fichiers dans le fichier orig.tar.gz), vous devez ajouter une entrée debian/changelog
, en modifiant la version pour l'incrémenter comme vous l'avez fait auparavant. l'orig.tar.gz.
Reconstruisez ensuite le package source (debuild -S
) et téléchargez le nouveau package source sur le PPA. Ce nouveau paquet source remplacera le "plus ancien" dans le PPA.
Du chat:
@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