From 53e1b44d87c32676da33074925f776a9fc4dd7ff Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Tue, 2 Jul 2024 17:35:02 -0300 Subject: Feat: make the project more general --- docs/README.md | 13 ++++ docs/basics.md | 74 -------------------- docs/building.md | 36 ---------- docs/checking.md | 124 --------------------------------- docs/cross.md | 73 -------------------- docs/custom/leap.md | 147 ---------------------------------------- docs/custom/python.md | 52 -------------- docs/custom/ruby.md | 4 -- docs/env.md | 55 --------------- docs/index.md | 12 ---- docs/itp.md | 13 ---- docs/packaging/README.md | 1 + docs/packaging/basics.md | 74 ++++++++++++++++++++ docs/packaging/building.md | 36 ++++++++++ docs/packaging/checking.md | 124 +++++++++++++++++++++++++++++++++ docs/packaging/cross.md | 73 ++++++++++++++++++++ docs/packaging/custom/leap.md | 147 ++++++++++++++++++++++++++++++++++++++++ docs/packaging/custom/python.md | 52 ++++++++++++++ docs/packaging/custom/ruby.md | 4 ++ docs/packaging/env.md | 55 +++++++++++++++ docs/packaging/itp.md | 13 ++++ docs/packaging/references.md | 66 ++++++++++++++++++ docs/packaging/repositories.md | 27 ++++++++ docs/references.md | 66 ------------------ docs/repositories.md | 27 -------- 25 files changed, 685 insertions(+), 683 deletions(-) create mode 100644 docs/README.md delete mode 100644 docs/basics.md delete mode 100644 docs/building.md delete mode 100644 docs/checking.md delete mode 100644 docs/cross.md delete mode 100644 docs/custom/leap.md delete mode 100644 docs/custom/python.md delete mode 100644 docs/custom/ruby.md delete mode 100644 docs/env.md delete mode 100644 docs/index.md delete mode 100644 docs/itp.md create mode 100644 docs/packaging/README.md create mode 100644 docs/packaging/basics.md create mode 100644 docs/packaging/building.md create mode 100644 docs/packaging/checking.md create mode 100644 docs/packaging/cross.md create mode 100644 docs/packaging/custom/leap.md create mode 100644 docs/packaging/custom/python.md create mode 100644 docs/packaging/custom/ruby.md create mode 100644 docs/packaging/env.md create mode 100644 docs/packaging/itp.md create mode 100644 docs/packaging/references.md create mode 100644 docs/packaging/repositories.md delete mode 100644 docs/references.md delete mode 100644 docs/repositories.md (limited to 'docs') diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..c4cc5f0 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,13 @@ +# Debian Maintenance Effort! + +In the past, we used to be [heavy slackware +users](https://simplepkg.fluxo.info) when we just had a few boxes to manage. +Then we had to change our whole packaging paradigm when we switched to Debian. + +These notes are mainly references to the detailed Debian/Ubuntu documentations +we're using in the course of learning the intricacies of Debian maintenance, +including packaging. + +Grab this repository using + + git clone --recursive https://git.fluxo.info/debian diff --git a/docs/basics.md b/docs/basics.md deleted file mode 100644 index 6eafa91..0000000 --- a/docs/basics.md +++ /dev/null @@ -1,74 +0,0 @@ -# Basic packaging - -## Configuration files - -All the commands in this guide assumes that you're using [these configuration -files](https://git.fluxo.info/?p=rhatto/dotfiles/debian.git;a=summary). - -## Starting a new package - -We use the `packages/` folder from this repo to store sources: - - mkdir packages/$package - cd packages/$package - -## Getting the debianized source - -Using `dget`: - - dget $remote_dsc - cd $package* - -Using `apt-get`: - - apt-get source package - -## Checking the source - -See `checking.md`. - -## Extracting the source - -If needed, do this after your successfully verified the sources: - - dpkg-source -x *.dsc - -## Getting dependencies - -To get: - - apt-get build-dep package - -To remove: - - hydractl remove-dep package - -## Creating the `debian/` structure - -If the package wasn't debianized, proceed with - - if [ ! -d "debian" ]; then - dh_make -p ${package}_${version} --createorig - fi - -## Simple build - - dch -i - dpkg-buildpackage -rfakeroot -sa -k$KEY_ID - -## Creating a new debian source - - cd .. - dpkg-source -b $package* - debsign $package*.dsc - -## Building and signing - -To generate signatures, remove `-uc` and `-us` from `dpkg-buildpackage` (see -[Complete build](http://www.debian.org/doc/maint-guide/ch-build.pt-br.html#s-completebuild)): - - dpkg-buildpackage -rfakeroot - -To sign using an specific key: - - dpkg-buildpackage -rfakeroot -kKEY_ID diff --git a/docs/building.md b/docs/building.md deleted file mode 100644 index e29e742..0000000 --- a/docs/building.md +++ /dev/null @@ -1,36 +0,0 @@ -# Building - -## Standard build - - DIST=bookworm sudo -E cowbuilder --build $package*.dsc - -## Signing - -To sign both the `.dsc` and the `.changes` files: - - debsign $package*.changes - -## Uploading - -Simply run - - dupload *changes - -This assumes a `~/.dupload.conf` like the following: - - package config; - $default_host = "myremote"; - - $cfg{'myremote'} = { - fqdn => "myremote.example.org", - login => "user", - method => "scpb", - incoming => "/var/reprepro/incoming/", - # The dinstall on ftp-master sends emails itself - #dinstall_runs => 1, - }; - -It's also important that: - - 1. The host remote port is correctly defined at your `~/.ssh/config`. - 2. The user is in the `reprepro` group in the server. diff --git a/docs/checking.md b/docs/checking.md deleted file mode 100644 index ee3f32c..0000000 --- a/docs/checking.md +++ /dev/null @@ -1,124 +0,0 @@ -# Integrity checking - -## Debian Images - -See [Verifying authenticity of Debian CDs](https://www.debian.org/CD/verify). - -## Source packages - -This is the trick part. In theory, you could run just - - dscverify *.dsc - -Which would check if the signature was made for a key included in the `debian-keyring` package or if you -have a verification path with the signing key. - -In practice, it should always work for sources you download from the **same** Debian version you're running. -But sources you download from newer versions might not work, depending basically if the maintainer's key is -already on the `debian-keyring` you installed. - -### Using a newer debian-keyring package - -You might want to try a newer `debian-keyring` package (for testing or unstable), which we haven't tested -yet but can reduce a lot of complexity that follows. - -### Install manually debian-keyring somewhere - -If not, you might try to have a newer copy of the `debian-keyring` somewhere. We already provide one in the -a way for you to get the keyring directly from https://keyring.debian.org: - - make keyring - -We use `--no-default-keyring` to make sure `gpg` just looks for the key in the `debian-maintainers` keyring: - - gpg --no-default-keyring --keyring /path/to/debian/keyring/keyrings/debian-keyring.gpg --verify *.dsc - -You might also want to have the following on your `~/.devscripts` (line break just to keep formatting here): - - DSCVERIFY_KEYRINGS="/usr/share/keyrings/debian-keyring.gpg:/usr/share/keyrings/debian-maintainers.gpg: - /path/to/debian/keyring/keyrings/debian-keyring.gpg:/path/to/debian/keyring/keyrings/debian-maintainers.gpg" - -Or you can use the following alias: - - alias dscverify='dscverify --keyring /path/to/debian/keyring/keyrings/debian-keyring.gpg --keyring /path/to/debian/keyring/keyrings/debian-maintainers.gpg' - -### Manually getting the key - -Another option is to get the specific key: - - gpg --recv-keys 12345678 - -Either way, you have to have a criteria about how much trust you should give to the keyring or the pubkey -you just downloaded. The same goes for software you're porting to Debian and that you can't actually check -it's signature against `debian-keyring`. - -### Issues with dpkg-source - -Things get even trickier when you try to use `dpkg-source`. See [Debian Bug report logs - #852019 gpgv: unknown -type of key resource 'trustedkeys.kbx'](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=852019) -for details. - -Even if you merge both `keyring/keyrings/debian-keyring.gpg` `keyring/keyrings/debian-maintainers.gpg` -into some file like `keyring/keyrings/pubring.kbx`, symlink it as `keyring/keyrings/trustedkeys.gpg` -and point `GNUPGHOME` to this folder you'll still get a weird behavior: - - 0 $ dget http://ftp.de.debian.org/debian/pool/main/r/ruby-childprocess/ruby-childprocess_0.5.2-1.dsc - dget: retrieving http://ftp.de.debian.org/debian/pool/main/r/ruby-childprocess/ruby-childprocess_0.5.2-1.dsc - % Total % Received % Xferd Average Speed Time Time Time Current - Dload Upload Total Spent Left Speed - 100 1827 100 1827 0 0 2626 0 --:--:-- --:--:-- --:--:-- 4911 - dget: retrieving http://ftp.de.debian.org/debian/pool/main/r/ruby-childprocess/ruby-childprocess_0.5.2.orig.tar.gz - % Total % Received % Xferd Average Speed Time Time Time Current - Dload Upload Total Spent Left Speed - 100 26055 100 26055 0 0 20738 0 0:00:01 0:00:01 --:--:-- 27455 - dget: retrieving http://ftp.de.debian.org/debian/pool/main/r/ruby-childprocess/ruby-childprocess_0.5.2-1.debian.tar.xz - % Total % Received % Xferd Average Speed Time Time Time Current - Dload Upload Total Spent Left Speed - 100 2892 100 2892 0 0 4183 0 --:--:-- --:--:-- --:--:-- 8078 - ruby-childprocess_0.5.2-1.dsc: - Good signature found - validating ruby-childprocess_0.5.2.orig.tar.gz - validating ruby-childprocess_0.5.2-1.debian.tar.xz - All files validated successfully. - gpgv: Signature made Seg 28 Abr 2014 18:03:27 BRT using RSA key ID 39CD217A - gpgv: Impossível verificar assinatura: chave pública não encontrada - dpkg-source: warning: failed to verify signature on ./ruby-childprocess_0.5.2-1.dsc - dpkg-source: info: extracting ruby-childprocess in ruby-childprocess-0.5.2 - dpkg-source: info: unpacking ruby-childprocess_0.5.2.orig.tar.gz - dpkg-source: info: unpacking ruby-childprocess_0.5.2-1.debian.tar.xz - 0 $ - -What happened here is that `dscverify` honoured our custom configuration above while `dpkg-source` is still relying on -the one available in the `debian-keyring` package. - -Even if you remove the `debian-keyring` package, it will still fallback to your `$HOME/.gnupg/trustedkeys.gpg` which -you don't really want to fill with keys you actually haven't stablished a proper trust relationship. - -As currently `dpkg-source` doesn't honour `GNUPGHOME` (see TODO for bugreport), all we can do currently is call `dget` -and `dpkg-source` with - - HOME=/path/to/debian/keyring/ dpkg-source -x $package*dsc - HOME=/path/to/debian/keyring/ dget - -For this trick to work, you'll need to run - - make keyring - -Again, you might set two handy aliases for your shell: - - alias dpkg-source='HOME=/path/to/debian/keyring/keyrings/ dpkg-source' - alias dget='HOME=/path/to/debian/keyring/keyrings/ dget' - -Optionally, as a last touch, import your own key into this keyring: - - gpg --armor --export $KEYID | \ - gpg --no-default-keyring --keyring /path/to/debian/keyring/keyrings/.gnupg/trustedkeys.gpg --import - -Then you might be happy... for a while :P - -See also: - -* `dscverify(1)` manpage. -* [Debian Public Key Server](http://keyring.debian.org/) and it's [workflow](https://keyring.debian.org/keyring-workflow.html). -* [apt get - How to get apt-get source verification working? - Super User](https://superuser.com/questions/626810/how-to-get-apt-get-source-verification-working). -* [Debian. How can I securely get debian-archive-keyring, so that I can do an apt-get update? NO_PUBKEY - Server Fault](http://serverfault.com/questions/337278/debian-how-can-i-securely-get-debian-archive-keyring-so-that-i-can-do-an-apt-g/337283#337283). diff --git a/docs/cross.md b/docs/cross.md deleted file mode 100644 index 45255f7..0000000 --- a/docs/cross.md +++ /dev/null @@ -1,73 +0,0 @@ -# Crosscompilation - -## Basic references - -* [BuildingCrossCompilers - Debian Wiki](http://wiki.debian.org/BuildingCrossCompilers). -* [EmdebianToolchain - Debian Wiki](http://wiki.debian.org/EmdebianToolchain). -* [EmDebian/CrossDebootstrap - Debian Wiki](http://wiki.debian.org/EmDebian/CrossDebootstrap). -* [QemuUserEmulation - Debian Wiki](http://wiki.debian.org/QemuUserEmulation). -* [software development - How do I build a GCC 4.7 toolchain for cross-compiling? - Raspberry Pi Stack Exchange](http://raspberrypi.stackexchange.com/questions/1/how-do-i-build-a-gcc-4-7-toolchain-for-cross-compiling). -* [ARM cross-compiling howto - K's cluttered loft](http://www.ailis.de/~k/archives/19-arm-cross-compiling-howto.html). -* [Debian ARM Cross-compile - Manuals](http://wiki.micromint.com/index.php/Debian_ARM_Cross-compile). -* [How to cross-compile Git for ARM?](http://stackoverflow.com/questions/15516168/how-to-cross-compile-git-for-arm). -* [Allow to compile with Debian/Ubuntu ARM toolchain · Issue #34 · libopencm3/libopencm3](https://github.com/libopencm3/libopencm3/issues/34). - -## Basic configuration - - (0) [20130426 13:37:57] vagrant@vagrant-debian-wheezy:~ $ cat /etc/apt/sources.list.d/emdebian.list - # - # -- Emdebian cross toolchains - # - # deb http://www.emdebian.org/debian/ unstable main - # deb http://www.emdebian.org/debian/ testing main - deb http://www.emdebian.org/debian wheezy main - (0) [20130426 13:38:12] vagrant@vagrant-debian-wheezy:~ $ - - (0) [20130426 13:38:12] vagrant@vagrant-debian-wheezy:~ $ cat /etc/apt/sources.list.d/squeeze.list - deb http://http.debian.net/debian/ squeeze main contrib non-free - deb-src http://http.debian.net/debian/ squeeze main contrib non-free - (0) [20130426 13:38:44] vagrant@vagrant-debian-wheezy:~ $ - -## Exemplo: git - -Instalando as dependências do git: - - xapt -a armel -m asciidoc comerr-dev cvs cvsps docbook-xml docbook-xsl krb5-multidev libapr1 libaprutil1 libcurl4-gnutls-dev libdbd-sqlite3-perl libdbi-perl libexpat1-dev libgcrypt11-dev libgnutls-dev libgnutls-openssl27 libgnutlsxx27 libgpg-error-dev libidn11-dev libkadm5clnt-mit8 libkadm5srv-mit8 libkdb5-6 libkrb5-dev libldap2-dev libneon27-gnutls libnet-daemon-perl libp11-kit-dev libplrpc-perl librtmp-dev libssh2-1-dev libsvn-perl libsvn1 libtasn1-3-dev libxml2-utils libxslt1.1 libyaml-perl pkg-config sgml-data subversion xmlto xsltproc zlib1g-dev libssl-dev - -Tentando compilar com a [seguinte instrução](https://www.olimex.com/forum/index.php?topic=496.0): - - ./configure --build=arm --host=arm-linux-gnueabi - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi install prefix=$(pwd)/../destdir/ - -## Criando um toolchain - -Primeiro, como `root`, vamos criar o chroot: - - mkdir -p /var/chroot - debootstrap --verbose --arch armel --foreign wheezy /var/chroot/wheezy-armel http://ftp.debian.org/debian - cp /usr/bin/qemu-arm-static /var/chroot/wheezy-armel/usr/bin/ - DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ - LC_ALL=C LANGUAGE=C LANG=C chroot /var/chroot/wheezy-armel /debootstrap/debootstrap --second-stage - -Opcionalmente, dê permissão ao usuário comum: - - chown -R vagrant. /var/chroot/wheezy-armel - -Como usuário comum: - - cd /var/chroot/wheezy-armel - sb2-init -n -m emulate -c /usr/bin/qemu-arm wheezy-armel "arm-linux-gnueabi-gcc" - -## Referências - -Script [provision-chroot](https://git.fluxo.info/hydra/tree/share/hydractl/provision-chroot). -* [Set up sb2 with armel debootstrap - maemo.org - Talk](http://talk.maemo.org/showthread.php?t=83713). -* [Installing scratchbox 1 and 2 for ARM cross-compilation | Felipe Contreras](https://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/). -* [MobileRead Wiki - Boox M92 Development with Scratchbox2](http://wiki.mobileread.com/wiki/Boox_M92_Development_with_Scratchbox2). -* [Cross Compile environment using debootstrap and scratchbox2 | Rogerio Moraes](http://rogeriomoraes.com/wp/?p=41). -* [Using scratchbox2 and Ubuntu 11.10 | Hamilton Vera](https://hvera.wordpress.com/2011/12/07/using-scratchbox2/). -* [Setting up Scratchbox2 to build software for zubuntu « Executing Gummiworms](http://russelldavis.org/2010/10/20/setting-up-scratchbox2-to-build-software-for-zubuntu/). - -## Problemas encontrados - -* [debootstrap --second-stage fails because of /dev/ mapping](http://comments.gmane.org/gmane.comp.compilers.scratchbox.user/1420). diff --git a/docs/custom/leap.md b/docs/custom/leap.md deleted file mode 100644 index cd657c9..0000000 --- a/docs/custom/leap.md +++ /dev/null @@ -1,147 +0,0 @@ -# Example: packaging leap_cli and dependencies - -Upstream: https://leap.se/code/issues/6503 - -## Determine dependencies - -First, in a *fresh* vagrant box with *sid* and *testing* in the `sources.list`: - - sudo apt-get install rubygems gem2deb - sudo gem install leap_cli - -Then we get the dependencies and build all packages: - - dependencies=" `gem list | cut -d '(' -f 1` " - -Which currently gives us the following result: - -* activemodel -* activesupport -* base32 -* blockenspiel -* builder -* capistrano -* colored -* command_line_reporter -* gli -* gpgme -* highline -* i18n -* json -* json_pure -* leap_cli -* mini_portile -* minitest -* net-scp -* net-sftp -* net-ssh -* net-ssh-gateway -* paint -* tee -* thread_safe -* tzinfo -* versionomy -* ya2yaml - -Gem cleanup: - - sudo gem uninstall $dependencies - -Check existing dependencies: - - for item in $dependencies; do - package=ruby-"`echo $item | sed -e 's/_/-/'`" - packages="$packages $package" - done - - apt-get install --dry-run $packages - -Then: - -* Check for non-existing packages. -* Try different package names. -* Update your list of existing `$packages`. - -In this example we have the following `$already_ported` dependencies: - -* capistrano -* ruby-activemodel -* ruby-activesupport -* ruby-blockenspiel -* ruby-builder -* ruby-colored -* ruby-gpgme -* ruby-highline -* ruby-i18n -* ruby-json -* ruby-minitest -* ruby-net-scp -* ruby-net-sftp -* ruby-net-ssh -* ruby-net-ssh-gateway -* ruby-paint -* ruby-thread-safe -* ruby-tzinfo -* ruby-versionomy - -That means the following `$gems` needs to be packaged: - -* base32 -* command_line_reporter -* gli -* json_pure (we can just use ruby-json and ignore this dependency) -* leap_cli -* mini_portile -* tee -* ya2yaml - -In summary, we need to port the following `$new_packages`: - -* ruby-base32 -* ruby-command-line-reporter -* ruby-gli -* ruby-mini-portile -* ruby-tee -* ruby-ya2yaml -* ruby-leap-cli - -## Build remaining packages - - for gem in $gems; do - gem2deb $gem - done - -## Getting the source for the existing packages - - for package in $already_ported; do - apt-get -t jessie source --download-only $package - dpkg-source -x $package*dsc - done - -## Next steps - -* Fix `debian/control` and other `FIXME` on each package. -* Put `debian/` folder in a `debian` branch on each source. -* Fix [tests](https://wiki.debian.org/Teams/Ruby/Packaging/Tests). -* [Other best practices](https://wiki.debian.org/Teams/Ruby/RubyExtras/UpstreamDevelopers). -* [Review the code](https://manual.sarava.org/specs/code/). -* Automate building with pbuilder for `sid`. -* Fix lintian warnings. -* Upstream pull requests. -* Backport everything to `wheezy`. - -## Per-package tasks - -* ruby-faker: - * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765124 - * https://github.com/rails/rails/issues/13164 -* ruby-leap-cli: - * net-ssh compatibility: - * https://github.com/net-ssh/net-ssh/issues/145 - * https://github.com/capistrano/capistrano/issues/927 - * workflow: - - git checkout develop - git archive --prefix=leap-cli-1.5.6/ --format=tar HEAD | bzip2 > ../tarballs/leap-cli-1.5.6.tar.bz2 - git checkout debian - git-buildpackage --git-ignore-branch diff --git a/docs/custom/python.md b/docs/custom/python.md deleted file mode 100644 index 85dd263..0000000 --- a/docs/custom/python.md +++ /dev/null @@ -1,52 +0,0 @@ -# Python packaging - -## Old procedure - -Example: using [stdeb](http://github.com/astraw/stdeb) to build [http://kedpm.sf.net]. - - sudo apt-get install stdeb fakeroot - sudo apt-get install python-crypto libglade2-0 python-gtk2 python-glade2 - -File `~/.pydistutils.cfg`: - - [sdist_dsc] - force-buildsystem: False - -File `kedpm.cfg`: - - [DEFAULT] - Package: kedpm - Maintainer: User Name - Depends: python-crypto - -Getting the code: - - wget http://downloads.sourceforge.net/project/kedpm/kedpm/0.4.0/kedpm-0.4.0.tar.gz - -Packaging: - - py2dsc --extra-cfg-file kedpm.cfg kedpm-0.4.0.tar.gz - cd deb_dist/kedpm-0.4.0 - dpkg-buildpackage -rfakeroot -uc -us - cd .. - sudo dpkg -i kedpm_0.4.0-1_all.deb - -## References - -* [Python/Pybuild - Debian Wiki](https://wiki.debian.org/Python/Pybuild "Python/Pybuild - Debian Wiki") - * [Packaging Python Applications for Debian | Snakes on Callisto](https://jhermann.github.io/blog/python/devops/2020/03/28/dh_virtualenv_howto.html "Packaging Python Applications for Debian | Snakes on Callisto") - * [Debian -- Details of package python3-stdeb in bullseye](https://packages.debian.org/bullseye/python3-stdeb "Debian -- Details of package python3-stdeb in bullseye") - * [Creating configuration files in /etc in Debian packages - pi3g.com](https://pi3g.com/2020/04/05/creating-configuration-files-in-etc-in-debian-packages/ "Creating configuration files in /etc in Debian packages - pi3g.com") - * [PbuilderHowto - Ubuntu Wiki](https://wiki.ubuntu.com/PbuilderHowto "PbuilderHowto - Ubuntu Wiki") - * [PyBuilder — Tutorial](https://pybuilder.io/documentation/tutorial "PyBuilder — Tutorial") - * [Distributing Python Modules (Legacy version) — Python 3.10.4 documentation](https://docs.python.org/3/distutils/index.html "Distributing Python Modules (Legacy version) — Python 3.10.4 documentation") - * [Distributing Python Modules — Python 3.10.4 documentation](https://docs.python.org/3/distributing/index.html#distributing-index "Distributing Python Modules — Python 3.10.4 documentation") - * [What’s New In Python 3.10 — Python 3.10.4 documentation](https://docs.python.org/3/whatsnew/3.10.html#distutils-deprecated "What’s New In Python 3.10 — Python 3.10.4 documentation") - * [PEP 632 – Deprecate distutils module | peps.python.org](https://peps.python.org/pep-0632/ "PEP 632 – Deprecate distutils module | peps.python.org") - * [python - setup.py build doesn't work but develop does - Stack Overflow](https://stackoverflow.com/questions/38729475/setup-py-build-doesnt-work-but-develop-does "python - setup.py build doesn't work but develop does - Stack Overflow") - * [pybuild(1) — dh-python — Debian testing — Debian Manpages](https://manpages.debian.org/testing/dh-python/pybuild.1.en.html "pybuild(1) — dh-python — Debian testing — Debian Manpages") - * [Debian -- Details of package dh-python in bullseye-backports](https://packages.debian.org/bullseye-backports/dh-python "Debian -- Details of package dh-python in bullseye-backports") - * [#1001459 - dh-python: SetuptoolsDeprecationWarning: setup.py install is deprecated - Debian Bug report logs](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1001459 "#1001459 - dh-python: SetuptoolsDeprecationWarning: setup.py install is deprecated - Debian Bug report logs") - * [Bugs in package dh-python (version 5.20220403) in unstable -- Debian Bug report logs](https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=dh-python;dist=unstable "Bugs in package dh-python (version 5.20220403) in unstable -- Debian Bug report logs") - * [Debian Python Policy — Debian Python Documentation Project 1.0 documentation](https://debian-python.readthedocs.io/en/latest/debian-policy.html "Debian Python Policy — Debian Python Documentation Project 1.0 documentation") - * [dh-python/plugin_distutils.py at master · p1otr/dh-python](https://github.com/p1otr/dh-python/blob/master/dhpython/build/plugin_distutils.py "dh-python/plugin_distutils.py at master · p1otr/dh-python") diff --git a/docs/custom/ruby.md b/docs/custom/ruby.md deleted file mode 100644 index be79085..0000000 --- a/docs/custom/ruby.md +++ /dev/null @@ -1,4 +0,0 @@ -# Ruby packaging - -* See [this](https://wiki.debian.org/Teams/Ruby/Packaging). -* Example: [LEAP](/leap). diff --git a/docs/env.md b/docs/env.md deleted file mode 100644 index b8a1584..0000000 --- a/docs/env.md +++ /dev/null @@ -1,55 +0,0 @@ -# Environment - -## Build environment creation - -The following steps needs to be run just once for each arch and distro version. - -### Setup cowbuilder chroots - -This is the recommended method: - - sudo mkdir -p /var/cache/pbuilder/sid-amd64 - sudo -E cowbuilder --create - - sudo mkdir -p /var/cache/pbuilder/bookworm-amd64 - sudo -E DIST=bookworm cowbuilder --create - -### Setup pbuilder chroots - -If you want to setup directly using `pbuilder`: - - git-pbuilder create - DIST=bookworm git-pbuilder - -### Compatibility with git-buildpackage - -This is a workaround while we don't find a cleaner way to fix -[this issue](http://ramblingfoo.blogspot.com.br/2012/10/howto-sudo-cowbuilder-git-buildpackage.html) -with `git-buildpackage` not getting `~/.pbuilderrc` from the local user: - - ( cd /var/cache/pbuilder/ && sudo ln -s sid-amd64/base.cow ) - -## External repository integration - -If your package storage lives elsewhere, make a symlink like this: - - ( - mkdir /var/data/distros/debian/packages/build-area/bookworm-amd64 - cd /var/cache/pbuilder/bookworm-amd64 && \ - sudo rm -rf result && \ - sudo ln -s /var/data/distros/debian/packages/build-area/bookworm-amd64 result - ) - -## Environment maintenance - -These steps should be run once in a while to ensure we have an up to date packaging environment. - -### Pbuilder - - DIST=sid git-pbuilder update - DIST=bookworm git-pbuilder update --override-config - -### Cowbuilder - - DIST=sid sudo -E cowbuilder --update - DIST=bookworm sudo -E cowbuilder --update --override-config diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 6e416b6..0000000 --- a/docs/index.md +++ /dev/null @@ -1,12 +0,0 @@ -# Debian packaging effort! - -In the past, we used to be [heavy slackware -users](https://simplepkg.fluxo.info) when we just had a few boxes to manage. -Then we had to change our whole packaging paradigm when we switched to Debian. - -These notes are mainly references to the detailed Debian/Ubuntu documentations -we're using in the course of learning the intricacies of Debian packaging. - -Grab this repository using - - git clone --recursive https://git.fluxo.info/debian diff --git a/docs/itp.md b/docs/itp.md deleted file mode 100644 index a0692ee..0000000 --- a/docs/itp.md +++ /dev/null @@ -1,13 +0,0 @@ -# ITP - -## WNPP - -Before packaging anything, have a look at: - -* [WNPP](http://wnpp.debian.net). -* [Debian Git](http://anonscm.debian.org/gitweb/). - -## Software - -* [zathura-epub](https://git.pwmt.org/pwmt/zathura-epub). -* [bdsync](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=724344). diff --git a/docs/packaging/README.md b/docs/packaging/README.md new file mode 100644 index 0000000..174fb42 --- /dev/null +++ b/docs/packaging/README.md @@ -0,0 +1 @@ +# Debian Packaging Effort! diff --git a/docs/packaging/basics.md b/docs/packaging/basics.md new file mode 100644 index 0000000..6eafa91 --- /dev/null +++ b/docs/packaging/basics.md @@ -0,0 +1,74 @@ +# Basic packaging + +## Configuration files + +All the commands in this guide assumes that you're using [these configuration +files](https://git.fluxo.info/?p=rhatto/dotfiles/debian.git;a=summary). + +## Starting a new package + +We use the `packages/` folder from this repo to store sources: + + mkdir packages/$package + cd packages/$package + +## Getting the debianized source + +Using `dget`: + + dget $remote_dsc + cd $package* + +Using `apt-get`: + + apt-get source package + +## Checking the source + +See `checking.md`. + +## Extracting the source + +If needed, do this after your successfully verified the sources: + + dpkg-source -x *.dsc + +## Getting dependencies + +To get: + + apt-get build-dep package + +To remove: + + hydractl remove-dep package + +## Creating the `debian/` structure + +If the package wasn't debianized, proceed with + + if [ ! -d "debian" ]; then + dh_make -p ${package}_${version} --createorig + fi + +## Simple build + + dch -i + dpkg-buildpackage -rfakeroot -sa -k$KEY_ID + +## Creating a new debian source + + cd .. + dpkg-source -b $package* + debsign $package*.dsc + +## Building and signing + +To generate signatures, remove `-uc` and `-us` from `dpkg-buildpackage` (see +[Complete build](http://www.debian.org/doc/maint-guide/ch-build.pt-br.html#s-completebuild)): + + dpkg-buildpackage -rfakeroot + +To sign using an specific key: + + dpkg-buildpackage -rfakeroot -kKEY_ID diff --git a/docs/packaging/building.md b/docs/packaging/building.md new file mode 100644 index 0000000..e29e742 --- /dev/null +++ b/docs/packaging/building.md @@ -0,0 +1,36 @@ +# Building + +## Standard build + + DIST=bookworm sudo -E cowbuilder --build $package*.dsc + +## Signing + +To sign both the `.dsc` and the `.changes` files: + + debsign $package*.changes + +## Uploading + +Simply run + + dupload *changes + +This assumes a `~/.dupload.conf` like the following: + + package config; + $default_host = "myremote"; + + $cfg{'myremote'} = { + fqdn => "myremote.example.org", + login => "user", + method => "scpb", + incoming => "/var/reprepro/incoming/", + # The dinstall on ftp-master sends emails itself + #dinstall_runs => 1, + }; + +It's also important that: + + 1. The host remote port is correctly defined at your `~/.ssh/config`. + 2. The user is in the `reprepro` group in the server. diff --git a/docs/packaging/checking.md b/docs/packaging/checking.md new file mode 100644 index 0000000..ee3f32c --- /dev/null +++ b/docs/packaging/checking.md @@ -0,0 +1,124 @@ +# Integrity checking + +## Debian Images + +See [Verifying authenticity of Debian CDs](https://www.debian.org/CD/verify). + +## Source packages + +This is the trick part. In theory, you could run just + + dscverify *.dsc + +Which would check if the signature was made for a key included in the `debian-keyring` package or if you +have a verification path with the signing key. + +In practice, it should always work for sources you download from the **same** Debian version you're running. +But sources you download from newer versions might not work, depending basically if the maintainer's key is +already on the `debian-keyring` you installed. + +### Using a newer debian-keyring package + +You might want to try a newer `debian-keyring` package (for testing or unstable), which we haven't tested +yet but can reduce a lot of complexity that follows. + +### Install manually debian-keyring somewhere + +If not, you might try to have a newer copy of the `debian-keyring` somewhere. We already provide one in the +a way for you to get the keyring directly from https://keyring.debian.org: + + make keyring + +We use `--no-default-keyring` to make sure `gpg` just looks for the key in the `debian-maintainers` keyring: + + gpg --no-default-keyring --keyring /path/to/debian/keyring/keyrings/debian-keyring.gpg --verify *.dsc + +You might also want to have the following on your `~/.devscripts` (line break just to keep formatting here): + + DSCVERIFY_KEYRINGS="/usr/share/keyrings/debian-keyring.gpg:/usr/share/keyrings/debian-maintainers.gpg: + /path/to/debian/keyring/keyrings/debian-keyring.gpg:/path/to/debian/keyring/keyrings/debian-maintainers.gpg" + +Or you can use the following alias: + + alias dscverify='dscverify --keyring /path/to/debian/keyring/keyrings/debian-keyring.gpg --keyring /path/to/debian/keyring/keyrings/debian-maintainers.gpg' + +### Manually getting the key + +Another option is to get the specific key: + + gpg --recv-keys 12345678 + +Either way, you have to have a criteria about how much trust you should give to the keyring or the pubkey +you just downloaded. The same goes for software you're porting to Debian and that you can't actually check +it's signature against `debian-keyring`. + +### Issues with dpkg-source + +Things get even trickier when you try to use `dpkg-source`. See [Debian Bug report logs - #852019 gpgv: unknown +type of key resource 'trustedkeys.kbx'](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=852019) +for details. + +Even if you merge both `keyring/keyrings/debian-keyring.gpg` `keyring/keyrings/debian-maintainers.gpg` +into some file like `keyring/keyrings/pubring.kbx`, symlink it as `keyring/keyrings/trustedkeys.gpg` +and point `GNUPGHOME` to this folder you'll still get a weird behavior: + + 0 $ dget http://ftp.de.debian.org/debian/pool/main/r/ruby-childprocess/ruby-childprocess_0.5.2-1.dsc + dget: retrieving http://ftp.de.debian.org/debian/pool/main/r/ruby-childprocess/ruby-childprocess_0.5.2-1.dsc + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 100 1827 100 1827 0 0 2626 0 --:--:-- --:--:-- --:--:-- 4911 + dget: retrieving http://ftp.de.debian.org/debian/pool/main/r/ruby-childprocess/ruby-childprocess_0.5.2.orig.tar.gz + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 100 26055 100 26055 0 0 20738 0 0:00:01 0:00:01 --:--:-- 27455 + dget: retrieving http://ftp.de.debian.org/debian/pool/main/r/ruby-childprocess/ruby-childprocess_0.5.2-1.debian.tar.xz + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 100 2892 100 2892 0 0 4183 0 --:--:-- --:--:-- --:--:-- 8078 + ruby-childprocess_0.5.2-1.dsc: + Good signature found + validating ruby-childprocess_0.5.2.orig.tar.gz + validating ruby-childprocess_0.5.2-1.debian.tar.xz + All files validated successfully. + gpgv: Signature made Seg 28 Abr 2014 18:03:27 BRT using RSA key ID 39CD217A + gpgv: Impossível verificar assinatura: chave pública não encontrada + dpkg-source: warning: failed to verify signature on ./ruby-childprocess_0.5.2-1.dsc + dpkg-source: info: extracting ruby-childprocess in ruby-childprocess-0.5.2 + dpkg-source: info: unpacking ruby-childprocess_0.5.2.orig.tar.gz + dpkg-source: info: unpacking ruby-childprocess_0.5.2-1.debian.tar.xz + 0 $ + +What happened here is that `dscverify` honoured our custom configuration above while `dpkg-source` is still relying on +the one available in the `debian-keyring` package. + +Even if you remove the `debian-keyring` package, it will still fallback to your `$HOME/.gnupg/trustedkeys.gpg` which +you don't really want to fill with keys you actually haven't stablished a proper trust relationship. + +As currently `dpkg-source` doesn't honour `GNUPGHOME` (see TODO for bugreport), all we can do currently is call `dget` +and `dpkg-source` with + + HOME=/path/to/debian/keyring/ dpkg-source -x $package*dsc + HOME=/path/to/debian/keyring/ dget + +For this trick to work, you'll need to run + + make keyring + +Again, you might set two handy aliases for your shell: + + alias dpkg-source='HOME=/path/to/debian/keyring/keyrings/ dpkg-source' + alias dget='HOME=/path/to/debian/keyring/keyrings/ dget' + +Optionally, as a last touch, import your own key into this keyring: + + gpg --armor --export $KEYID | \ + gpg --no-default-keyring --keyring /path/to/debian/keyring/keyrings/.gnupg/trustedkeys.gpg --import + +Then you might be happy... for a while :P + +See also: + +* `dscverify(1)` manpage. +* [Debian Public Key Server](http://keyring.debian.org/) and it's [workflow](https://keyring.debian.org/keyring-workflow.html). +* [apt get - How to get apt-get source verification working? - Super User](https://superuser.com/questions/626810/how-to-get-apt-get-source-verification-working). +* [Debian. How can I securely get debian-archive-keyring, so that I can do an apt-get update? NO_PUBKEY - Server Fault](http://serverfault.com/questions/337278/debian-how-can-i-securely-get-debian-archive-keyring-so-that-i-can-do-an-apt-g/337283#337283). diff --git a/docs/packaging/cross.md b/docs/packaging/cross.md new file mode 100644 index 0000000..45255f7 --- /dev/null +++ b/docs/packaging/cross.md @@ -0,0 +1,73 @@ +# Crosscompilation + +## Basic references + +* [BuildingCrossCompilers - Debian Wiki](http://wiki.debian.org/BuildingCrossCompilers). +* [EmdebianToolchain - Debian Wiki](http://wiki.debian.org/EmdebianToolchain). +* [EmDebian/CrossDebootstrap - Debian Wiki](http://wiki.debian.org/EmDebian/CrossDebootstrap). +* [QemuUserEmulation - Debian Wiki](http://wiki.debian.org/QemuUserEmulation). +* [software development - How do I build a GCC 4.7 toolchain for cross-compiling? - Raspberry Pi Stack Exchange](http://raspberrypi.stackexchange.com/questions/1/how-do-i-build-a-gcc-4-7-toolchain-for-cross-compiling). +* [ARM cross-compiling howto - K's cluttered loft](http://www.ailis.de/~k/archives/19-arm-cross-compiling-howto.html). +* [Debian ARM Cross-compile - Manuals](http://wiki.micromint.com/index.php/Debian_ARM_Cross-compile). +* [How to cross-compile Git for ARM?](http://stackoverflow.com/questions/15516168/how-to-cross-compile-git-for-arm). +* [Allow to compile with Debian/Ubuntu ARM toolchain · Issue #34 · libopencm3/libopencm3](https://github.com/libopencm3/libopencm3/issues/34). + +## Basic configuration + + (0) [20130426 13:37:57] vagrant@vagrant-debian-wheezy:~ $ cat /etc/apt/sources.list.d/emdebian.list + # + # -- Emdebian cross toolchains + # + # deb http://www.emdebian.org/debian/ unstable main + # deb http://www.emdebian.org/debian/ testing main + deb http://www.emdebian.org/debian wheezy main + (0) [20130426 13:38:12] vagrant@vagrant-debian-wheezy:~ $ + + (0) [20130426 13:38:12] vagrant@vagrant-debian-wheezy:~ $ cat /etc/apt/sources.list.d/squeeze.list + deb http://http.debian.net/debian/ squeeze main contrib non-free + deb-src http://http.debian.net/debian/ squeeze main contrib non-free + (0) [20130426 13:38:44] vagrant@vagrant-debian-wheezy:~ $ + +## Exemplo: git + +Instalando as dependências do git: + + xapt -a armel -m asciidoc comerr-dev cvs cvsps docbook-xml docbook-xsl krb5-multidev libapr1 libaprutil1 libcurl4-gnutls-dev libdbd-sqlite3-perl libdbi-perl libexpat1-dev libgcrypt11-dev libgnutls-dev libgnutls-openssl27 libgnutlsxx27 libgpg-error-dev libidn11-dev libkadm5clnt-mit8 libkadm5srv-mit8 libkdb5-6 libkrb5-dev libldap2-dev libneon27-gnutls libnet-daemon-perl libp11-kit-dev libplrpc-perl librtmp-dev libssh2-1-dev libsvn-perl libsvn1 libtasn1-3-dev libxml2-utils libxslt1.1 libyaml-perl pkg-config sgml-data subversion xmlto xsltproc zlib1g-dev libssl-dev + +Tentando compilar com a [seguinte instrução](https://www.olimex.com/forum/index.php?topic=496.0): + + ./configure --build=arm --host=arm-linux-gnueabi + make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi install prefix=$(pwd)/../destdir/ + +## Criando um toolchain + +Primeiro, como `root`, vamos criar o chroot: + + mkdir -p /var/chroot + debootstrap --verbose --arch armel --foreign wheezy /var/chroot/wheezy-armel http://ftp.debian.org/debian + cp /usr/bin/qemu-arm-static /var/chroot/wheezy-armel/usr/bin/ + DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ + LC_ALL=C LANGUAGE=C LANG=C chroot /var/chroot/wheezy-armel /debootstrap/debootstrap --second-stage + +Opcionalmente, dê permissão ao usuário comum: + + chown -R vagrant. /var/chroot/wheezy-armel + +Como usuário comum: + + cd /var/chroot/wheezy-armel + sb2-init -n -m emulate -c /usr/bin/qemu-arm wheezy-armel "arm-linux-gnueabi-gcc" + +## Referências + +Script [provision-chroot](https://git.fluxo.info/hydra/tree/share/hydractl/provision-chroot). +* [Set up sb2 with armel debootstrap - maemo.org - Talk](http://talk.maemo.org/showthread.php?t=83713). +* [Installing scratchbox 1 and 2 for ARM cross-compilation | Felipe Contreras](https://felipec.wordpress.com/2009/06/07/installing-scratchbox-1-and-2-for-arm-cross-compilation/). +* [MobileRead Wiki - Boox M92 Development with Scratchbox2](http://wiki.mobileread.com/wiki/Boox_M92_Development_with_Scratchbox2). +* [Cross Compile environment using debootstrap and scratchbox2 | Rogerio Moraes](http://rogeriomoraes.com/wp/?p=41). +* [Using scratchbox2 and Ubuntu 11.10 | Hamilton Vera](https://hvera.wordpress.com/2011/12/07/using-scratchbox2/). +* [Setting up Scratchbox2 to build software for zubuntu « Executing Gummiworms](http://russelldavis.org/2010/10/20/setting-up-scratchbox2-to-build-software-for-zubuntu/). + +## Problemas encontrados + +* [debootstrap --second-stage fails because of /dev/ mapping](http://comments.gmane.org/gmane.comp.compilers.scratchbox.user/1420). diff --git a/docs/packaging/custom/leap.md b/docs/packaging/custom/leap.md new file mode 100644 index 0000000..cd657c9 --- /dev/null +++ b/docs/packaging/custom/leap.md @@ -0,0 +1,147 @@ +# Example: packaging leap_cli and dependencies + +Upstream: https://leap.se/code/issues/6503 + +## Determine dependencies + +First, in a *fresh* vagrant box with *sid* and *testing* in the `sources.list`: + + sudo apt-get install rubygems gem2deb + sudo gem install leap_cli + +Then we get the dependencies and build all packages: + + dependencies=" `gem list | cut -d '(' -f 1` " + +Which currently gives us the following result: + +* activemodel +* activesupport +* base32 +* blockenspiel +* builder +* capistrano +* colored +* command_line_reporter +* gli +* gpgme +* highline +* i18n +* json +* json_pure +* leap_cli +* mini_portile +* minitest +* net-scp +* net-sftp +* net-ssh +* net-ssh-gateway +* paint +* tee +* thread_safe +* tzinfo +* versionomy +* ya2yaml + +Gem cleanup: + + sudo gem uninstall $dependencies + +Check existing dependencies: + + for item in $dependencies; do + package=ruby-"`echo $item | sed -e 's/_/-/'`" + packages="$packages $package" + done + + apt-get install --dry-run $packages + +Then: + +* Check for non-existing packages. +* Try different package names. +* Update your list of existing `$packages`. + +In this example we have the following `$already_ported` dependencies: + +* capistrano +* ruby-activemodel +* ruby-activesupport +* ruby-blockenspiel +* ruby-builder +* ruby-colored +* ruby-gpgme +* ruby-highline +* ruby-i18n +* ruby-json +* ruby-minitest +* ruby-net-scp +* ruby-net-sftp +* ruby-net-ssh +* ruby-net-ssh-gateway +* ruby-paint +* ruby-thread-safe +* ruby-tzinfo +* ruby-versionomy + +That means the following `$gems` needs to be packaged: + +* base32 +* command_line_reporter +* gli +* json_pure (we can just use ruby-json and ignore this dependency) +* leap_cli +* mini_portile +* tee +* ya2yaml + +In summary, we need to port the following `$new_packages`: + +* ruby-base32 +* ruby-command-line-reporter +* ruby-gli +* ruby-mini-portile +* ruby-tee +* ruby-ya2yaml +* ruby-leap-cli + +## Build remaining packages + + for gem in $gems; do + gem2deb $gem + done + +## Getting the source for the existing packages + + for package in $already_ported; do + apt-get -t jessie source --download-only $package + dpkg-source -x $package*dsc + done + +## Next steps + +* Fix `debian/control` and other `FIXME` on each package. +* Put `debian/` folder in a `debian` branch on each source. +* Fix [tests](https://wiki.debian.org/Teams/Ruby/Packaging/Tests). +* [Other best practices](https://wiki.debian.org/Teams/Ruby/RubyExtras/UpstreamDevelopers). +* [Review the code](https://manual.sarava.org/specs/code/). +* Automate building with pbuilder for `sid`. +* Fix lintian warnings. +* Upstream pull requests. +* Backport everything to `wheezy`. + +## Per-package tasks + +* ruby-faker: + * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765124 + * https://github.com/rails/rails/issues/13164 +* ruby-leap-cli: + * net-ssh compatibility: + * https://github.com/net-ssh/net-ssh/issues/145 + * https://github.com/capistrano/capistrano/issues/927 + * workflow: + + git checkout develop + git archive --prefix=leap-cli-1.5.6/ --format=tar HEAD | bzip2 > ../tarballs/leap-cli-1.5.6.tar.bz2 + git checkout debian + git-buildpackage --git-ignore-branch diff --git a/docs/packaging/custom/python.md b/docs/packaging/custom/python.md new file mode 100644 index 0000000..85dd263 --- /dev/null +++ b/docs/packaging/custom/python.md @@ -0,0 +1,52 @@ +# Python packaging + +## Old procedure + +Example: using [stdeb](http://github.com/astraw/stdeb) to build [http://kedpm.sf.net]. + + sudo apt-get install stdeb fakeroot + sudo apt-get install python-crypto libglade2-0 python-gtk2 python-glade2 + +File `~/.pydistutils.cfg`: + + [sdist_dsc] + force-buildsystem: False + +File `kedpm.cfg`: + + [DEFAULT] + Package: kedpm + Maintainer: User Name + Depends: python-crypto + +Getting the code: + + wget http://downloads.sourceforge.net/project/kedpm/kedpm/0.4.0/kedpm-0.4.0.tar.gz + +Packaging: + + py2dsc --extra-cfg-file kedpm.cfg kedpm-0.4.0.tar.gz + cd deb_dist/kedpm-0.4.0 + dpkg-buildpackage -rfakeroot -uc -us + cd .. + sudo dpkg -i kedpm_0.4.0-1_all.deb + +## References + +* [Python/Pybuild - Debian Wiki](https://wiki.debian.org/Python/Pybuild "Python/Pybuild - Debian Wiki") + * [Packaging Python Applications for Debian | Snakes on Callisto](https://jhermann.github.io/blog/python/devops/2020/03/28/dh_virtualenv_howto.html "Packaging Python Applications for Debian | Snakes on Callisto") + * [Debian -- Details of package python3-stdeb in bullseye](https://packages.debian.org/bullseye/python3-stdeb "Debian -- Details of package python3-stdeb in bullseye") + * [Creating configuration files in /etc in Debian packages - pi3g.com](https://pi3g.com/2020/04/05/creating-configuration-files-in-etc-in-debian-packages/ "Creating configuration files in /etc in Debian packages - pi3g.com") + * [PbuilderHowto - Ubuntu Wiki](https://wiki.ubuntu.com/PbuilderHowto "PbuilderHowto - Ubuntu Wiki") + * [PyBuilder — Tutorial](https://pybuilder.io/documentation/tutorial "PyBuilder — Tutorial") + * [Distributing Python Modules (Legacy version) — Python 3.10.4 documentation](https://docs.python.org/3/distutils/index.html "Distributing Python Modules (Legacy version) — Python 3.10.4 documentation") + * [Distributing Python Modules — Python 3.10.4 documentation](https://docs.python.org/3/distributing/index.html#distributing-index "Distributing Python Modules — Python 3.10.4 documentation") + * [What’s New In Python 3.10 — Python 3.10.4 documentation](https://docs.python.org/3/whatsnew/3.10.html#distutils-deprecated "What’s New In Python 3.10 — Python 3.10.4 documentation") + * [PEP 632 – Deprecate distutils module | peps.python.org](https://peps.python.org/pep-0632/ "PEP 632 – Deprecate distutils module | peps.python.org") + * [python - setup.py build doesn't work but develop does - Stack Overflow](https://stackoverflow.com/questions/38729475/setup-py-build-doesnt-work-but-develop-does "python - setup.py build doesn't work but develop does - Stack Overflow") + * [pybuild(1) — dh-python — Debian testing — Debian Manpages](https://manpages.debian.org/testing/dh-python/pybuild.1.en.html "pybuild(1) — dh-python — Debian testing — Debian Manpages") + * [Debian -- Details of package dh-python in bullseye-backports](https://packages.debian.org/bullseye-backports/dh-python "Debian -- Details of package dh-python in bullseye-backports") + * [#1001459 - dh-python: SetuptoolsDeprecationWarning: setup.py install is deprecated - Debian Bug report logs](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1001459 "#1001459 - dh-python: SetuptoolsDeprecationWarning: setup.py install is deprecated - Debian Bug report logs") + * [Bugs in package dh-python (version 5.20220403) in unstable -- Debian Bug report logs](https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=dh-python;dist=unstable "Bugs in package dh-python (version 5.20220403) in unstable -- Debian Bug report logs") + * [Debian Python Policy — Debian Python Documentation Project 1.0 documentation](https://debian-python.readthedocs.io/en/latest/debian-policy.html "Debian Python Policy — Debian Python Documentation Project 1.0 documentation") + * [dh-python/plugin_distutils.py at master · p1otr/dh-python](https://github.com/p1otr/dh-python/blob/master/dhpython/build/plugin_distutils.py "dh-python/plugin_distutils.py at master · p1otr/dh-python") diff --git a/docs/packaging/custom/ruby.md b/docs/packaging/custom/ruby.md new file mode 100644 index 0000000..be79085 --- /dev/null +++ b/docs/packaging/custom/ruby.md @@ -0,0 +1,4 @@ +# Ruby packaging + +* See [this](https://wiki.debian.org/Teams/Ruby/Packaging). +* Example: [LEAP](/leap). diff --git a/docs/packaging/env.md b/docs/packaging/env.md new file mode 100644 index 0000000..b8a1584 --- /dev/null +++ b/docs/packaging/env.md @@ -0,0 +1,55 @@ +# Environment + +## Build environment creation + +The following steps needs to be run just once for each arch and distro version. + +### Setup cowbuilder chroots + +This is the recommended method: + + sudo mkdir -p /var/cache/pbuilder/sid-amd64 + sudo -E cowbuilder --create + + sudo mkdir -p /var/cache/pbuilder/bookworm-amd64 + sudo -E DIST=bookworm cowbuilder --create + +### Setup pbuilder chroots + +If you want to setup directly using `pbuilder`: + + git-pbuilder create + DIST=bookworm git-pbuilder + +### Compatibility with git-buildpackage + +This is a workaround while we don't find a cleaner way to fix +[this issue](http://ramblingfoo.blogspot.com.br/2012/10/howto-sudo-cowbuilder-git-buildpackage.html) +with `git-buildpackage` not getting `~/.pbuilderrc` from the local user: + + ( cd /var/cache/pbuilder/ && sudo ln -s sid-amd64/base.cow ) + +## External repository integration + +If your package storage lives elsewhere, make a symlink like this: + + ( + mkdir /var/data/distros/debian/packages/build-area/bookworm-amd64 + cd /var/cache/pbuilder/bookworm-amd64 && \ + sudo rm -rf result && \ + sudo ln -s /var/data/distros/debian/packages/build-area/bookworm-amd64 result + ) + +## Environment maintenance + +These steps should be run once in a while to ensure we have an up to date packaging environment. + +### Pbuilder + + DIST=sid git-pbuilder update + DIST=bookworm git-pbuilder update --override-config + +### Cowbuilder + + DIST=sid sudo -E cowbuilder --update + DIST=bookworm sudo -E cowbuilder --update --override-config diff --git a/docs/packaging/itp.md b/docs/packaging/itp.md new file mode 100644 index 0000000..a0692ee --- /dev/null +++ b/docs/packaging/itp.md @@ -0,0 +1,13 @@ +# ITP + +## WNPP + +Before packaging anything, have a look at: + +* [WNPP](http://wnpp.debian.net). +* [Debian Git](http://anonscm.debian.org/gitweb/). + +## Software + +* [zathura-epub](https://git.pwmt.org/pwmt/zathura-epub). +* [bdsync](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=724344). diff --git a/docs/packaging/references.md b/docs/packaging/references.md new file mode 100644 index 0000000..0080468 --- /dev/null +++ b/docs/packaging/references.md @@ -0,0 +1,66 @@ +# References + +## General + +* [Debian New Maintainers' Guide](https://www.debian.org/doc/manuals/maint-guide/). +* [Debian Developer's Reference](https://www.debian.org/doc/manuals/developers-reference/) +* [Debian Policy Manual](https://www.debian.org/doc/debian-policy/). +* [Guide for Debian Maintainers](https://www.debian.org/doc/manuals/debmake-doc/index.en.html) +* [Overview — Ubuntu Packaging Guide](http://packaging.ubuntu.com/html/). +* [Debugging Debian package installations](http://mdcc.cx/debian/debugging_debian_package_installations.html). +* [Quick Debian development guide - anarcat](https://anarc.at/software/debian-development/ "Quick Debian development guide - anarcat") + +## Pbuilder and cowbuilder + +* [PbuilderTricks](https://wiki.debian.org/PbuilderTricks). +* [cowbuilder](https://wiki.debian.org/cowbuilder). + +## Sbuild + +* [sbuild - Debian Wiki](https://wiki.debian.org/sbuild#Delete_a_chroot "sbuild - Debian Wiki") + * [sbuild-debian-developer-setup(1) — sbuild — Debian unstable — Debian Manpages](https://manpages.debian.org/unstable/sbuild/sbuild-debian-developer-setup.1 "sbuild-debian-developer-setup(1) — sbuild — Debian unstable — Debian Manpages") + +## Backporting + +* [Backporting Debian packages with pbuilder](http://www.tolaris.com/2009/03/31/backporting-debian-packages-with-pbuilder/). +* [Using pbuilder to backport Debian packages](http://edseek.com/~jasonb/articles/pbuilder_backports/). +* [BuildingFormalBackports - Debian Wiki](https://wiki.debian.org/BuildingFormalBackports#Building_multi-dependencies_packages). + +## Packaging with git + +* [Co-maintaining a Debian package with Git and git-buildpackage | workaround.org](https://workaround.org/debian-git-comaintenance). +* [PackagingWithGit - Debian Wiki](https://wiki.debian.org/PackagingWithGit). +* [Building Debian Packages with git-buildpackage](http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html). + +## Linting + +* [Lintian Tag](https://lintian.debian.org/tags "Lintian Tag") list. + +## Piuparts + +* [piuparts - Debian Wiki](https://wiki.debian.org/piuparts) +* [piuparts.debian.org/doc/README.txt](https://piuparts.debian.org/doc/README.txt) + +## Security and Hardening + +* [Hardening - Debian Wiki](https://wiki.debian.org/Hardening) +* [ServiceSandboxing - Debian Wiki](https://wiki.debian.org/ServiceSandboxing) + +## Account handling + +* [AccountHandlingInMaintainerScripts - Debian Wiki](https://wiki.debian.org/AccountHandlingInMaintainerScripts "AccountHandlingInMaintainerScripts - Debian Wiki") + * [How Debian package should create user accounts? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/47880/how-debian-package-should-create-user-accounts "How Debian package should create user accounts? - Unix & Linux Stack Exchange") + +## Systemd + +* [Teams/pkg-systemd/Packaging - Debian Wiki](https://wiki.debian.org/Teams/pkg-systemd/Packaging "Teams/pkg-systemd/Packaging - Debian Wiki") + * [How can I Debian-package a python application with a systemd unit using stdeb3/py2dsc and dpkg-buildpackage? - Stack Overflow](https://stackoverflow.com/questions/64345965/how-can-i-debian-package-a-python-application-with-a-systemd-unit-using-stdeb3-p "How can I Debian-package a python application with a systemd unit using stdeb3/py2dsc and dpkg-buildpackage? - Stack Overflow") + * [packaging - How to package a systemd service? - Ask Ubuntu](https://askubuntu.com/questions/746094/how-to-package-a-systemd-service "packaging - How to package a systemd service? - Ask Ubuntu") + * [configuration - How do I override or configure systemd services? - Ask Ubuntu](https://askubuntu.com/questions/659267/how-do-i-override-or-configure-systemd-services#659268 "configuration - How do I override or configure systemd services? - Ask Ubuntu") + +## SysUser + +* [Teams/Dpkg/Spec/SysUser - Debian Wiki](https://wiki.debian.org/Teams/Dpkg/Spec/SysUser) +* [dh_sysuser(1) — dh-sysuser — Debian testing — Debian Manpages](https://manpages.debian.org/testing/dh-sysuser/dh_sysuser.1.en.html) +* [Debian / dh-sysuser · GitLab](https://salsa.debian.org/debian/dh-sysuser) +* [dh-sysuser. Yesterday I’ve discovered a dh-sysuser… | by George Shuklin | OpsOps | Medium](https://medium.com/opsops/dh-sysuser-6bd3e3d623dd) diff --git a/docs/packaging/repositories.md b/docs/packaging/repositories.md new file mode 100644 index 0000000..d6cf48e --- /dev/null +++ b/docs/packaging/repositories.md @@ -0,0 +1,27 @@ +# Repositories + +## Documentation + +* [DebianRepository/Setup - Debian Wiki](https://wiki.debian.org/DebianRepository/Setup). +* [Debian Repository HOWTO (Obsolete Documentation)](https://www.debian.org/doc/manuals/repository-howto/repository-howto). +* [HowToSetupADebianRepository](https://wiki.debian.org/HowToSetupADebianRepository). +* [Setting up your own APT repository with upload support](http://www.debian-administration.org/article/286/Setting_up_your_own_APT_repository_with_upload_support). + +## Reprepro + +* [puppet-reprepro](https://git.fluxo.info/puppet-reprepro). +Alguns links sobre como instalar e usar o reprepro: +* [reprepro](http://mirrorer.alioth.debian.org/). +* [HowToSetupADebianRepository](http://wiki.debian.org/HowToSetupADebianRepository). +* [Setting up your own APT repository with upload support](http://www.debian-administration.org/article/Setting_up_your_own_APT_repository_with_upload_support). +* [Setting up a basic Debian repository with reprepro](https://noc.sidux.com/fll/wiki/reprepro). +* [Setting up and managing an APT repository with reprepro](http://www.jejik.com/articles/2006/09/setting_up_and_managing_an_apt_repository_with_reprepro/). + +Removing a package from the repository: + + su reprepro -c "reprepro -b /var/reprepro remove squeeze kedpm" + +## Other + +* [aptly - Debian repository management tool](https://www.aptly.info/) ([package](https://packages.debian.org/stretch/aptly)). +* [debify: Tool for building simple Debian repositories](https://github.com/spotify/debify). diff --git a/docs/references.md b/docs/references.md deleted file mode 100644 index 0080468..0000000 --- a/docs/references.md +++ /dev/null @@ -1,66 +0,0 @@ -# References - -## General - -* [Debian New Maintainers' Guide](https://www.debian.org/doc/manuals/maint-guide/). -* [Debian Developer's Reference](https://www.debian.org/doc/manuals/developers-reference/) -* [Debian Policy Manual](https://www.debian.org/doc/debian-policy/). -* [Guide for Debian Maintainers](https://www.debian.org/doc/manuals/debmake-doc/index.en.html) -* [Overview — Ubuntu Packaging Guide](http://packaging.ubuntu.com/html/). -* [Debugging Debian package installations](http://mdcc.cx/debian/debugging_debian_package_installations.html). -* [Quick Debian development guide - anarcat](https://anarc.at/software/debian-development/ "Quick Debian development guide - anarcat") - -## Pbuilder and cowbuilder - -* [PbuilderTricks](https://wiki.debian.org/PbuilderTricks). -* [cowbuilder](https://wiki.debian.org/cowbuilder). - -## Sbuild - -* [sbuild - Debian Wiki](https://wiki.debian.org/sbuild#Delete_a_chroot "sbuild - Debian Wiki") - * [sbuild-debian-developer-setup(1) — sbuild — Debian unstable — Debian Manpages](https://manpages.debian.org/unstable/sbuild/sbuild-debian-developer-setup.1 "sbuild-debian-developer-setup(1) — sbuild — Debian unstable — Debian Manpages") - -## Backporting - -* [Backporting Debian packages with pbuilder](http://www.tolaris.com/2009/03/31/backporting-debian-packages-with-pbuilder/). -* [Using pbuilder to backport Debian packages](http://edseek.com/~jasonb/articles/pbuilder_backports/). -* [BuildingFormalBackports - Debian Wiki](https://wiki.debian.org/BuildingFormalBackports#Building_multi-dependencies_packages). - -## Packaging with git - -* [Co-maintaining a Debian package with Git and git-buildpackage | workaround.org](https://workaround.org/debian-git-comaintenance). -* [PackagingWithGit - Debian Wiki](https://wiki.debian.org/PackagingWithGit). -* [Building Debian Packages with git-buildpackage](http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html). - -## Linting - -* [Lintian Tag](https://lintian.debian.org/tags "Lintian Tag") list. - -## Piuparts - -* [piuparts - Debian Wiki](https://wiki.debian.org/piuparts) -* [piuparts.debian.org/doc/README.txt](https://piuparts.debian.org/doc/README.txt) - -## Security and Hardening - -* [Hardening - Debian Wiki](https://wiki.debian.org/Hardening) -* [ServiceSandboxing - Debian Wiki](https://wiki.debian.org/ServiceSandboxing) - -## Account handling - -* [AccountHandlingInMaintainerScripts - Debian Wiki](https://wiki.debian.org/AccountHandlingInMaintainerScripts "AccountHandlingInMaintainerScripts - Debian Wiki") - * [How Debian package should create user accounts? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/47880/how-debian-package-should-create-user-accounts "How Debian package should create user accounts? - Unix & Linux Stack Exchange") - -## Systemd - -* [Teams/pkg-systemd/Packaging - Debian Wiki](https://wiki.debian.org/Teams/pkg-systemd/Packaging "Teams/pkg-systemd/Packaging - Debian Wiki") - * [How can I Debian-package a python application with a systemd unit using stdeb3/py2dsc and dpkg-buildpackage? - Stack Overflow](https://stackoverflow.com/questions/64345965/how-can-i-debian-package-a-python-application-with-a-systemd-unit-using-stdeb3-p "How can I Debian-package a python application with a systemd unit using stdeb3/py2dsc and dpkg-buildpackage? - Stack Overflow") - * [packaging - How to package a systemd service? - Ask Ubuntu](https://askubuntu.com/questions/746094/how-to-package-a-systemd-service "packaging - How to package a systemd service? - Ask Ubuntu") - * [configuration - How do I override or configure systemd services? - Ask Ubuntu](https://askubuntu.com/questions/659267/how-do-i-override-or-configure-systemd-services#659268 "configuration - How do I override or configure systemd services? - Ask Ubuntu") - -## SysUser - -* [Teams/Dpkg/Spec/SysUser - Debian Wiki](https://wiki.debian.org/Teams/Dpkg/Spec/SysUser) -* [dh_sysuser(1) — dh-sysuser — Debian testing — Debian Manpages](https://manpages.debian.org/testing/dh-sysuser/dh_sysuser.1.en.html) -* [Debian / dh-sysuser · GitLab](https://salsa.debian.org/debian/dh-sysuser) -* [dh-sysuser. Yesterday I’ve discovered a dh-sysuser… | by George Shuklin | OpsOps | Medium](https://medium.com/opsops/dh-sysuser-6bd3e3d623dd) diff --git a/docs/repositories.md b/docs/repositories.md deleted file mode 100644 index d6cf48e..0000000 --- a/docs/repositories.md +++ /dev/null @@ -1,27 +0,0 @@ -# Repositories - -## Documentation - -* [DebianRepository/Setup - Debian Wiki](https://wiki.debian.org/DebianRepository/Setup). -* [Debian Repository HOWTO (Obsolete Documentation)](https://www.debian.org/doc/manuals/repository-howto/repository-howto). -* [HowToSetupADebianRepository](https://wiki.debian.org/HowToSetupADebianRepository). -* [Setting up your own APT repository with upload support](http://www.debian-administration.org/article/286/Setting_up_your_own_APT_repository_with_upload_support). - -## Reprepro - -* [puppet-reprepro](https://git.fluxo.info/puppet-reprepro). -Alguns links sobre como instalar e usar o reprepro: -* [reprepro](http://mirrorer.alioth.debian.org/). -* [HowToSetupADebianRepository](http://wiki.debian.org/HowToSetupADebianRepository). -* [Setting up your own APT repository with upload support](http://www.debian-administration.org/article/Setting_up_your_own_APT_repository_with_upload_support). -* [Setting up a basic Debian repository with reprepro](https://noc.sidux.com/fll/wiki/reprepro). -* [Setting up and managing an APT repository with reprepro](http://www.jejik.com/articles/2006/09/setting_up_and_managing_an_apt_repository_with_reprepro/). - -Removing a package from the repository: - - su reprepro -c "reprepro -b /var/reprepro remove squeeze kedpm" - -## Other - -* [aptly - Debian repository management tool](https://www.aptly.info/) ([package](https://packages.debian.org/stretch/aptly)). -* [debify: Tool for building simple Debian repositories](https://github.com/spotify/debify). -- cgit v1.2.3