=^.^=

Gentoo Prefix Errors: Aborting due to QA concerns: there are files installed outside the prefix

karma

Just like it sounds, the package you are trying to emerge is attempting to write files outside of your prefix. Depending on the situation it may be that there is no fix, but it is possible that upgrading eselect or portage and re-syncing the portage tree will solve the problem - as was the case for me this morning when attempting to emerge -e system with the distributed portage snapshot:

>>> Completed installing ncurses-5.9-r02.1 into /Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/image/

ecompressdir: bzip2 -9 /usr/share/man
 * QA Notice: the following files are outside of the prefix:
 * /usr
 * /usr/lib
 * /usr/lib/pkgconfig
 * /usr/lib/pkgconfig/form.pc
 * /usr/lib/pkgconfig/formw.pc
 * /usr/lib/pkgconfig/menu.pc
 * /usr/lib/pkgconfig/menuw.pc
 * /usr/lib/pkgconfig/ncurses++.pc
 * /usr/lib/pkgconfig/ncurses++w.pc
 * /usr/lib/pkgconfig/ncurses.pc
 * /usr/lib/pkgconfig/ncursesw.pc
 * /usr/lib/pkgconfig/panel.pc
 * /usr/lib/pkgconfig/panelw.pc
 * ERROR: sys-libs/ncurses-5.9-r02.1 failed:
 *   Aborting due to QA concerns: there are files installed outside the prefix
 * 
 * Call stack:
 *   misc-functions.sh, line 1877:  Called install_qa_check
 *   misc-functions.sh, line  253:  Called install_qa_check_prefix
 *   misc-functions.sh, line  900:  Called die
 * The specific snippet of code:
 *   			die 

 * 
 * If you need support, post the output of `emerge --info '=sys-libs/ncurses-5.9-r02.1'`,
 * the complete build log and the output of `emerge -pqv '=sys-libs/ncurses-5.9-r02.1'`.
 * The complete build log is located at '/Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/temp/build.log'.
 * The ebuild environment file is located at '/Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/temp/environment'.
 * Working directory: '/Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/image'
 * S: '/Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/work/ncurses-5.9'
!!! post install failed; exiting.

>>> Failed to emerge sys-libs/ncurses-5.9-r02.1, Log file:

>>>  '/Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/temp/build.log'

 * Messages for package sys-libs/ncurses-5.9-r02.1:

 * ERROR: sys-libs/ncurses-5.9-r02.1 failed:
 *   Aborting due to QA concerns: there are files installed outside the prefix
 * 
 * Call stack:
 *   misc-functions.sh, line 1877:  Called install_qa_check
 *   misc-functions.sh, line  253:  Called install_qa_check_prefix
 *   misc-functions.sh, line  900:  Called die
 * The specific snippet of code:
 *   			die "Aborting due to QA concerns: there are files installed outside the prefix"
 * 
 * If you need support, post the output of `emerge --info '=sys-libs/ncurses-5.9-r02.1'`,
 * the complete build log and the output of `emerge -pqv '=sys-libs/ncurses-5.9-r02.1'`.
 * The complete build log is located at '/Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/temp/build.log'.
 * The ebuild environment file is located at '/Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/temp/environment'.
 * Working directory: '/Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/image'
 * S: '/Users/karma/gentoo/var/tmp/portage/sys-libs/ncurses-5.9-r02.1/work/ncurses-5.9'

 * GNU info directory index is up-to-date.

 * IMPORTANT: 2 news items need reading for repository 'gentoo_prefix'.
 * Use eselect news to read news items.

ioss-macbook:~ karma$ 

Install slocate on OS X

karma

OS X used to ship with a version of locate which, when running locate.updatedb would throw a message warning that building the locate db as root could expose the location of all files to any user. As of Lion (10.7) this warning is no longer shown but I haven't found anything which would indicate it's no longer true. Combined with a few other limitations, a case can be made for installing slocate if Spotlight is just not for you.

Slocate has been the standard on Linux distributions for years, though it is losing favour to the more efficient mlocate. What they have in common is that the database is meant to be built as root and it includes ownership and permission information so lesser-priviledged users running m/slocate only get to see the files they have access to. To get slocate running on your mac you may choose to compile it from source or go the lazy route as I have and grab a binary distribution of it from MacPorts.

First, install MacPorts, available at http://www.macports.org/. Open a terminal session. If /opt/local/bin is not a part of your PATH cd there then run:

$ sudo ./port install slocate

Now that locate is installed it will be necessary to create the "slocate" group before creating the database or you will encounter an error like this:

slocate: warning: Could not find the group: slocate in the /etc/group file.
slocate: fatal error: This is a result of the group missing or a corrupted group file.

It is possible to create a new group from the command line with dscl but it requires you to choose a group number. To be tidy and use the internally incrementing group number let's create the group by opening System Preferences > Users & Groups. Click the lock to make changes. Click the + button under the user list. Select Group from the New dropdown. Type 'slocate' and click the "Create Group" button. Once the group has been created add your account to it by clicking the checkbox next to your avatar in the Membership list.

Now we need to create the initial database:

$ sudo slocate -u

If you want your slocate database to update automatically add the contents of /opt/local/etc/daily.slocate to /etc/daily.local or /etc/weekly.local, excluding the line #!/bin/sh - if one already exists.

If you try to use slocate as a regular user (which has been added to the slocate group) in any currently open shells you will encounter the error message:

slocate: fatal error: search_db: open: '/opt/local/var/db/slocate/slocate.db': Permission denied

terminate the shell and start a new one; the old instance of bash was not aware of your account being a part of the new slocate group.

SFTP File-System Abstraction in OS X with OSXFUSE and SSHFS

karma

One of the things I love about KDE is kio's built in, long-time support for sftp:// and fish:// SSH file system abstraction. It lets kdelibs applications like KATE and Konqueror manage files remotely as though they are on the local computer. This saves mountains of time when, for example, working on a live website.

The same kind of functionality can be implemented system-wide with FUSE on Linux and fortunately the same is true for OS X.

First, download and install FUSE for OS X at http://osxfuse.github.com/. FUSE for OS X is a descendent of the abandoned MacFUSE project, be sure to include the MacFUSE abstraction layer during installation.

Now download and install the SSHFS package at https://github.com/osxfuse/sshfs/downloads.

Open Terminal then create a mount point for the remote filesystem and mount it like so:

$ mkdir ~/Documents/remote
$ sshfs user@address:/path ~/Documents/remote

Now you can browse and modify the mounted filesystem in Finder or any other OS X application.

The Twitter XML/JSON Feed API Transition Situation

karma

A few weeks ago Twitter stopped supporting this URL convention to grab XML feeds of a user's timeline:

http://twitter.com/statuses/user_timeline/{{SCREEN_NAME}}.(xml|json)

Fortunately, it's still possible to fix your apps with a drop-in replacement, which was probably always considered the "right way" to grab them anyway:

https://api.twitter.com/1/statuses/user_timeline.(xml|json)?screen_name={{SCREEN_NAME}}

The bad news is it doesn't look like this will work for long. REST API 1 is now deprecated and the new REST API 1.1 is set to replace it any day now:

Version 1 of the REST API is now deprecated and will cease functioning in the coming months. Migrate to version 1.1 today.

Unfortunately, this migration path isn't as easy as just dropping in a new URL. It appears even the read-only timeline XML/JSON feed requires an OAuth authentication token.

Documentary for Dinner: Britain's Nazi King (2011)

karma

National Geographic explores declassified FBI files on King Edward VIII, Nazi sympathiser and alleged collaborator.