Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/davidvilla/ian
simple tool for lazy Debian package maintainers
https://github.com/davidvilla/ian
Last synced: 22 days ago
JSON representation
simple tool for lazy Debian package maintainers
- Host: GitHub
- URL: https://github.com/davidvilla/ian
- Owner: davidvilla
- Created: 2016-11-03T20:52:50.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-11-20T19:36:55.000Z (about 1 year ago)
- Last Synced: 2024-12-15T06:06:59.571Z (27 days ago)
- Language: Shell
- Size: 918 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGES.rst
Awesome Lists containing this project
README
===
ian
===*simple tool for lazy Debian package maintainers*
``ìan`` is essentially a frontend for several official Debian packaging tools.
at a glance
===========Compiling a simple package with **ian**::
$ apt source hello
$ cd hello-2.10
hello-2.10$ ian build -f
... a lot of stuff ...
hello-2.10$ ls -la ../hello_*
-rw-r--r-- 1 david david 1798 oct 31 16:02 ../hello_2.10-2_amd64.changes
-rw-r--r-- 1 david david 50462 oct 31 16:02 ../hello_2.10-2_amd64.deb
-rw-r--r-- 1 david david 8584 oct 31 16:02 ../hello_2.10-2.debian.tar.gz
-rw-r--r-- 1 david david 793 oct 31 16:02 ../hello_2.10-2.dsc
-rw-r--r-- 1 david david 730504 oct 31 16:02 ../hello_2.10.orig.tar.gz**NOTE:** Your user should be a "sudoer" to easly complete several ``ian`` tasks.
commands
========ian help [command]
------------------show help about the specified command.
if you just exec ``ian help``, you get a command summary::
ian summary
-----------prints information about the current directory Debian package::
hello-2.10$ ian summary
source: hello
upstream: 2.10
watch: 2.10
version: 2.10-2
orig: ../hello_2.10.orig.tar.gz
orig methods: uscan from-local
changes: ../hello_2.10-2_amd64.changes
binaries: hello
pkg vcs: noneian orig
--------create or download the .orig file.
**ian** chooses between these backends (all of them are commands too):
* orig-uscan: download latest upstream with ``uscan``
* orig-from-rule: execute the rule "get-orig" in the debian/rules
* orig-from-local: generates .orig from current directory filesian build
---------compiles Debian sources to generate binary packages.
* applies **quilt** patches if present
* automatically install missing build depends**ian** chooses between these backends:
* build-standard: compile with dpkg-buildpackage
* build-svn: compile with svn-buildpackagethere are several available options:
* **-b**: skip 'source' target. See 'dpkg-buildpackage -b'
* **-c**: run "ian clean" before "build"
* **-f**: force build
* **-i**: run "ian install" after "build"
* **-l**: creates orig with "ian orig-from-local"
* **-m**: merge ./debian with upstream .orig. bypassing directory contents
* **-s**: include full source. See 'dpkg-genchanges -sa'ian clean
---------removes all generated files and artifacts.
* reverts quilt patches if present
**ian** chooses between these backends:
* clean-common: remove deb, orig, changes, dsc, diff, upload, debian.tar.gz
* clean-svn: remove svn-buildpackage artifacts: tarballs/*, build-area/*
* clean-uscan: remove uscan downloaded files (available as "ian clean-uscan")ian install
-----------install all generated binary packages in the system.
ian release
-----------creates a new debian package release. It opens your editor asking for comments.
* **-i**: increment final version component (like 'dch -i')
* **-y**: do not ask for release comments
* **-m** message: release message for debian/changelog entryian release-date
----------------use a date based version format for the new package.
* **-i**: increment final version component (like 'dch -i')
* **-y**: do not ask for release comments
* **-m** message: release message for debian/changelog entryian upload
----------upload binary packages to the configured package repository.
* run ``debsign``
* configure and run ``dupload``ian remove
----------remove package from the configured package repository.
* **-y**: do not ask for confirmation
ian binary-contents
-------------------list files on generated binary packages.
ian ls
------list all generated files
ian create
----------very basic wizard to create a new debian package
ian lintian-fix
---------------automatically try to fix some common lintian issues (after a successful build).
Configuration
=============ian requires you define some environment variables. An example::
DEBFULLNAME="John Doe"
[email protected]
DEBSIGN_KEYID=D0FE7AFB
[email protected]/var/repoVariables ``DEBPOOL`` and ``DEBSIGN_KEYID`` are required only if you want upload you package to a remote Debian
repository. ``DEBSIGN_KEYID`` is your GPG key fingerprint (keyID).``ian`` can load these variables from a **~/.config/ian/config**.
hooks
=====ian may execute user provided shell functions at important events in the process. Allowed hooks are:
* ian-clean-hook
* ian-release-hook
* ian-build-start-hook
* ian-build-end-hook
* ian-install-hook
* ian-upload-start-hook
* ian-run ian-upload-end-hook
* ian-run ian-remove-hookYou may provide these functions in your **~/.config/ian** file or the by-project **.ian** file.
Compiling i386 packages in an amd64 computer
===========================================::
$ ian vagrant-gen-files
ian: generated: Vagrantfile playbook.yml$ ian vagrant-build
vagrant up --provision amd64
vagrant ssh amd64 -c "cd /vagrant/; ian build -m"
vagrant up --provision i386
vagrant ssh i386 -c "cd /vagrant/; ian build -bm"$ ian vagrant-clean
Sign and upload externally compiled packages
==============================You may upload binaries compiled in a different architecture (ie: RPi armhf) from your desktop computer. You need:
* The same ``debian`` directory and same ``changelog`` version
* Package compiled files in parent directory.::
foo/
mypackage_0.20201223.orig.tar.gz
mypackage_0.20201223-1_armhf.buildinfo
mypackage_0.20201223-1_armhf.changes
mypackage_0.20201223-1_armhf.deb
mypackage_0.20201223-1_armhf.upload
mypackage_0.20201223-1.debian.tar.gz
mypackage_0.20201223-1.dsc
mypackage_0.20201223.orig.tar.gz
mypackage/
debian/
Then, at your desktop (amd64), just upload indicating package architecture::foo/mypackage$ ian upload armhf
FAQ
===* **gpg stalls for a while, then says "Timeout"**
* gpg is asking for a password though gpg-agent. You may force tty asking adding ``pinentry-program /usr/bin/pinentry-tty`` to your ``~/.gnupg/gpg-agent.conf``. Also install package ``pinentry-tty``.
GPG setup
=========You need a GPG key to sign and upload compiled debian packages. That's a brief recipe to create and publish your key.
Create key::$ gpg --gen-key
Key related files (and revocation certificate) are saved at ``./gnupg``. You may export your private key for secure. Save both (private key and revocation certificate) in a private and secure place until your death::$ gpg --export-secret-keys -a > ~/private-key.asc
Your GPG public key must be uploaded to a key server::$ gpg --keyserver keys.openpgp.org --send-key
Similar software
================* https://github.com/Jimdo/buildtasks
* https://blog.codeship.com/using-docker-build-debian-packages/.. Local Variables:
.. coding: utf-8
.. mode: flyspell
.. ispell-local-dictionary: "american"
.. End: