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.
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)!
- 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.
- 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)
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.
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!
Yeah, you could probably make a linux distro that uses nuget for packaging… Hadn’t really thought about it but it should be doable.
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?
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.
I guess a good start would be to look at some minimal package managers like opkg. Maybe xbps, yum, pacman too; the format is simple but for pacman you need rather look at libalpm.
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?
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.
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.
Every package manager you mention is shit. Look at guix, nix or pnpm for better, innovative concepts and ideas and implement them better.
Every package manager you mention is shit.
Every package manager
you mentionis s***.Every package manager you mention is shit.
And so are you.
Wtf, do you know nix, guix and pnpm? They have way better concepts, ideas and functionality then the legacy package managers you mentioned.



