Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 268194 - portage error while installing binary packages with PKGDIR on vfat
Summary: portage error while installing binary packages with PKGDIR on vfat
Status: CONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Binary packages support (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-05-01 22:04 UTC by Gokdeniz Karadag
Modified: 2023-09-21 12:34 UTC (History)
0 users

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


Attachments
migrate packages out of the All/ directory (move-from-all,472 bytes, patch)
2009-05-02 06:09 UTC, Zac Medico
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Gokdeniz Karadag 2009-05-01 22:04:17 UTC
I'll begin by describing my scenario.

I have two similar computers in different places. One computer(say bigiron) compiles packages and builds binary packages. I mostly carry the packages via vfat formatted USB disk to the other machine (say laptop). I install them by setting PKGDIR to the usb disk.

When I am working on the laptop an I want to install a program on both machines, I emerge it on bigiron through a remote connection, and install the binary package over http. If PKGDIR is set to a vfat file system (or any other which does not support symlinks) portage fails with the exception pasted below. 

It is trying to copy the downloaded tbz2 to PKGDIR and then trying to symlink it All/file.tbz2 from category/file.tbz2. The symlinking fails because PKGDIR is on vfat.

Catching and Ignoring  OSError exception would be a reasonable solution, as absence of that symlink is nonfatal.



2009-05-02 00:48:51 (104 KB/s) - `/media/disk/irmik/packages/All/portaudio-19_pre20071207.tbz2' kaydedildi [147528/147528]

Cannot chown a lockfile. This could cause inconvenience later.
Traceback (most recent call last):
  File "/usr/bin/emerge", line 40, in <module>
    retval = _emerge.emerge_main()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 14670, in emerge_main
    myopts, myaction, myfiles, spinner)
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 13766, in action_build
    retval = mergetask.merge()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 10246, in merge
    rval = self._merge()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 10488, in _merge
    self._main_loop()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 10616, in _main_loop
    self._poll_loop()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 9177, in _poll_loop
    handler(f, event)
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 2253, in _output_handler
    self._unregister_if_appropriate(event)
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1768, in _unregister_if_appropriate
    self.wait()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1673, in wait
    self._wait_hook()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1746, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 3280, in _fetcher_exit
    self._start_task(verifier, self._verifier_exit)
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1971, in _start_task
    task.start()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1654, in start
    self._start()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 3633, in _start
    self.wait()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1673, in wait
    self._wait_hook()
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1746, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "//usr/lib/portage/pym/_emerge/__init__.py", line 3298, in _verifier_exit
    self._bintree.inject(pkg.cpv, filename=pkg_path)
  File "//usr/lib/portage/pym/portage/dbapi/bintree.py", line 839, in inject
    self._create_symlink(cpv)
  File "//usr/lib/portage/pym/portage/dbapi/bintree.py", line 298, in _create_symlink
    os.symlink(os.path.join("..", "All", mypkg + ".tbz2"), full_path)
OSError: [Errno 1] Operation not permitted


Reproducible: Always

Steps to Reproduce:




Portage 2.1.6.7 (default/linux/x86/2008.0/desktop, gcc-4.3.2, glibc-2.8_p20080602-r1, 2.6.25-gentoo-r4 i686)
=================================================================
System uname: Linux-2.6.25-gentoo-r4-i686-Intel-R-_Pentium-R-_M_processor_1.50GHz-with-glibc2.0
Timestamp of tree: Mon, 20 Apr 2009 01:15:02 +0000
ccache version 2.4 [disabled]
app-shells/bash:     3.2_p39
dev-java/java-config: 2.1.7
dev-lang/python:     2.5.4-r2
dev-python/pycrypto: 2.0.1-r8
dev-util/ccache:     2.4-r7
dev-util/cmake:      2.6.2-r1
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox:    1.6-r2
sys-devel/autoconf:  2.13, 2.63
sys-devel/automake:  1.4_p6, 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.2
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   1.5.26
virtual/os-headers:  2.6.27-r2
ACCEPT_KEYWORDS="x86"
Comment 1 Zac Medico gentoo-dev 2009-05-02 06:09:03 UTC
Created attachment 190098 [details, diff]
migrate packages out of the All/ directory

If you remove $PKGDIR/All/ then it won't even try to create the symlinks. The attached script will move the packages out of the $PKGDIR/All/ and remove it for you.
Comment 2 Zac Medico gentoo-dev 2009-06-17 00:57:42 UTC
Note to self: Integrate this script into emaint --fix binhost, and make it remove symlinks inside All/ if necessary (portage doesn't create them but some other tools might have).