View Issue Details

IDProjectCategoryView StatusLast Update
0006366Talerdeployment and operationspublic2021-08-24 16:23
ReporterChristian Grothoff Assigned ToChristian Grothoff  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product Versiongit (master) 
Target Version0.8Fixed in Version0.8 
Summary0006366: Build Taler exchange + GNUnet-Taler Debian package
DescriptionWe eventually want to create a Debian installer which provides a minimum Taler exchange setup (minimum in that there is no unnecessary code/service on the system, to minimize the security footprint). Our setup should pull packages from our own Debian archive (possibly in combination with the standard Debian archive), as we must be able to deploy urgent security updates even if Debian has not yet packaged them.

As a first step towards this setup, we need a Debian package for the Taler exchange. This would merely be a first package that our server would then 'apt install' by default. The package will evolve, just like the software will still evolve, for now the goal is to create a starting point for this evolution. The package is expected to simply include all of the binaries and shared libraries of the Taler exchange. Configuring/starting the service is out of scope.

The Taler exchange depends on various other packages, including GNUnet, libjansson and Postgres. Except for GNUnet, you should for now build the exchange it against existing Debian packages. For GNUnet, you should create a custom 'gnunet-taler' package (which contains GNUnet *for* Taler, not Taler itself), which would be largely a simplification (!) of the existing GNUnet packages for Debian. The main changes are:
- build with Postgres and libjansson support (so that the libraries needed by Taler are actually included)
- remove anything related to starting a GNUnet service, setting up SUID/SGID binaries or accounts or groups (gnunet/gnunetdns)
- remove MySQL (if present), remove libextractor (or possibly other dependencies Taler does not require => minification)

The result would be two source packages, one for "gnunet-taler" and one for "taler-exchange", which could build a recent version of the Taler exchange against a recent version of GNUnet (exact versions don't matter right now -- as long as they work together). The build rules for both source packages should then be in the exchange.git/ repo.

Once those two packages exist, setup the Debian archive "somewhere" on taler.net (yes, will need help from root) to host the source packages and binaries. Buildbot should be configured to build "nightly" package binaries from source.

Then, you modify the USB-installer to use our Debian archive and install the taler-exchange package by default.

Future steps (after this bug):
- package other Taler components to make it easier for people to deploy Taler instances
- improve packages to automatically perform key setup steps (database)
- improve USB installer to allow us to make configuration changes post-installer via Git
- improve Taler exchange to make configuration itself easier (hence we don't worry about
  making the package create a good configuration: this will still change)
- improve USB installer to install backup and monitoring logic, etc.
TagsNo tags attached.

Activities

buckE

2020-06-11 10:01

reporter   ~0016258

This looks like a number of tasks. But reading it a few times, it looks like the foundational task (ie, the first one to execute) is this:

```
you should create a custom 'gnunet-taler' [debian] package (which contains GNUnet *for* Taler, not Taler itself), which would be largely a simplification (!) of the existing GNUnet packages for Debian. The main changes are:
- build with Postgres and libjansson support (so that the libraries needed by Taler are actually included)
- remove anything related to starting a GNUnet service, setting up SUID/SGID binaries or accounts or groups (gnunet/gnunetdns)
- remove MySQL (if present), remove libextractor (or possibly other dependencies Taler does not require => minification)
```

If this sounds correct, these are my questions:

1 - This appears to be specifying a binary deliverable in the form of a debian package for gnunet-debian. So, gnunet-debian.deb. If that is not the deliverable for this specific task, please specify what the deliverable is.

2 - This binary .deb must be built for which Debian version? Stretch?

3 - Should I use the gnunet-debian.git codebase for this?

4 - Is that codebase documented properly to do the things you said? For example, is it clear in the README how to "build with Postgres and libjansson support," how to "remove anything related to starting a GNUnet service, setting up SUID/SGID binaries or accounts or groups," and how to "remove MySQL (if present), remove libextractor?"

4b - or at least does the README direct one to a place where this is specified?

4c - From where exactly will I get the list of "possibly other dependencies Taler does not require?" If this has not been determined previously, it sounds like something that can only be built in a later version of the gnunet-debian.deb package, because it will only be clear what Taler does not require after the Taler deb is built, after building this dependency. That's fine (and normal), but I want to be clear.

5 - Are any other changes to the gnunet-debian.git code and documentation, required for this task, not specified? Obviously we can't know everything, and we may have to quickly re-iterate on gnunet-debian.deb once we begin on taler.deb and learn that we need more/fewer things. But please don't hold back anything you can think of.

If all of these are clear and documented, I can begin. If not, then please have this dependency (gnunet-debian.git) prepared for this task before I begin. Then I can execute this task, and move on to the next step.

Unambiguously, the best procedure would be for the gnunet-debian and taler dev (or at least someone with some experience building taler on gnunet) to do a run-through of installing taler now, updating the README and making a quick howto/notes list including the above changes from defaults. A 2-hour run-through from an expert, properly documented, will save this n00b many hours of trial and error and frustratingly unclear error message decoding (including asking the dev for help understanding the error messaging, which will take much more than the 2 hours it would take to properly prepare the dependency).

Either way you choose I will proceed once I have the above info.

Christian Grothoff

2020-06-11 14:31

manager   ~0016259

1) Well, the gnunet-debian.deb is the final output, but of course we primarily care about the scripts/inputs to produce that .deb, as we will likely have to update it many times in the future. So a script to _produce_ the .deb would be the real deliverable. Always automate, and we're GNU, so we always care about source and not binaries.

