this post was submitted on 05 Dec 2025
18 points (84.6% liked)

Linux

60132 readers
1474 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS
top 17 comments
sorted by: hot top controversial new old
[–] DieserTypMatthias@lemmy.ml 2 points 4 days ago

Take a look at Homebrew. Essentially how it works is that it parses a definition file for package(s) and downloads and installs them (and their dependencies) in a for loop.

[–] ThirdConsul@lemmy.ml 10 points 6 days ago* (last edited 6 days ago) (1 children)

You seem to be a very novice programmer.

how do I setup my dev environment ? Google that? Use a devcontainer? I mean literally a question answered thousands of times.

where should I start Setting up your dev environment. Then maybe create a few projects for you to test your package manager empirically?

do I invent my own pkg format or do I use pre built packages like deb or rpm?

Depends on what you want to do. I'm honestly not sure how to help you here? What kind of answer are you fishing for here?

[–] kionite231@lemmy.ca 1 points 6 days ago

yes I am a novice programmer and don't know much about c# either but I have made a bunch of projects which is fairly usable so I am not someone with no experience.

[–] fbr@lemmy.dbzer0.com 2 points 5 days ago

Building a package manager is kind of a large project, so I'd recommend trying to build some smaller applications in C# first. That will help you set up your development environment and get a better grasp on the language and ecosystem.

Once you've got an okay understanding of the language, I think a package manager would be a great project to learn with (especially if it's something you're interested in)!

  1. do I invent my own pkg format or do I use pre built packages like deb or rpm? I think the later one will be more easier

Whether you build your own package format or use one from another manager is up to you. If you want to learn how a specific package manager works, consider integrating with their package format. If you want to design a full system, consider designing your own (and maybe take inspiration from some existing solutions). I wouldn't say that using an existing format would be strictly easier, as those formats are specially designed and can often be very complicated.

  1. where should I start?

This is a tricky question for any application. I'd highly recommend spending a little bit of time to determine roughly what steps will need to be done for each stage of package management (i.e., creating a package, publishing a package, installing a package). Since you're just doing this to learn, it's okay if it's not perfect or if there are portions that are missed, it's just important to get some thoughts out. When you actually start writing code, you'll probably want to focus on the more fundamental aspects that block the other stages (implement package creation before implementing installation)

[–] MonkderVierte@lemmy.zip 3 points 6 days ago* (last edited 6 days ago)

I guess a good start would be to look at some minimal package managers like opkg. Maybe xbps, pacman too; the format is simple but for pacman you need rather look at libalpm.

[–] Wojwo@lemmy.ml 2 points 5 days ago (1 children)

Maybe spend some time investigating how to make nuget packages and then move onto deb or rpm. That way you'll have a better idea of the problems that you'll face in making your own. Personally whenever I feel the need for some kind of package manager, nuget is flexible enough that I can repurpose it to almost anything.

[–] kionite231@lemmy.ca 1 points 5 days ago (1 children)

nuget is flexible enough that I can repurpose it to almost anything. wait so you mean I can use nuget to install Linux packages too? that would be really awesome if true.

Thank you for the reply!

[–] Wojwo@lemmy.ml 2 points 4 days ago

Yeah, you could probably make a linux distro that uses nuget for packaging... Hadn't really thought about it but it should be doable.

[–] pastermil@sh.itjust.works 2 points 6 days ago

Why would you do that?

Aside from the fact there are so many package managers out there, don't you want to start with something simpler?

[–] far_university1990@reddthat.com 1 points 6 days ago* (last edited 6 days ago) (2 children)

Abandon microshit c#

Edit: also read apt/dpkg/rpm/yum/pacman source? Deb literally just tar with file with same hierarchy as in os with one or two extra file for metadata.

[–] ThirdConsul@lemmy.ml 8 points 6 days ago (1 children)

Slow down, relax, OP asked a question, not murdered your pet hamster.

Microsoft did. My pet hamster called mojang account. And now i out for microsoft blood.