• 0 Posts
  • 15 Comments
Joined 1 year ago
cake
Cake day: July 31st, 2023

help-circle






  • Why isn’t there a way for Linux users to automatically install every missing dependency for a program?

    There is; actually there are several. Every^* distribution has a package manager, that’s what it does. But you have to make a package for the program, similar to what the tegaki folks have done for Mac and Windows.

    Another option is to statically link everything.

    One issue is the fragmentation; because there are so many Linux distributions, it’s hard to support packages for all of them. This is one thing that flatpack aims to solve.

    I would expect this to be an issue for old closed-source software, but not for old free software. Usually there’s someone to maintain packages for it.

    Some cursory searching shows no tegaki package on flathub or in nix (either of these can be used on any distro; the nix one is surprising to me; it hosts soooo many packages).

    But I do see it in Debian: https://packages.debian.org/search?suite=default&section=all&arch=any&searchon=names&keywords=tegaki






  • I prefer to come at it from an immediate utility level, and I think a good place to start with that is home-manager.

    You can install nix and home-manager on any Linux distribution or MacOs. It lets you, in a single place, specify what packages you want, services you want to run at the user level, and what config files you want in your home directory. For a lot of things, home-manager has built-in config options, but you can also specify arbitrary config files.

    Then, you can take this one file to a new computer, and with no other config, have everything set-up the way you like it.

    NixOs allows you to do this for your whole system.

    It also has a bunch of other benefits, which tie-in to the jargon you bring up. But if you want to check it out, I’d worry about that later.




  • I personally don’t think they do, but an argument can certainly be made. Rust proc macros can run arbitrary code at compile time. Build scripts can also do this.

    This means, adding a dependency in Cargo.toml is often enough for that dependency to run arbitrary code (as rust-analyzer will likely immediately compile it).

    In practice, I don’t think this is much worse than a dependency being able to run arbitrary code at runtime, but some people clearly do.