this post was submitted on 10 Feb 2026
15 points (100.0% liked)

Debian operating system

3720 readers
1 users here now

Debian is a free operating system (OS) for your computer. An operating system is the set of basic programs and utilities that make your computer run. Debian provides more than a pure OS: it comes with over 59000 packages, precompiled software bundled up in a nice format for easy installation on your machine.

founded 6 years ago
MODERATORS
 

I have some cool projects that I use such as zellij and yazi that I use but aren't in the debian repos, I would like to attempt to package them myself, is there any guides on how to do such? were could I get some help learning how to package things?

top 11 comments
sorted by: hot top controversial new old
[–] redrumBot@lemmy.ml 3 points 2 days ago* (last edited 2 days ago)

You will find some resources about packaging in the debian Mentors Faq., including about the intent to package (ITP) process.

More than a year years ago, somebody requested yazi to be packaged, and changed it to a ITP, but the bug is open (i. e. It has not been packaged or added). May be the first step should be send a email to the bug asking for the status of the bug.

Also, about packaging rust programs, you should check the documentation of the debian rust team packagers.

[–] dan@upvote.au 7 points 2 days ago* (last edited 2 days ago)

Essentially you just need to:

  1. Build the correct directory structure within a subdirectory (e.g ./package/usr/bin for binaries, ./package/usr/share for docs, etc). This needs to include a few Debian-specific files, like a control file that contains metadata for the package, a copyright file, install and uninstall scripts if needed, etc.
  2. Use dpkg-deb to package the files into a .deb file.
  3. Run lintian to check that there's no issues with the package.

There's probably newer tools, but these are the core ones that have been part of Debian forever (and thus are very well-documented online).

You can then use Aptly to create a custom repo, or deb-get to install packages from Github releases.

I worked on the Debian packaging for Yarn v1. You can see the script that creates deb and rpm packages here: https://github.com/yarnpkg/yarn/blob/master/scripts/build-deb.sh (this uses fpm to build the rpm package, and the native Debian tools to build the deb package)

One thing I don't have experience with is submitting packages to the official Debian repo, so I can't help with that.

[–] wildbus8979@sh.itjust.works 6 points 2 days ago* (last edited 2 days ago)

If the upstream resides in git, it's really easy to use git based packaging: https://wiki.debian.org/PackagingWithGit/

https://optimizedbyotto.com/post/debian-packaging-from-git/

[–] XTL@sopuli.xyz 1 points 2 days ago

I would love to see yazi in Debian!

[–] Penguincoder@beehaw.org 2 points 2 days ago

Definitely need to learn the key concepts and processes first. But give nfpm a try.

[–] hobata@lemmy.ml 2 points 2 days ago (2 children)

Well, that's a bit off topic, but may I ask why you want to do that? I can't imagine a scenario (for me as a single user) that would exceed the scope of checkinstall.

[–] dan@upvote.au 5 points 2 days ago (1 children)

For me, I like knowing that apt update && apt upgrade will upgrade everything, instead of having to remember about all the special cases.

On servers, I try to install everything from either Debian packages or Docker containers, to make upgrading simpler.

[–] hobata@lemmy.ml 1 points 1 day ago (1 children)

But for apt update && apt upgrade to work, the stuff must be maintained and packaged by somebody.

[–] dan@upvote.au 2 points 1 day ago

I think that's why OP is asking how to create packages.

[–] wildbus8979@sh.itjust.works 4 points 2 days ago* (last edited 2 days ago) (1 children)

One reason might be to install the same package over multiple machines. Also make removal easier. It can also be used to keep track of checksums for security purposes.

[–] hobata@lemmy.ml 1 points 1 day ago

that something that checkinstall can solve, it builds a deb package