Advice to update Mercurial in a shared hosting?

Manuel Jacob me at manueljacob.de
Tue Jul 12 05:30:02 UTC 2022


Hi!

On 11/07/2022 21.38, Marcos Cruz wrote:
> 
> Hello,
> 
> I want to install hgweb.cgi for the first time. I have read the wiki
> article (https://www.mercurial-scm.org/wiki/PublishingRepositories) and
> have prepared a subdomain of mine with CGI support.
> 
> I have the following versions installed:
> 
> - The server has Mercurial 3.7.3, Python 2.6.6 and 3.4.3.
> 
> - My local system (Debian 10.12) has Mercurial 6.1.4, Python 2.7.16 and
>    3.7.3.
> 
> I suppose those distant versions of Mercurial must be incompatible in
> this case, right?

The basic protocol should be compatible even if the difference in 
versions is large. However, if one of the peers is using an old version 
of Mercurial, some features or performance optimizations can’t be used.

> My hosting is shared: I can not install anything on the server except in
> my home directory. I tried the following: I uploaded the tar.gz of
> Mercurial 6.1.4 to the server by FTP. Then, through SSH, I unpacked it
> and did `make local`. It failed immediately with the following message:
> 
> ```
> python3 setup.py  \
>            build_py -c -d . \                                                                           build_ext  -i \
>            build_hgexe  -i \
>            build_mo
> Traceback (most recent call last):
>    File "setup.py", line 455, in <module>
>      b'version = b"%s"\n' % versionb,
> TypeError: unsupported operand type(s) for %: 'bytes' and 'bytes'
> make: *** [local] Error 1
> ```
> 
> Could it be an incompatibility between Python 3.4.3 and 3.7.3? I'm not a
> Python programmer, I'm just guessing.

Mercurial 6.1.x requires Python 2.7.x or Python >= 3.5. Your Python 3 
version is so old that setup.py (which is required to build Mercurial) 
can’t execute at all. With never versions of Python 3 and setuptools, 
there should be a better error.

Mercurial >= 6.2 requires Python >= 3.6.

If you’re fine with staying on Mercurial 6.1.4, you can try building it 
with Python 2.7:

PYTHON=python2 make local

> I've found some instructions to update Python on a shared hosting and
> they seem quite simple, but I prefer to ask for some advice first. What
> do you recommend?

To be clear, which instructions are you referring to?

In general, I would recommend trying to install a newer version of 
Mercurial via the distribution’s official package manager. That advise 
is not applicable in your case, of course. Other ways depend on the 
installation on your particular server and your security requirements.

To build Mercurial without installing it, running `make local` should 
work on the right Python version, as described above.

If you want to install the Python package, you can install it in the 
user site-packages directory. For example:

1) Install Mercurial via pip. Whether it’s available and how the 
executable is called to make it run on the intended Python version 
depends on the installation on your particular server. In the following, 
replace `pip` by the correct executable.
1a) `pip install --user mercurial` should hopefully select the right 
Mercurial version that works on the Python version it’s running with.
1b) `pip install --user .` in the unpacked Mercurial source
2) Run `python2 setup.py install --user` in the unpacked Mercurial 
source. If you want to use another Python version, replace `python2`.

> Thank you in advance.
> 



More information about the Mercurial mailing list