I have var/run on tmpfs, and this is backedup and restored from the kernel initscript. Some packages cannot be removed or those that are emerged produce an error like below when they attempt to change the permissions of the mount point. (The mount point itself on the root filesystem is immutable (ie. permissions cannot be changed). >>> Unmerging sys-auth/policykit-0.9-r1... * Messages for package sys-auth/polkit-0.99-r1: * If you don't use GDM or KDM for logging in, * you must start your desktop environment (DE) as follows: * ck-launch-session $STARTGUI * Where $STARTGUI is a DE-starting command such as 'gnome-session'. * You should add this to your ~/.xinitrc if you use startx. Traceback (most recent call last): File "/usr/bin/emerge", line 43, in <module> retval = emerge_main() File "/usr/lib64/portage/pym/_emerge/main.py", line 1700, in emerge_main myopts, myaction, myfiles, spinner) File "/usr/lib64/portage/pym/_emerge/actions.py", line 443, in action_build retval = mergetask.merge() File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1158, in merge rval = self._merge() File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1476, in _merge self._main_loop() File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1618, in _main_loop self._poll_loop() File "/usr/lib64/portage/pym/_emerge/PollScheduler.py", line 138, in _poll_loop handler(f, event) File "/usr/lib64/portage/pym/_emerge/EbuildIpcDaemon.py", line 82, in _input_handler reply_hook() File "/usr/lib64/portage/pym/_emerge/AbstractEbuildProcess.py", line 149, in _exit_command_callback self.scheduler.schedule(self._reg_id, timeout=self._exit_timeout) File "/usr/lib64/portage/pym/_emerge/PollScheduler.py", line 232, in _schedule_wait handler(f, event) File "/usr/lib64/portage/pym/_emerge/SpawnProcess.py", line 203, in _output_handler self._unregister_if_appropriate(event) File "/usr/lib64/portage/pym/_emerge/AbstractPollTask.py", line 49, in _unregister_if_appropriate self.wait() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 41, in wait self._wait_hook() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 114, in _wait_hook self._exit_listener_stack.pop()(self) File "/usr/lib64/portage/pym/_emerge/EbuildPhase.py", line 215, in _post_phase_exit self.wait() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 41, in wait self._wait_hook() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 114, in _wait_hook self._exit_listener_stack.pop()(self) File "/usr/lib64/portage/pym/_emerge/TaskSequence.py", line 43, in _task_exit_handler self.wait() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 41, in wait self._wait_hook() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 114, in _wait_hook self._exit_listener_stack.pop()(self) File "/usr/lib64/portage/pym/_emerge/CompositeTask.py", line 105, in _default_final_exit return self.wait() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 41, in wait self._wait_hook() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 114, in _wait_hook self._exit_listener_stack.pop()(self) File "/usr/lib64/portage/pym/_emerge/EbuildBuild.py", line 240, in _build_exit self.wait() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 41, in wait self._wait_hook() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 114, in _wait_hook self._exit_listener_stack.pop()(self) File "/usr/lib64/portage/pym/_emerge/CompositeTask.py", line 105, in _default_final_exit return self.wait() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 41, in wait self._wait_hook() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 114, in _wait_hook self._exit_listener_stack.pop()(self) File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1455, in _build_exit self._schedule() File "/usr/lib64/portage/pym/_emerge/PollScheduler.py", line 52, in _schedule return self._schedule_tasks() File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1652, in _schedule_tasks if q.schedule(): File "/usr/lib64/portage/pym/_emerge/SequentialTaskQueue.py", line 55, in schedule task.start() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 23, in start self._start() File "/usr/lib64/portage/pym/_emerge/PackageMerge.py", line 43, in _start self.returncode = self.merge.merge() File "/usr/lib64/portage/pym/_emerge/MergeListItem.py", line 137, in merge uninstall.start() File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 23, in start self._start() File "/usr/lib64/portage/pym/_emerge/PackageUninstall.py", line 21, in _start writemsg_level=self._writemsg_level) File "/usr/lib64/portage/pym/_emerge/unmerge.py", line 501, in unmerge scheduler=scheduler) File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 4028, in unmerge retval = mylink.unmerge(ldpath_mtimes=ldpath_mtimes) File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 1546, in unmerge self._unmerge_pkgfiles(pkgfiles, others_in_slot) File "/usr/lib64/portage/pym/portage/dbapi/vartree.py", line 1984, in _unmerge_pkgfiles os.rmdir(obj) File "/usr/lib64/portage/pym/portage/__init__.py", line 226, in __call__ rval = self._func(*wrapped_args, **wrapped_kwargs) OSError: [Errno 1] Operation not permitted: '/var/run' Reproducible: Always Steps to Reproduce: 1. create a /var/run mount point that is unwritable 2. mount /var/run with a fs that is writable 3. emerge say polkit Expected Results: A bit more graceful error handling when dealing with writable mounted partitions and non-writable mount points.
Please paste your `emerge --info' output in a comment.
As requested, sir: emerge --info Portage 2.1.9.26 (unavailable, gcc-4.5.1, glibc-2.12.1-r3, 2.6.36.2 x86_64) ================================================================= System uname: Linux-2.6.36.2-x86_64-Intel-R-_Atom-TM-_CPU_N450_@_1.66GHz-with-gentoo-2.0.1 Timestamp of tree: Unknown dev-lang/python: 2.7.1::gentoo, 3.1.3::gentoo sys-devel/autoconf: 2.13::gentoo, 2.68::gentoo sys-devel/automake: 1.9.6-r3::gentoo, 1.10.3::gentoo, 1.11.1::gentoo sys-devel/binutils: 2.21::gentoo sys-devel/libtool: 2.4-r1::gentoo virtual/os-headers: 2.6.36.1::gentoo (sys-kernel/linux-headers) ACCEPT_KEYWORDS="~amd64" ACCEPT_LICENSE="* -@EULA" CFLAGS="-O2 -march=atom -mfpmath=sse -mssse3 -msahf -mmovbe -mtune=atom --param l1-cache-size=24 --param l1-cache-line-size=32 --param l2-cache-size=512 -ftree-vectorize -fomit-frame-pointer -floop-parallelize-all -fgcse-after-reload -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /var/bind" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" CXXFLAGS="-O2 -march=atom -mfpmath=sse -mssse3 -msahf -mmovbe -mtune=atom --param l1-cache-size=24 --param l1-cache-line-size=32 --param l2-cache-size=512 -ftree-vectorize -fomit-frame-pointer -floop-parallelize-all -fgcse-after-reload -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="assume-digests binpkg-logs distlocks fixlafiles fixpackages metadata-transfer news nodoc noinfo notitles parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch usersync webrsync-gpg" GENTOO_MIRRORS="http://distfiles.gentoo.org" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/usr/portage/distfiles" PORTDIR="/usr/portage" PORTDIR_OVERLAY=" " SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="amr aqua aspell bluetooth cleartype device-mapper directfb egl enca enchant ffmpeg gnutls gsm gstreamer java mmx mmx2 networkmanager nsplugin opensvg policykit private-headers pulseaudio resolvconf schroedinger sip sqlite sse sse2 sse3 system-sqlite system-v8 systemd threads v4l2 vaapi wav xvmc" Unset: EMERGE_DEFAULT_OPTS, PORTAGE_BUNZIP2_COMMAND
Just managed to play around with the netbook. udev 1024 428 596 42% /dev /dev/rootdev 4194304 1770968 2423336 43% / tmpfs 917504 65888 851616 8% /tmp tmpfs 917504 65888 851616 8% /var/tmp tmpfs 917504 65888 851616 8% /var/run tmpfs 917504 65888 851616 8% /var/log tmpfs 917504 65888 851616 8% /media tmpfs 917504 65888 851616 8% /home/tmp rc-svcdir 1024 72 952 8% /lib64/rc/init.d shm 1024788 804 1023984 1% /dev/shm Everything works fine when I unmount /var/run and chattr -i on /var/run on the root file system. The /var/run/Consolekit and /var/run/polkit-1 dirs already exist on /var/run on tmpfs. These are created before the real init is run. The problem, as far as I can tell was that some cruft was being created on the root file system below the mount points, which the chattr +i fixed. ie should have been created in tmpfs: var/run not rootdev: varrun. So if I unmount /var/run everything is fine. I didn't check to see if the directories are still created on rootdev:var/run instead of tmpfs:
This is fixed in git: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=ea30a50c3b0c32eed3169906a51d16b19cb5793f
This is fixed in 2.1.9.27.
(In reply to comment #5) Thanks. Works fine.