Hello o/

I would like to develop a package manager in c# to expand my knowledge about the language and more understand how package managers put together entire system.

so here are my questions:

  1. where should I start?
  2. 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
  3. how do I setup my dev environment I am on Ubuntu and has installed VS Code and dotnet sdk

sorry it these questions feel too naive but I really think I can do this!

Thanks in advance!

  • just_another_person@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    4 days ago

    It might be better to first learn about existing package managers: build some packages for rpm, apt, pac…etc.

    The fundamentals would be easier to understand from there to figure out what you actually want to write and why.

    At their core, packages are simply just bundles of flat files, and stages of scripts that get executed. That’s it. Like a zip file with scripts.

    Package Managers on the other hand are just clients that deal with the metadata and contents of packages and decide what to do with them. They go way deeper.

  • anon5621@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    4 days ago

    I think the most effective way would be for u to start learning source code of apt,rpm,pacman to understand what they are doing and this is for what we are loving free and open source software then start implementing small basic things.

    • china🇨🇳@lemmy.caOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      4 days ago

      I have a very rough idea actually, I know that all the package managers keeps track of all the installed files and then removes it when user demands it apart from that I think the most difficult thing would be deps resolution to do so I might have to maybe implement recursion in c#.

      • apt_install_coffee@lemmy.ml
        link
        fedilink
        English
        arrow-up
        2
        ·
        2 days ago

        I recommend starting with basic operations, like:

        • putting installed files in the right directory structure.
        • integrity checking.
        • archiving and compressing.

        Decide whether your package manager is source-based, or if you’re going to make some kind of binary distribution mechanism. Either way, you’re going to need a process for configuring, compiling and installing packages from source.

        I do recommend looking at how Pacman, & apt approach all this. There are also likely books on this topic.

        Also recommend playing around with buildroot; not because it is a comprehensive package manager, but because it’s inner workings are very transparent.