2) I don't care which Debian version, stable, testing, unstable, doesn't really matter at this stage.

3) Whatever starting point makes your life easier is fine.

4a) Not sure, removing MySql/libextractor should be trivial -- remove the build-deps and GNUnet should build without those. But ultimately, if the documentation is insufficient / gives you grief, file more bugs and/or ask for help.

4b) Maybe. Mostly I was talking about whatever existing GNUnet debian package you may find. I do not know how well those are documented.

4c) MySql, libextractor are the 'main' ones that come to mind. Again, if the list is incomplete, we'll just iterate. It is fine if you have 'excessive' dependencies in the first iteration(s).

5) Not that I can think of.

Anyway, we _believe_ the current instructions at https://docs.taler.net/taler-exchange-manual.html#installation are adequate and current. If not, please do file bug reports explaining what you encountered and/or improve them if you can.

buckE

2020-06-16 06:31

reporter   ~0016274

Last edited: 2020-06-16 07:35

You're making my head spin. I'm back to not knowing what this is all about. I did everything I could to parse that huge text into deliverables, and again you tell me no (or at least, not "yes!") to every thing I said. I don't know how to begin to interpret this and convert it into tasks at this point.

Maybe when I have time to sit down and parse it all apart.

buckE

2020-06-22 06:27

reporter   ~0016333

Okay I've made some progress with buildbot and I'll start pulling this apart.

buckE

2020-06-29 05:24

reporter   ~0016375

I decided the only way to proceed is to try installing the exchange. I installed dependencies (including gnunet from apt) and I'm stuck on (4) under "Getting Started" in Exchange README:

`$ taler-exchange-keyup -m master.priv -o auditor.in`

This produces:

`The binary is not on the system (`$ find . -name 'taler-exchange-keyup'` produces no results).`

So, did the README skip a step? Perhaps compiling?

`$ cd exchange`
`~/exchange$ make`

Produces:

`make: *** No targets specified and no makefile found. Stop.`

What am I missing?

Christian Grothoff

2020-12-31 20:17

manager   ~0017278

Debian archive created with reprepro, instructions for users attached (ttn has gotten e-mail about integrating those into the main docs).
Developer manual release process was also updated.
What is missing is to check that the actual Debian package "works well" (untested).
deb-docs.txt (496 bytes)   
How to install official GNU Taler Debian packages
=================================================

Add Taler Systems key to your keyring:

# wget -O - https://taler.net/taler-systems.gpg.key | apt-sign add -

Append Taler Debian archive to your sources:

# echo "deb https://deb.taler.net/apt/debian sid main" >> /etc/apt/sources.list

Update and install:

# apt update
# apt install taler-exchange


Voila :-).


Note: the current packages really require sid and are equally experimental ;-).
deb-docs.txt (496 bytes)   

Christian Grothoff

2020-12-31 20:18

manager   ~0017279

Known issue with the package: it fails to create the different UIDs properly.

Christian Grothoff

2020-12-31 23:14

manager   ~0017288

Exchange package seems to work as well as I would expect at this stage. Closing bug.

Issue History

Date Modified Username Field Change
2020-06-08 11:40 Christian Grothoff New Issue
2020-06-08 11:40 Christian Grothoff Status new => assigned
2020-06-08 11:40 Christian Grothoff Assigned To => buckE
2020-06-11 10:01 buckE Note Added: 0016258
2020-06-11 14:31 Christian Grothoff Note Added: 0016259
2020-06-16 06:31 buckE Note Added: 0016274
2020-06-16 07:35 buckE Note Edited: 0016274
2020-06-22 06:27 buckE Note Added: 0016333
2020-06-29 05:24 buckE Note Added: 0016375
2020-06-29 05:24 buckE Assigned To buckE => Christian Grothoff
2020-07-05 00:06 Christian Grothoff Assigned To Christian Grothoff =>
2020-07-05 00:06 Christian Grothoff Status assigned => confirmed
2020-07-23 21:44 Christian Grothoff Assigned To => Christian Grothoff
2020-07-23 21:44 Christian Grothoff Status confirmed => assigned
2020-07-24 12:08 Christian Grothoff Target Version 0.9 => 0.9.1
2020-12-14 18:10 Christian Grothoff Target Version 0.9.1 => 0.9
2020-12-31 20:17 Christian Grothoff Note Added: 0017278
2020-12-31 20:17 Christian Grothoff File Added: deb-docs.txt
2020-12-31 20:18 Christian Grothoff Note Added: 0017279
2020-12-31 23:14 Christian Grothoff Note Added: 0017288
2020-12-31 23:14 Christian Grothoff Status assigned => resolved
2020-12-31 23:14 Christian Grothoff Resolution open => fixed
2020-12-31 23:14 Christian Grothoff Fixed in Version => 0.9
2021-07-30 13:57 Christian Grothoff Fixed in Version 0.9 => 0.8.1
2021-07-30 13:59 Christian Grothoff Target Version 0.9 => 0.8.1
2021-07-30 14:02 Christian Grothoff Fixed in Version 0.8.1 => 0.8
2021-07-30 14:02 Christian Grothoff Target Version 0.8.1 => 0.8
2021-08-24 16:23 Christian Grothoff Status resolved => closed