View previous topic :: View next topic |
Author |
Message |
Lu Tze n00b
Joined: 21 Nov 2005 Posts: 22 Location: Tugadogalong
|
Posted: Tue Oct 11, 2016 3:13 am Post subject: eix showing question mark in package status [SOLVED] |
|
|
I have a problem with eix which started a while ago but I didn't pay attention to it until it became a nuisance. Eix shows a question mark for the status of many packages, both in portage and in overlays:
Code: |
$ ~> eix qt-creator
[?] dev-qt/qt-creator
Available versions: 3.6.1 ~4.0.3 **9999 {android autotools baremetal bazaar clang clangcodemodel clangstaticanalyzer clearcase cmake cvs doc git glsl ios mercurial perforce python qbs qnx subversion systemd test valgrind webengine webkit winrt LINGUAS="cs de fr ja pl ru sl uk zh_CN zh_TW"}
Installed versions: 4.0.3(13:21:07 12/07/16)(android autotools baremetal clangcodemodel clangstaticanalyzer cmake doc git glsl ios python valgrind webkit -bazaar -clearcase -cvs -mercurial -perforce -qbs -qnx -subversion -systemd -test -webengine -winrt LINGUAS="-cs -de -fr -ja -pl -ru -sl -uk -zh_CN -zh_TW")
Homepage: http://doc.qt.io/qtcreator/
Description: Lightweight IDE for C++/QML development centering around Qt
$ ~>
|
Code: |
$ ~> eix virtual/blas
[?] virtual/blas
Available versions: 1.0 ~2.1-r5[1] ~3.6 {doc int64 ABI_X86="32 64"}
Installed versions: 2.1-r5[1](11:10:55 06/10/16)(int64 -doc ABI_X86="32 64")
Description: Virtual for FORTRAN 77 BLAS implementation
[1] "science" /var/lib/layman/science
|
It seems to correctly recognise that packages have been installed from overlays because it is showing [1] after the installed version (so the problem is *not* like the one described here: https://forums.gentoo.org/viewtopic-t-876633-start-0.html. It is more like this one: https://archives.gentoo.org/gentoo-amd64/message/bd1419622b36a97766a165e3acbb59fe. I have layman set up to use repos.conf, but I don't think it's layman's fault (question marks show up next to packages from portage as well). It's almost like eix can't determine whether the package has been installed, even though it seems to know which repo the installed version comes from.
I have run eix-update -a /var/lib/layman/science many times, to no avail. This is the output:
Code: |
# ~> eix-update -a /var/lib/layman/science/
Reading Portage settings...
Building database (/var/cache/eix/portage.eix)...
[0] "gentoo" /usr/portage/ (cache: metadata-md5-or-flat)
Reading category 169|169 (100) Finished
[1] "science" /var/lib/layman/science (cache: assign)
Reading category 169|169 (100) Finished
Applying masks...
Calculating hash tables...
Writing database file /var/cache/eix/portage.eix...
Database contains 19909 packages in 169 categories.
|
I would appreciate any ideas as to what the cause for this might be. _________________ "My brother sent me a postcard the other day with this big satellite photo of the entire Earth on it. On the back it said: "Wish you were here"" - Steven Wright
Last edited by Lu Tze on Wed Oct 19, 2016 11:03 pm; edited 1 time in total |
|
Back to top |
|
|
thumper Guru
Joined: 06 Dec 2002 Posts: 552 Location: Venice FL
|
Posted: Tue Oct 11, 2016 11:45 pm Post subject: |
|
|
I've never seen eix do that, do you use eix-sync?
Code: | layman -S && eix-sync && emerge -pvuD world --with-bdeps=y |
I run that when I want to see if there is anything to update, and I've never noticed anything strange with eix except for the one time I ran emerge --sync and then the eix data was not in sync with portage.
YMMV
George |
|
Back to top |
|
|
Lu Tze n00b
Joined: 21 Nov 2005 Posts: 22 Location: Tugadogalong
|
Posted: Wed Oct 12, 2016 12:28 am Post subject: |
|
|
I usually run emerge --sync and eix-update -a /var/lib/layman/science manually because eix-sync doesn't pick up the fact that I have an overlay (this is a separate issue which I have been ignoring). In saying that, I have tried running eix-sync as well, but the result is the same. _________________ "My brother sent me a postcard the other day with this big satellite photo of the entire Earth on it. On the back it said: "Wish you were here"" - Steven Wright |
|
Back to top |
|
|
Lu Tze n00b
Joined: 21 Nov 2005 Posts: 22 Location: Tugadogalong
|
Posted: Wed Oct 19, 2016 12:28 pm Post subject: |
|
|
It seems that eix is marking testing versions (~) with [?], for example:
Code: |
$ ~> eix kde-apps/libkipi
[?] kde-apps/libkipi
Available versions:
(4) 15.08.3-r1(4/15.08)
(5) 16.04.3(5/31) ~16.08.2(5/31)
{aqua debug}
Installed versions: 16.08.2(5)(21:31:49 19/10/16)(-debug)
Homepage: https://www.kde.org/
Description: A library for image plugins accross KDE applications
|
The status is [?], but after downgrading to stable version 16.04.3...
Code: |
$ ~> eix kde-apps/libkipi
[I] kde-apps/libkipi
Available versions:
(4) 15.08.3-r1(4/15.08)
(5) 16.04.3(5/31) ~16.08.2(5/31)
{aqua debug}
Installed versions: 16.04.3(5)(23:17:35 19/10/16)(-debug)
Homepage: https://www.kde.org/
Description: A library for image plugins accross KDE applications
|
...eix shows [I].
Could this be related to my profile? Not sure why eix would have trouble with unstable versions... _________________ "My brother sent me a postcard the other day with this big satellite photo of the entire Earth on it. On the back it said: "Wish you were here"" - Steven Wright |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Wed Oct 19, 2016 10:31 pm Post subject: |
|
|
You have probably misconfigured portage: The unstable versions you have installed are not marked unstable in your package.accept_keywords. That's why a fresh emerge of the package would install a lower version. Have you perhaps done a stupid thing like installing with ACCEPT_KEYWORDS='~amd64' being set temporarily?
Similarly, if your /etc/portage/repos.conf is set up correctly (and you do not override it with PORTDIR_OVERLAY), eix will automatically see the overlay; do not use -a. |
|
Back to top |
|
|
Lu Tze n00b
Joined: 21 Nov 2005 Posts: 22 Location: Tugadogalong
|
Posted: Wed Oct 19, 2016 10:43 pm Post subject: |
|
|
Thank you for your reply, mv.
Unstable packages are inserted in package.accept_keywords, e.g., I have dev-qt/qt-creator ~amd64 in /etc/portage/package.accept_keywords/x86. I never install anything with temporary ACCEPT_KEYWORDS='~amd64'.
This is my repos.conf/gentoo.conf:
Code: |
[DEFAULT]
main-repo = gentoo
[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
#sync-uri = rsync://rsync3.jp.gentoo.org/gentoo-portage
#sync-uri = rsync://rsync16.de.gentoo.org/gentoo-portage
#sync-uri = rsync://rsync.au.gentoo.org/gentoo-portage
auto-sync = yes
|
and my repos.conf/layman.conf:
Code: |
[science]
priority = 50
location = /var/lib/layman/science
layman-type = git
sync-type = laymansync
sync-uri = https://anongit.gentoo.org/git/proj/sci.git
auto-sync = Yes
|
The science overlay doesn't get picked up by eix unless I explicitly add it with -a. _________________ "My brother sent me a postcard the other day with this big satellite photo of the entire Earth on it. On the back it said: "Wish you were here"" - Steven Wright |
|
Back to top |
|
|
Lu Tze n00b
Joined: 21 Nov 2005 Posts: 22 Location: Tugadogalong
|
Posted: Wed Oct 19, 2016 11:03 pm Post subject: |
|
|
Ahem, my own paranoia seems to have played a bad trick on me again.
mv's comment pointed me in the right direction. It turns out that the directories package.accept_keywords and repos.conf (as well as some others in /etc/portage) had permissions set to 700, which is probably the result of creating them manually when I migrated my package.keywords to package.accept_keywords/x86 and from make.conf entries to separate files under repos.conf. The thing is that I have set the default umask for new directories for root to 077, so these directories (and everything under them!) were created with permissions 700. I changed the permissions to 755 and now eix works as expected:
Code: |
$ ~> eix qt-creator
[I] dev-qt/qt-creator
Available versions: 3.6.1 (~)4.0.3 **9999 {android autotools baremetal bazaar clang clangcodemodel clangstaticanalyzer clearcase cmake cvs doc git glsl ios mercurial perforce python qbs qnx subversion systemd test valgrind webengine webkit winrt LINGUAS="cs de fr ja pl ru sl uk zh_CN zh_TW"}
Installed versions: 4.0.3(13:21:07 12/07/16)(android autotools baremetal clangcodemodel clangstaticanalyzer cmake doc git glsl ios python valgrind webkit -bazaar -clearcase -cvs -mercurial -perforce -qbs -qnx -subversion -systemd -test -webengine -winrt LINGUAS="-cs -de -fr -ja -pl -ru -sl -uk -zh_CN -zh_TW")
Homepage: http://doc.qt.io/qtcreator/
Description: Lightweight IDE for C++/QML development centering around Qt
|
and even picks up layman.conf:
Code: |
# ~> eix-update
Reading Portage settings...
Building database (/var/cache/eix/portage.eix)...
[0] "gentoo" /usr/portage/ (cache: metadata-md5-or-flat)
Reading category 169|169 (100) Finished
[1] "science" /var/lib/layman/science (cache: assign)
Reading category 169|169 (100) Finished
Applying masks...
Calculating hash tables...
Writing database file /var/cache/eix/portage.eix...
Database contains 19927 packages in 169 categories.
|
Sorry to waste everyone's time. Moral of the story: check your directory permissions! _________________ "My brother sent me a postcard the other day with this big satellite photo of the entire Earth on it. On the back it said: "Wish you were here"" - Steven Wright |
|
Back to top |
|
|
Tony0945 Watchman
Joined: 25 Jul 2006 Posts: 5127 Location: Illinois, USA
|
Posted: Wed Oct 19, 2016 11:22 pm Post subject: |
|
|
Lu Tze wrote: | Sorry to waste everyone's time. Moral of the story: check your directory permissions! |
'S,okay! It teaches us all a lesson we may have forgotten. |
|
Back to top |
|
|
A.S. Pushkin Guru
Joined: 09 Nov 2002 Posts: 418 Location: dx/dt, dy/dt, dz/dt, t
|
Posted: Tue Feb 13, 2018 4:46 pm Post subject: eix showing question mark in package status |
|
|
I've run into this [?] and wondered about it, but still do not understand. In fact this has raised more questions.
Do we do an emerge --sync or eix-sync to update portage?
TIA _________________ ASPushkin
"In a time of universal deceit - telling the truth is a revolutionary act." -- George Orwell |
|
Back to top |
|
|
qsmodo Tux's lil' helper
Joined: 20 Jun 2021 Posts: 82
|
Posted: Sun Sep 19, 2021 12:40 am Post subject: Re: eix showing question mark in package status |
|
|
A.S. Pushkin wrote: | I've run into this [?] and wondered about it, but still do not understand. In fact this has raised more questions.
Do we do an emerge --sync or eix-sync to update portage? |
Yes, I also have just run into into it. I thought emaint -a sync (or emerge --sync) sufficed, but eix needs its own update (see the CheatSheet: https://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet). After eix-sync the question marks are gone.
My hypothesis: Eix looks at the installed packages and what it deems the current version is. If the former is ahead of the latter, it won't arrogantly claim that your package is the wrong version, but instead admit it cannot tell it (because it might not be updated, which in my case was true) by marking it with "?". |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Sun Sep 19, 2021 6:09 am Post subject: Re: eix showing question mark in package status |
|
|
qsmodo wrote: | My hypothesis: Eix looks at the installed packages and what it deems the current version is. |
Yes, eix uses its own database of "available" packages. That's why it is so fast. The database must be updated with eix-update (or better with eix-postsync if you also want to use eix-diff against the current database). You can put eix-postsync into a portage hook so that this automatically happens when you call emerge --sync, or you can call eix-sync (which origins from a time when those portage hooks were not available and also deals better with eix upgrades involving a major database change - the latter did not happen since years).
However, besides the "available" packages, eix looks also at your current configuration and your installed packages.
Quote: | If the former is ahead of the latter. |
That's not the point. The point is whether in your current configuration the installed package version (or a higher one) could be re-installed (according to the information which eix uses, of course). |
|
Back to top |
|
|
cboldt Veteran
Joined: 24 Aug 2005 Posts: 1046
|
Posted: Sun Sep 19, 2021 9:09 am Post subject: |
|
|
FWIW, my systems connect the `emerge --sync` and `eix-update` steps, but do not use eix-sync to update the portage tree.
The two steps are linked at /etc/portage/repo.postsync.d/egencache
I don't recall where this script originated, most of it isn't mine. It's been changed so as to enable the `eix-diff` function, and to quiet the output during operation of eix-update.
Code: | #!/bin/sh
# Example /etc/portage/repo.postsync.d script. Make it executable (chmod +x) for
# Portage to process it.
#
# With portage-2.2.16 and newer, all repo.postsync.d hooks will be called multiple
# times after syncing each repository.
#
# Older versions of Portage support syncing only one repository.
# In those versions, the postsync.d hooks will be called only once,
# and they will not be passed any parameters.
# On a repo.postsync.d hook call, positional parameters contain
# information about the just-synced repository.
# Your hook can control it's actions depending on any of the three
# parameters passed in to it.
#
# They are as follows:
#
# The repository name.
repository_name=${1}
# The URI to which the repository was synced.
sync_uri=${2}
# The path to the repository.
repository_path=${3}
# Portage assumes that a hook succeeded if it exits with 0 code. If no
# explicit exit is done, the exit code is the exit code of last spawned
# command. Since our script is a bit more complex, we want to control
# the exit code explicitly.
ret=0
if [ -n "${repository_name}" ]; then
# Repository name was provided, so we're in a post-repository hook.
printf " ** [/etc/portage/repo.postsync.d/egencache]\n"
printf " ** In post-repository hook for repository ${repository_name}\n"
printf " ** synced from remote repository ${sync_uri}\n"
printf " ** synced into ${repository_path}\n"
# Gentoo comes with pregenerated cache but the other repositories
# usually don't. Generate them to improve performance.
if [ "${repository_name}" != "gentoo" ]; then
if ! egencache --update --repo="${repository_name}" --jobs=4
then
echo "!!! egencache failed!"
ret=1
fi
else
if [ -x /usr/bin/eix-update ] ; then
printf " ** Now running eix-update ...\n"
cp -a /var/cache/eix/portage.eix /var/cache/eix/previous.eix
NOSTATUSLINE=true eix-update -q
# eix-update
printf " -------\n %(%c)T\n" -1
fi
fi
fi
# Return explicit status.
exit "${ret}" |
|
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Sun Sep 19, 2021 9:33 am Post subject: |
|
|
cboldt wrote: | The two steps are linked at /etc/portage/repo.postsync.d/egencache |
IMHO this is the wrong hook for eix-update, because the main repository (repository name "gentoo") is usually not the last repository for which the hook is called. So the repositories for which egencache has not yet still have outdated information in the generated database. IMHO, it is better to use instead the postsync.d hook like this:
Code: | md /etc/portage/postsync.d
ln -sfn /usr/bin/eux-postsync /etc/portage/postsync.d |
|
|
Back to top |
|
|
cboldt Veteran
Joined: 24 Aug 2005 Posts: 1046
|
Posted: Sun Sep 19, 2021 7:02 pm Post subject: |
|
|
Very good point, and I should have been more thoughtful in response.
I agree repos.postsync.d is not the right hook, and that postsync.d is correct.
Either one just happens to work in my circumstance which has no auto update of ANY repo beyond "gentoo." The stage 3 tarball includes the repos.postsync.d directory, and with the parameters being passed, this (incorrect) location has more flexibility in the long run
Funny thing is, last week I had a mix (four machines here, an extra in use as I migrate a LAN of three from x86 to amd64) of executable script, most in postsync.d and one in repos.postsync.d. I decided to make them all common/the same, sticking with the folders in the stage 3 tarball. |
|
Back to top |
|
|
|