Subject: Re: bug#70071: [FR] Provide official install scripts without requiring root, e.g., by making a static build possible

From: Eli Zaretskii <[email-masked]>
Date: Fri, 29 Mar 2024 16:27:58 +0300

> From: Rudi C <[email-masked]>
> Date: Fri, 29 Mar 2024 16:12:34 +0330
> 
> I've been struggling to install Emacs on university servers where I don't have root access, and it's been a
> frustrating experience. It seems like such a trivial issue to prevent people from using Emacs, especially when
> Vim is usually pre-installed on most servers.

??? I'm building Emacs in this way since time immemoriam, and never
had any problems.  All you need is to configure it like this:

  ./configure --prefix=~/

and that's it: when you then say "make install", Emacs will be
installed under your home directory, and you can use it as much as you
like.  If this doesn't solve your problem, please tell why.

> It would be fantastic if Emacs could be modified to allow for static, portable builds for common Linux
> architectures. Imagine being able to install Emacs using a simple command like `curl -sS
> https://gnu.com/emacs-install-portable.sh | bash`, which would automatically detect the correct build, download
> it, and install it. While it might be possible to build Emacs without root access on each server from scratch, it's
> a difficult and time-consuming process. Unfortunately, there isn't a reliable official script like
> `gnu.com/emacs-install-no-root.sh` to streamline this process. I've tried using Linuxbrew to build Emacs from
> source without root, and while it sometimes (50%) works, it's very slow. As brew is primarily developed for
> macOS, not Linux, the bugs are not fixed. (See, e.g.,
> https://github.com/d12frosted/homebrew-emacs-plus/issues/603)
> 
> To address these issues, I have three suggestions, listed in order of preference:
> 
> 1. Provide portable builds of Emacs, along with a script that automatically installs the correct build without
> requiring root access.
> 2. Offer semi-portable builds of Emacs that only require building a handful of libraries on the host. This should
> be handled by an official install script, allowing users to simply run `curl ... | bash`.
> 3. Create an official install script that builds Emacs from source, thoroughly tested on popular distributions like
> Ubuntu (including different versions, not just the latest). This should still be as straightforward as running
> `curl ... | bash`, even if it takes some time to complete.

What is a "portable build", and how is it different from a "normal"
build?  Also, what is a "static build"?

If you need to build support libraries (presumably, because they are
not installed on the target system), you can build them in the same
way, with --prefix pointing to a subdirectory of your home directory.
Then either set LD_LIBRARY_PATH and INCLUDE_PATH to ensure the
configure script finds those libraries, or use CFLAGS and LDFLAGS at
configure time to tell the configure script where to find the
directories with header files and libraries ("configure --help"
mentions those variables and many others)

> I consider myself a persistent and patient person, and I've explored various options, including `nix-env`, `guix
> `, and more. However, I've reached my wit's end; installing Emacs is simply too complicated. While I HAVE
> installed emacs on many servers and I use it remotely almost every day, on servers that I use less often, I
> often resort to vim or editing files locally and using Git to sync my changes back to the server. I'm aware of
> Tramp, but it's buggy and slow on my setup, and I don't have the time to debug it or fix the extensions that are
> causing issues. Similarly, sshfs is unreliable on my unstable connections. All I want is a way to easily install
> Emacs on a server without root access, without having to manually inspect the installation process or engage
> in a debugging session. Is a one-liner installer too much to ask for in 2024?!

Needless to say, this is completely against my many-year experience.
I don't understand why you need to search for solutions high and low,
instead of just using the features that are there already, and always
have been.

I fear there's some serious misunderstanding here, perhaps some
details of the issue that you haven't described.

Linux distros are the way to let users install a prebuilt Emacs.  If
your problem is that you want to be able to install those distros
without root access, then I think you should talk to the maintainers
of those distros.  The Emacs project doesn't produce official
binaries, it only produces source tarballs, and those can be built and
installed without any need for root access, see above.