Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 715312 - bootstrap-prefix.sh should tell if group owner of directory ${EPREFIX} is root, instead of an obscure unhandled exception.
Summary: bootstrap-prefix.sh should tell if group owner of directory ${EPREFIX} is roo...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo/Alt
Classification: Unclassified
Component: Prefix Support (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Prefix
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-03-29 13:18 UTC by Fat-Zer
Modified: 2020-03-31 17:09 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Fat-Zer 2020-03-29 13:18:44 UTC
If group of ${EPREFIX} directory is set incorrectly emerge on stage 3 will fail with next obscure message:

!!! Directory initialization failed: '/mnt/gentoo-prefix/var/lib/portage'
!!! chown('/mnt/gentoo-prefix/var/lib/portage', -1, 0)
!!! Directory initialization failed: '/mnt/gentoo-prefix/var/cache/edb'
!!! chown('/mnt/gentoo-prefix/var/cache/edb', -1, 0)
setlocale: unsupported locale setting
[Errno 1] Operation not permitted: b'/mnt/gentoo-prefix/var/lib/gentoo/news/.news-gentoo.unread.portage_lockfile': chown('/mnt/gentoo-prefix/var/lib/gentoo/news/.news-gentoo.unread.portage_lockfile', -1, 0)
Cannot chown a lockfile: '/mnt/gentoo-prefix/var/lib/gentoo/news/.news-gentoo.unread.portage_lockfile'
Group IDs of current user: 999

These are the packages that would be merged, in order:

Calculating dependencies  [Errno 1] Operation not permitted: b'/mnt/gentoo-prefix/var/db/.pkg.portage_lockfile': chown('/mnt/gentoo-prefix/var/db/.pkg.portage_lockfile', -1, 0)
Cannot chown a lockfile: '/mnt/gentoo-prefix/var/db/.pkg.portage_lockfile'
Group IDs of current user: 999
... done!
[ebuild     U  ] sys-apps/portage-2.3.96-r1::gentoo [2.3.88::gentoo] USE="(ipc) -apidoc -build -doc -gentoo-dev (-native-extensions) -rsync-verify (-selinux) -xattr" PYTHON_TARGETS="python3_6 -pypy3 -python3_7 -python3_8 (-python2_7%*)" 1026 KiB

Total: 1 package (1 upgrade), Size of downloads: 1026 KiB

Would you like to merge these packages? [Yes/No] y
Traceback (most recent call last):
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/portage/util/__init__.py", line 1095, in apply_permissions
    os.chown(filename, uid, gid)
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/portage/__init__.py", line 246, in __call__
    rval = self._func(*wrapped_args, **wrapped_kwargs)
PermissionError: [Errno 1] Operation not permitted: b'/mnt/gentoo-prefix/var/cache/edb/mtimedb'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/gentoo-prefix/usr/lib/python-exec/python3.6/emerge", line 53, in <module>
    retval = emerge_main()
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/_emerge/main.py", line 1309, in emerge_main
    return run_action(emerge_config)
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/_emerge/actions.py", line 3358, in run_action
    retval = action_build(emerge_config, spinner=spinner)
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/_emerge/actions.py", line 563, in action_build
    retval = mergetask.merge()
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/_emerge/Scheduler.py", line 943, in merge
    self._save_resume_list()
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/_emerge/Scheduler.py", line 1823, in _save_resume_list
    mtimedb.commit()
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/portage/util/mtimedb.py", line 127, in commit
    uid=uid, gid=portage_gid, mode=0o644)
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/portage/util/__init__.py", line 1271, in apply_secpass_permissions
    stat_cached=stat_cached, follow_links=follow_links)
  File "/mnt/gentoo-prefix/usr/lib64/python3.6/site-packages/portage/util/__init__.py", line 1102, in apply_permissions
    raise OperationNotPermitted(func_call)
portage.exception.OperationNotPermitted: chown('/mnt/gentoo-prefix/var/cache/edb/mtimedb', 999, 0)


Reproducible: Always

Steps to Reproduce:
1. sudo mkdir /mnt/gentoo-prefix
2. sudo chown gentoo-user /mnt/gentoo-prefix
3. sudo -u gentoo-user bootstrap-prefix.sh
Actual Results:  
stage 1&2 are built and installed fine. But emerge on stage3 fails with error message given above.

Expected Results:  
bootstrap-prefix.sh should warn on attempt to install to a directory with incorrectly set user group, or at least the behaviour of emerge to chown group should be mentioned on the documentation or wiki troubleshooting section.
Comment 1 Larry the Git Cow gentoo-dev 2020-03-31 17:09:08 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=095f4b4daf6029369c5d5ed308607c8b1e45276d

commit 095f4b4daf6029369c5d5ed308607c8b1e45276d
Author:     Fabian Groffen <grobian@gentoo.org>
AuthorDate: 2020-03-31 17:08:26 +0000
Commit:     Fabian Groffen <grobian@gentoo.org>
CommitDate: 2020-03-31 17:08:26 +0000

    scripts/bootstrap-prefix: check ownership of $EPREFIX dir, bug #715312
    
    Closes: https://bugs.gentoo.org/715312
    Signed-off-by: Fabian Groffen <grobian@gentoo.org>

 scripts/bootstrap-prefix.sh | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)