One of the core benefits of tea
: it's relocatable.
tea
does not pollute your system environment, everything gets "installed" in a relocatable folder ~/.tea
.
tea
can also install languages like node
and ruby
and it's dependency managers, npm
and gem
, respectively.
However, these language dependency managers install packages to global directories like ~/.npm
and ~/.gem
.
Tools from these ecosystems expect to find packages in these locations.
In this RFC, we would love to hear feedback from the community.
There are a couple of options that we are weighing:
- dependency managers' default location, i.e.
~/.gem
- general location, i.e.
~/.local/bin
- inside
tea
's directory, i.e.~/.tea/foo
Languages and their dependency managers have set default locations for their package installations. Tea should not change how or where gem
installs Ruby gems. Tea packages ruby
and gem
and leaves the rest to them.
- For instance, if we install Ruby with
tea
, it will be installed here:~/.tea/ruby-lang.org/v3.2.1/bin
- Ruby will install gems to
~/.gem
Tea is a package manager that cares about developer experience and by following that mantra, a general location, which is already in the user's $PATH
should be picked as a logical install location.
- For instance, if we install Ruby with
tea
, it will be installed here:~/.tea/ruby-lang.org/v3.2.1/bin
. - Ruby will install gems to
~/.local/bin
or/usr/local/bin
or~/.tea/bin
.
Tea is relocatable and stows packages in a "sandbox". If you want to remove a particular package from your tea
installation, you simply remove the package folder: rm -r ~/.tea/foo.org
- For instance, if we install Ruby with
tea
, it will be installed here:~/.tea/ruby-lang.org/v3.2.1/bin
- Ruby will install gems to
~/.tea/ruby-lang.org/v3.2.1/bin
The benefit: if I want to remove a particular version of Ruby, along with all installed gems, I simply remove ~/.tea/ruby-lang.org/v3.2.1
.