cross-posted from: https://sh.itjust.works/post/64685863

Lots of programming languages have their own package manager, separate from the distribution or OS package manager.

Going loosely from the TIOBE index:

  • Python has Pip
  • C# has NuGet
  • Javascript has npm for Node.js
  • Visual Basic also uses NuGet
  • R has a repository of packages that can be installed by running install.packages("something") in R
  • Rust has Cargo/Crates
  • Go has the go get command
  • Swift has its own package manager swift package
  • Ruby has RubyGems
  • Java has Maven and Gradle (not sure if they are full package managers, or build automation tools with dependency resolution)
  • PHP has Composer for managing libraries and dependencies
  • C and C++ are the only exceptions I can think of, off the top of my head; libraries are managed by, and coupled to, the operating system
you are viewing a single comment's thread
view the rest of the comments
[–] 5 points 3 months ago (3 children)

What would be the alternative, exactly?

  • source
  • hideshow 3 child comments
  • [–] 6 points 3 months ago* (2 children)

    Each project would have to reinvent the wheel and make packages for the 10 most popular Linux distributions (every one of them being different, DEB, RPM, Arch, etc.), Windows 10, Windows 11, macOS latest version, macOS previous version, and macOS future version.

    Also you would need 10 virtual machines to test on Linux, 2 virtual machines for Windows, and 3 Apple computers. That would be so easy.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 3 months ago

    Yeah, it's so annoying how every crossplatform project is having to do that, it's such a burden on all those indie developers all managing so much hardware and automation to support those platforms. /s

    I think I've seen the same argument against Linux package managers in general, and it's bullshit in the way that it's not on the projects to package for each distro, it's on the project to provide a functioning build system, or at least binaries, and from there it's on the distribution maintainers to figure out packaging.

    But also, in cases where packaging is more complex than just one dependency system for a whole language, it would be beneficial to have one unified system - if all languages are packaged in a unified way for specific system package managers, then you only need to develop a system for them once across all languages, and then you might have one system you need to plug your project into, and from there it could be automatically packaged into all those systems.

  • source
  • parent