Recently emerging package =dev-lang/go-1.13.4 under Gentoo failed on one of our virtual servers with:
Traceback (most recent call last):
File "/usr/lib64/python3.6/site-packages/portage/dbapi/_MergeProcess.py", line 234, in _spawn
File "/usr/lib64/python3.6/site-packages/portage/dbapi/vartree.py", line 1788, in wrapper
return f(self, *args, **kwargs)
File "/usr/lib64/python3.6/site-packages/portage/dbapi/vartree.py", line 5385, in merge
File "/usr/lib64/python3.6/site-packages/portage/dbapi/vartree.py", line 4548, in treewalk
rval = self._merge_contents(srcroot, destroot, cfgfiledict)
File "/usr/lib64/python3.6/site-packages/portage/dbapi/vartree.py", line 4828, in _merge_contents
self.settings["EPREFIX"].lstrip(os.sep), cfgfiledict, mymtime):
File "/usr/lib64/python3.6/site-packages/portage/dbapi/vartree.py", line 5225, in mergeme
File "/usr/lib64/python3.6/site-packages/portage/util/movefile.py", line 256, in movefile
File "/usr/lib64/python3.6/site-packages/portage/__init__.py", line 246, in __call__
rval = self._func(*wrapped_args, **wrapped_kwargs)
File "/usr/lib64/python3.6/site-packages/portage/_selinux.py", line 71, in rename
UnicodeEncodeError: 'ascii' codec can't encode character '\xc4' in position 83: ordinal not in range(128)
>>> Failed to install dev-lang/go-1.13.4, Log file:
The above log shows that the emerge fails in the installation phase when moving the files to the proper path in the system. The problem there is a non-ASCII character in the file name or path, but the environment is set to use ASCII as language.
The solution is to check if the environment LANG is set and what it contains. In this case, we should set the LANG environment to utf8.
Most of the cases this kind of error could occur with virtual servers, docker (or the other kind of containers like lxc, podman and so on) containers and chroot jails or screens with changed user with su or sudo! In our case, the LANG just got missed because of a switch user procedure in a container and the emerge failed with the above error. When the LANG is missing probably the default value is “C”. In fact, check not only LANG but also the “LC_ALL” environment variable (it may have different value, which is wrong!), which also should be “en_US.UTF-8”:
Or try removing it at all with
Keep on reading!