J'ai la source d'un programme (tiré de cvs/svn/git/...) et j'aimerais construire un paquet Debian/Ubuntu pour cela. Le paquet est présent dans les référentiels, mais:
Quel est le moyen le plus simple de le faire? Je suis préoccupé par deux choses
Tout d’abord, la question du titre: En supposant que le répertoire debian existe déjà, placez-vous dans le répertoire source (le répertoire contenant le répertoire debian) et appelez dpkg-buildpackage. J'aime le lancer avec ces options:
dpkg-buildpackage -us -uc -nc
ce qui signifie ne pas signer le résultat et ne pas nettoyer.
Comment puis-je vérifier si j'ai répertorié correctement toutes les dépendances?
Obtenir les dépendances est un art noir. La méthode "officielle" consiste à vérifier que la compilation dépend du type de paquet construit avec uniquement le système de base, les paquetages "build-essential" et les dépendances de construction que vous avez spécifiées. Je ne connais pas de réponse générale pour les dépendances habituelles, allez-y simplement :)
Comment puis-je empêcher le système de mise à jour d'installer l'ancienne version dans le référentiel lors d'une mise à jour? Comment puis-je empêcher le système d’installer une version plus récente (lorsqu’il est sorti) et d’écraser mon package personnalisé?
Mes connaissances sont peut-être obsolètes à ce sujet, mais pour en aborder les deux: Utilisez dpkg --set-selections. En supposant que nullidentd soit le paquet sur lequel vous voulez rester, lancez en tant que root
echo 'nullidentd hold' | dpkg --set-selections
Alternativement, puisque vous construisez à partir des sources, vous pouvez utiliser un Epoch pour définir le numéro de version artificiellement haut et ne plus être dérangé. Pour utiliser une époque, ajoutez une nouvelle entrée au fichier debian/changelog et mettez un 99: devant le numéro de version. Étant donné mon exemple nullidentd, la première ligne de votre journal des modifications mis à jour se lirait comme suit:
nullidentd (99:1.0-4) unstable; urgency=low
le lien de Bernard est bon, surtout si vous devez créer vous-même le répertoire debian - les informations utiles --- sont également référence du développeur et page de ressources générale . lien d'Adam a également l'air bien mais je ne le connais pas bien.
Exemple de construction basée sur Ubuntu pour ccache:
Sudo apt-get update
Sudo apt-get build-dep ccache
apt-get -b source ccache
Sudo dpkg -i ccache*.deb
Plus de détails: http://blog.aplikacja.info/2011/11/building-packages-from-sources-in-debianubuntu/
Pour ce que vous voulez faire, vous voudrez probablement utiliser le diff source Debian, donc votre paquet est similaire au paquet officiel, mis à part la version amont utilisée. Vous pouvez télécharger le diff source à partir de packages.debian.org , ou bien l'obtenir avec le .dsc et l'archive source d'origine en utilisant "apt-get source".
Ensuite, décompressez votre nouvelle version de la source en amont, accédez à ce répertoire et appliquez le diff que vous avez téléchargé en faisant
zcat ~/downloaded.diff.gz | patch -p1
chmod +x debian/rules
Ensuite, apportez les modifications souhaitées pour compiler les options et construisez le paquet en faisant
dpkg-buildpackage -rfakeroot -us -uc
Je crois que this est le paquet Debian 'bible'.
Eh bien, c’est le guide du nouveau responsable Debian, il n’est donc pas applicable en grande partie, mais il couvre ce qui se passe où.
Si vous utilisez Ubuntu, consultez le projet pkgcreator: http://code.google.com/p/pkgcreator
Comment puis-je vérifier si j'ai répertorié correctement toutes les dépendances?
Le pbuilder
est un excellent outil pour vérifier les dépendances de construction et les dépendances en configurant un système de base propre dans un environnement chroot. En compilant le paquet dans pbuilder, vous pouvez facilement vérifier les dépendances de construction, et en le testant dans un environnement pbuilder, vous pouvez vérifier les dépendances.
Here est un tutoriel pour la construction d’un paquet Debian.
En gros, vous devez:
Je fais habituellement tout cela dans mon Makefile afin que je puisse simplement taper make pour cracher le binaire et le conditionner en une fois.
Si vous voulez un moyen rapide et sale d’installer les dépendances de construction, utilisez:
apt-get build-dep
Cela installe les dépendances. Pour cela, vous avez besoin de lignes sources dans votre fichier sources.list:
deb-src http://ftp.nl.debian.org/debian/ squeeze-updates main contrib non-free
Si vous effectuez un backport sur des paquets de testing à stable, veuillez noter que les dépendances ont peut-être changé. La commande apt-get build-deb installe des dépendances pour les paquetages sources de votre référentiel actuel.
Mais bien sûr, dpkg-buildpackage -us -uc vous montrera toutes les dépendances désinstallées.
Si vous voulez compiler plus souvent, utilisez cowbuilder.
apt-get install cowbuilder
Ensuite, créez une zone de construction:
Sudo DIST = squeeze Arch = AMD64 cowbuilder --create
Puis compilez un paquet source:
apt-get source cowsay
# do your magic editing
dpkg-source -b cowsay-3.03+dfsg1 # build the new source packages
cowbuilder --build cowsay_3.03+dfsg1-2.dsc # build the packages from source
Regardez où cowbuilder met le paquet résultant.
Bonne chance!