How do I install a package globally?
Trevor
trevor.goodwin at live.com
Sat Nov 11 23:28:18 UTC 2023
On Saturday, 11 November 2023 at 07:12:21 UTC, Christian Köstlin
wrote:
> On Saturday, 11 November 2023 at 01:50:54 UTC, Trevor wrote:
>> I'm just getting in to D , coming from a C and Python
>> background. I've had a play with DUB and adding packages to my
>> project, but it seems like there should be a way to install
>> packages so they can be used in any D program I compile
>> without creating a whole package. For example in Python you
>> can just go "pip install abc" and then any script can use abc.
>>
>> How does one install packages globally, and how can I write
>> programs that use the third-party packages without being
>> wrapped in a dub file?
>
> There is no way to install a dependency for all your d programs
> globally.
> In general you also should be careful about which dependencies
> you pull in and control them tightly.
>
> In general the approach taken by dub is slightly different.
> The dependencies you are using in all your programs are put to
> `$HOME/.dub/packages/...` and are in theory available for all
> your programs, but you still have to tell dub, that you want to
> use one of them. This is similar to python in that, pip puts
> your dependencies somewhere in your `$PYTHONHOME` or
> `$PYTHONPATH` (I am not 100% sure about that).
> You can tell dub (and dub then tells the compiler where to find
> the dependencies) in two way:
> - Create a complete dub project with dub.json/sdl and add the
> dependency there (e.g. with `dub add` or while creating the
> project or by adding them in your editor to the dub.json/sdl)
> - Create a self executing d file (that is run when you just
> call it like a script and compiled on the fly). See
> https://dub.pm/advanced_usage#single-file for details.
>
> Another way dub is able to "install" something is by using `dub
> fetch` to pull a package with a binary in it (e.g. `dub fetch
> dfmt`). You then can run this executable by `dub run` (e.g.
> `dub run dfmt -- ... here go the arguments to the dfmt tool).
>
> Kind regards,
> Christian
Thanks for the detailed reply. I guess what I'd like to do is not
create a DUB package for every little project I work on. It seems
like most modern languages require a package/dependency manager
though. Being able to install libraries globally would avoid this
but I can how that can cause it's own set of issues. It doesn't
seem efficient in terms of bandwidth and hard disk space to have
a new copy of a library for each project that uses it?
More information about the Digitalmars-d-learn
mailing list