# Create Debian package via Github workflow

**URL:** <https://forum.livepeer.org/t/create-debian-package-via-github-workflow/2057>\
**Category:** Uncategorized\
**Created:** [April 28, 2023, 12:14am UTC](https://forum.livepeer.org/t/create-debian-package-via-github-workflow/2057 "2023-04-28T00:14:15Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Strykar](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.livepeer.org/strykar/32/758_2.png) [@Strykar](https://forum.livepeer.org/u/Strykar)\
**Post date:** [April 28, 2023, 12:14am UTC](https://forum.livepeer.org/t/create-debian-package-via-github-workflow/2057/1 "2023-04-28T00:14:15Z")

</div>

Posting this here after discussing with @hunter so some Livepeer devops folks could provide feedback before I create a PR.  
The use-case is:  
a) There are many Orchestrators who may not be sysadmins, I know of at least one who will `sudo cp` the `livepeer` binary into `/usr/local/bin/`, not good news for a daemon listening on a port which isn’t firewalled. A signed .deb package solves this, most O’s are running Ubuntu / Deb.  
b) There is existing tooling to convert a .deb package to almost every existing Linux distribution.

[go-livepeer/build.yaml at master · livepeer/go-livepeer · GitHub](https://github.com/livepeer/go-livepeer/blob/master/.github/workflows/build.yaml) git pulls and builds the binaries and creates archives of them by $ARCH and [go-livepeer/release.yaml at master · livepeer/go-livepeer · GitHub](https://github.com/livepeer/go-livepeer/blob/master/.github/workflows/release.yaml) signs and ships a new release when run

There’s three approaches, I’d prefer to get some feedback before spending the time to create them:

1. The Debian handbook suggests creating a debian directory in the root of your code structure with every thing needed to package under it. It’d look something like  
livepeer/  
├── debian/  
│ ├── control  
│ ├── livepeer.conf  
│ ├── livepeer.install  
│ ├── livepeer.postrm  
│ ├── livepeer.postinst  
│ └── livepeer.service  
├── usr/  
│ ├── bin/  
│ │ └── livepeer  
│ └── share/  
│ └── doc/  
│ └── livepeer/  
│ └── LICENSE  
├── .github/  
│ └── workflows/  
│ └── build-deb.yaml  
└── build-deb.sh

Then in we hook into the same VM creating the artifacts, and make it create a signed (Livepeer CI Robot) .deb and release it along side the rest of the livepeer-$TAG-$ARCH-.tar,gz archives  
A bit more tooling to integrate it with the Changelog and GPG signature file creation may be required.

1. Fork a Github Actions repo ([GitHub - jtdor/build-deb-action: GitHub action for building Debian packages with dpkg-buildpackage.](https://github.com/jtdor/build-deb-action)) to create a Debian package for Livepeer, and it can just be called by build,yaml above, similar to how it calls the action to create a ubuntu-latest runner

2. Either Eli or [hjpotter92 (-) · GitHub](https://github.com/hjpotter92) add it as they see fit.

---

<div class="post-metadata">

**Author:** ![hjpotter92](https://avatars.discourse-cdn.com/v4/letter/h/a5b964/32.png) [@hjpotter92](https://forum.livepeer.org/u/hjpotter92)\
**Post date:** [May 3, 2023, 3:41pm UTC](https://forum.livepeer.org/t/create-debian-package-via-github-workflow/2057/2 "2023-05-03T15:41:05Z")

</div>

hey! I had made some progress on releasing installable packages for debian/fedora/macos etc. distros. I was using the excellent tool [called `fpm`](https://github.com/jordansissel/fpm) to do this.

However, lack of a feature made me drop the project at that time (around april/may of last year). It looks like [the feature request was acted upon](https://github.com/jordansissel/fpm/issues/1902) and was released in november; so it’d be nice to get back to it.

In the meantime, I was able to release macos package as a custom homebrew package through [our own tap](https://github.com/livepeer/homebrew-tap). linux+windows releases are still tarballs or zip currently 😑

If you want to help, i could push the branch over in `go-livepeer` for further inspection. I might be busy this month with some other prioritised work; but would be able to pick it up in near future.

Thanks for bringing this up to hunter’s (and mine) attention 🙂

For reference, the fpm config file i was using:

```auto
--input-type dir
--name go-livepeer
--license MIT
--maintainer "Livepeer CI Robot <support@livepeer.org>"
--description "Official Go implementation of the Livepeer protocol"
--provides livepeer
--verbose
livepeer=/usr/bin/livepeer livepeer_bench=/usr/bin/livepeer_bench livepeer_cli=/usr/bin/livepeer_cli livepeer_router=/usr/bin/livepeer_router

```
