Sometimes if you try to emerge a package in Gentoo you could receive error in the configure phase of the compilation process. The example below is with the emerging the PHP – dev-lang/php-5.6.33:5.6::gentoo, but could happen with many other packages, which are rather old and probably not maintained or the sandbox or even the portage packages are old.
So here is the error and the compilation stops:
srv ~ # emerge -av --nodeps "<php-7" ... checking for mmap() using MAP_ANON shared memory support... yes checking for mmap() using /dev/zero shared memory support... yes checking for mmap() using shm_open() shared memory support... * ACCESS DENIED: open_wr: /run/test.shm.8811LBKone no checking for mmap() using regular file shared memory support... yes ... checking for mmap() using MAP_ANON shared memory support... yes checking for mmap() using /dev/zero shared memory support... yes checking for mmap() using shm_open() shared memory support... * ACCESS DENIED: open_wr: /run/test.shm.180309hAMbj no checking for mmap() using regular file shared memory support... yes .... Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing libtool commands config.status: executing default commands >>> Source configured. * --------------------------- ACCESS VIOLATION SUMMARY --------------------------- * LOG FILE: "/var/log/sandbox/sandbox-13466.log" * VERSION 1.0 FORMAT: F - Function called FORMAT: S - Access Status FORMAT: P - Path as passed to function FORMAT: A - Absolute Path (not canonical) FORMAT: R - Canonical Path FORMAT: C - Command Line F: open_wr S: deny P: /run/test.shm.21532Xx6ViE A: /run/test.shm.21532Xx6ViE R: /run/test.shm.21532Xx6ViE C: ./conftest F: open_wr S: deny P: /run/test.shm.31817hurGxH A: /run/test.shm.31817hurGxH R: /run/test.shm.31817hurGxH C: ./conftest F: open_wr S: deny P: /run/test.shm.8811LBKone A: /run/test.shm.8811LBKone R: /run/test.shm.8811LBKone C: ./conftest F: open_wr S: deny P: /run/test.shm.180309hAMbj A: /run/test.shm.180309hAMbj R: /run/test.shm.180309hAMbj C: ./conftest * -------------------------------------------------------------------------------- >>> Failed to emerge dev-lang/php-5.6.33, Log file: >>> '/var/tmp/portage/dev-lang/php-5.6.33/temp/build.log'
You could try adding “-sandbox” to feature in “/etc/portage/make.conf”
FEATURES="-sandbox"
But
the sandbox feature is very important and should not be disabled by default.
And that’s why sometime when you disable it with “-sandbox” you still get access violation and you still cannot install/compile the package!
The thing is you see the error and you can fix it easily. The important part is the directory, which causes the error, in the above example with “dev-lang/php”, but could be any other Gentoo package, the problem is the writing permission for files in “/run” directory. So open the configuration file
/etc/sandbox.d/00default
and you’ll see the there is a variable called SANDBOX_WRITE, which accept paths. If you add to this variable at the end the directory “/run” or your access violated directory you’ll be able to install/compile your package with no problems, for the above problem the solution was:
SANDBOX_WRITE="/usr/tmp/conftest:/usr/lib/conftest:/usr/lib32/conftest:/usr/lib64/conftest:/usr/tmp/cf:/usr/lib/cf:/usr/lib32/cf:/usr/lib64/cf:/run"
If this occurs, should I file a bug report?
It depends, because it might be just an old package, which is not maintained by the portage. If it is a package from the current portage tree it may be a bug and you may file a bug report.