December 23rd, 2007 Michael Clarke
As I was browsing the Gentoo forums earlier today I found a tool that I’ve not used before which looks really useful. Quite often I wonder what packages depend on others in the portage tree…. but no longer.
mikes-computer ~ # equery depends graphviz
[ Searching for packages depending on graphviz… ]
app-doc/doxygen-1.5.4 (!nodot? >=media-gfx/graphviz-2.6)
media-gfx/imagemagick-6.3.5.10 (graphviz? >=media-gfx/graphviz-2.6)
media-libs/libdvbpsi-0.1.5 (doc? media-gfx/graphviz)
Other cool things this little tool does include:
Listing all the packages that own a given file… For example, if I run the following on /usr/bin/gvim I get the following results telling me that the package app-editor/gvim-7.1.164 owns the file /usr/bin/gvim.
mikes-computer ~ # equery belongs /usr/bin/gvim
[ Searching for file(s) /usr/bin/gvim in *… ]
app-editors/gvim-7.1.164 (/usr/bin/gvim)
Another example is if I do a equery belongs on /etc/resolv.conf which doesn’t belong to any particular package:
mikes-computer ~ # equery belongs /etc/resolv.conf
[ Searching for file(s) /etc/resolv.conf in *… ]
Another useful feature of this tool is the ability to find out what files a package owns….
mikes-computer ~ # equery files gvim
[ Searching for packages matching gvim… ]
* Contents of app-editors/gvim-7.1.164:
/etc
/etc/vim
/etc/vim/gvimrc
/usr
/usr/bin
/usr/bin/eview -> gvim
/usr/bin/evim -> gvim
/usr/bin/gview -> gvim
/usr/bin/gvim
/usr/bin/gvimdiff -> gvim
/usr/bin/rgview -> gvim
/usr/bin/rgvim -> gvim
/usr/share
/usr/share/applications
/usr/share/applications/gvim.desktop
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/gview.1.bz2 -> vim.1.bz2
/usr/share/man/man1/gvim.1.bz2 -> vim.1.bz2
/usr/share/man/man1/gvimdiff.1.bz2 -> vimdiff.1.bz2
/usr/share/pixmaps
/usr/share/pixmaps/gvim.xpm
I have to admit that I’ve been most impressed with this tool. It can also do a few other things such as listing all the packages with a given use flag:
mikes-computer ~ # equery hasuse mmx
[ Searching for USE flag mmx in all categories among: ]
* installed packages
[I–] [ ~] net-misc/asterisk-1.2.21.1-r1 (0)
[I–] [ ~] media-sound/mpg123-1.0_rc2 (0)
[I–] [ ~] media-video/ffmpeg-0.4.9_p20070616-r2 (0)
[I–] [ ~] media-video/mplayer-1.0_rc2_p24929 (0)
[I–] [ ~] media-gfx/inkscape-0.45.1-r1 (0)
[I–] [ ~] media-gfx/gimp-2.4.2 (2)
[I–] [ ] media-tv/xawtv-3.95-r1 (0)
Overall this is a really great tool, and if you don’t have it then you can get it by emerging the gentoolkit…. which I found out by:
mikes-computer ~ # which equery
/usr/bin/equery
mikes-computer ~ # equery belongs /usr/bin/equery
[ Searching for file(s) /usr/bin/equery in *… ]
app-portage/gentoolkit-0.2.4_pre8 (/usr/bin/equery)
Posted in Gentoo, Linux, Operating Systems, Technology | No Comments »
December 22nd, 2007 Michael Clarke
Many people tell me that they have issues when running a emerge world on Gentoo to keep their system up to date. I have long argued that the problems are simply because they don’t run the updates regularly enough, and if they were to run updates every week they wouldn’t have these problems.
Unfortunately I have fallen foul of my own advice and haven’t run updates in a couple of weeks. This is now resulting in the following error:
* ERROR: gnome-extra/evolution-data-server-1.12.2-r1 failed.
* Call stack:
* ebuild.sh, line 46: Called src_compile
* environment, line 3397: Called gnome2_src_compile
* environment, line 2573: Called die
* The specific snippet of code:
* emake || diefunc “$FUNCNAME” “$LINENO” “$?” “compile failure”
* The die message:
* compile failure
*
* If you need support, post the topmost build error, and the call stack if
* relevant.
* A complete build log is located at ‘/var/tmp/portage/gnome-extra/evolution
* -data-server-1.12.2-r1/temp/build.log’.
* The ebuild environment file is located at ‘/var/tmp/portage/gnome-extra/
* evolution-data-server-1.12.2-r1/temp/environment’.
When you hit errors like this there are a number of things that should and can easily be done which 99% of the time will fix the problem. The first is to actually check the logs! The number of times I read the Gentoo forums and people don’t post the true topmost build error is unbelievable. Read the error and read the logs:
michaelfclarke@mikes-computer ~ $
cat /var/tmp/portage/gnome-extra/evolution-data-server-1.12.2-r1/temp/build.log \
| grep -i error
checking for library containing strerror… none required
mode, hide preprocessor errors, passes: stubs skels common headers
mode, hide preprocessor errors, passes: stubs skels common headers
/bin/sh ../../libtool –tag=CC –mode=compile x86_64-pc-linux-gnu-gcc
-DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../src -I../../src -I../../src/libical
-I../../src/libical -I. -DPACKAGE_DATA_DIR=\”"/usr/share/evolution-data-server-1.12″\”
-I/usr/include/db4.5 -O2 -pipe -MT icalerror.lo -MD -MP -MF .deps/icalerror.Tpo -c
-o icalerror.lo icalerror.c
x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../src -I../../src
-I../../src/libical -I../../src/libical -I.
-DPACKAGE_DATA_DIR=\”/usr/share/evolution-data-server-1.12\” -I/usr/include/db4.5
-O2 -pipe -MT icalerror.lo -MD -MP -MF .deps/icalerror.Tpo -c icalerror.c -fPIC -DPIC
-o .libs/icalerror.o
mv -f .deps/icalerror.Tpo .deps/icalerror.Plo
/bin/sh ../../libtool –tag=CC –mode=link x86_64-pc-linux-gnu-gcc -O2 -pipe
-version-info 0:0:0 -o libical-evolution.la icalderivedparameter.lo
icalderivedproperty.lo icalrestriction.lo icalderivedvalue.lo icalarray.lo icalattach.lo
icalcomponent.lo icalenums.lo icalerror.lo icalmemory.lo icalmime.lo icalparameter.lo
icalparser.lo icalproperty.lo icalrecur.lo icaltime.lo icaltz-util.lo icaltimezone.lo
icalduration.lo icalperiod.lo icaltypes.lo icalvalue.lo pvl.lo sspm.lo vsnprintf.lo
icallangbind.lo caldate.lo -lpthread
x86_64-pc-linux-gnu-ar cru .libs/libical-evolution.a .libs/icalderivedparameter.o
.libs/icalderivedproperty.o .libs/icalrestriction.o .libs/icalderivedvalue.o
.libs/icalarray.o .libs/icalattach.o .libs/icalcomponent.o .libs/icalenums.o
.libs/icalerror.o .libs/icalmemory.o .libs/icalmime.o .libs/icalparameter.o
.libs/icalparser.o .libs/icalproperty.o .libs/icalrecur.o .libs/icaltime.o
.libs/icaltz-util.o .libs/icaltimezone.o .libs/icalduration.o .libs/icalperiod.o
.libs/icaltypes.o .libs/icalvalue.o .libs/pvl.o .libs/sspm.o .libs/vsnprintf.o
.libs/icallangbind.o .libs/caldate.o
x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -I. -I.. -I../src -I../src
-I../src/libical -I../src/libical -I/usr/include/db4.5 -O2 -pipe -MT errors.o
-MD -MP -MF .deps/errors.Tpo -c -o errors.o errors.c
mv -f .deps/errors.Tpo .deps/errors.Po
/bin/sh ../libtool –tag=CC –mode=link x86_64-pc-linux-gnu-gcc -O2 -pipe
-o doesnothing access_components.o
access_properties_and_parameters.o errors.o main.o parse_text.o
../src/libical/libical-evolution.la ../src/libicalss/libicalss-evolution.la
../src/libicalvcal/libicalvcal-evolution.la -lpthread
x86_64-pc-linux-gnu-gcc -O2 -pipe -o doesnothing access_components.o
access_properties_and_parameters.o errors.o
main.o parse_text.o ../src/libical/.libs/libical-evolution.a
../src/libicalss/.libs/libicalss-evolution.a
../src/libicalvcal/.libs/libicalvcal-evolution.a -lpthread
mode, hide preprocessor errors, passes: stubs skels common headers
mode, hide preprocessor errors, passes: stubs skels common headers
x86_64-pc-linux-gnu-gcc -O2 -pipe -Wall -Wmissing-prototypes -Wno-sign-compare
-o .libs/create-account create-account.o
-pthread -Wl,-R/usr/lib64/nspr ../../libedataserver/.libs/libedataserver-1.2.so
-L/usr/lib64/nspr -L/usr/lib64/lib
/usr/lib64/libdb-4.5.so /usr/lib64/libsoup-2.2.so -L/usr/lib64 -lnsl
/usr/lib64/libgnutls.so /usr/lib64/libtasn1.so
/usr/lib64/libgcrypt.so /usr/lib64/libgpg-error.so /usr/lib64/libxml2.so -lz
-lm /usr/lib64/libbonobo-2.so
/usr/lib64/libbonobo-activation.so /usr/lib64/libORBitCosNaming-2.so
/usr/lib64/libgconf-2.so /usr/lib64/libORBit-2.so /usr/lib64/libgmodule-2.0.so
/usr/lib64/libgthread-2.0.so -lrt /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so
-lplds4 -lplc4 -lnspr4 -ldl -lpthread
x86_64-pc-linux-gnu-gcc -O2 -pipe -Wall -Wmissing-prototypes -Wno-sign-compare
-o .libs/soap-test soap-test.o -pthread -Wl,-R/usr/lib64/nspr -L/usr/lib64
./.libs/libegroupwise-1.2.so -L/usr/lib64/nspr /usr/lib64/libsoup-2.2.so -lnsl
/usr/lib64/libgnutls.so /usr/lib64/libtasn1.so /usr/lib64/libgcrypt.so
/usr/lib64/libgpg-error.so /usr/lib64/libxml2.so -lz -lm /usr/lib64/libbonobo-2.so
/usr/lib64/libbonobo-activation.so /usr/lib64/libORBitCosNaming-2.so
/usr/lib64/libgconf-2.so /usr/lib64/libORBit-2.so /usr/lib64/libgmodule-2.0.so
/usr/lib64/libgthread-2.0.so -lrt /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so
-lplds4 -lplc4 -lnspr4 -ldl -lpthread
make[4]: *** [create-account] Error 1
make[4]: *** [soap-test] Error 1
make[3]: *** [all] Error 2
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
* ERROR: gnome-extra/evolution-data-server-1.12.2-r1 failed.
* If you need support, post the topmost build error, and the call stack if relevant.
michaelfclarke@mikes-computer ~ $
Reading the above nothing stood out that much so I decided to do a grep for warning instead…
michaelfclarke@mikes-computer ~ $
cat /var/tmp/portage/gnome-extra/evolution-data-server-1.12.2-r1/temp/build.log \
|grep -i warning
configure: WARNING: krb5 support disabled
checking what warning flags to pass to the C compiler… -Wall -W missing-prototypes
e-data-server-module.c:86: warning: dereferencing type-punned pointer will break strict-aliasing rules
e-data-server-module.c:89: warning: dereferencing type-punned pointer will break strict-aliasing rules
e-data-server-module.c:92: warning: dereferencing type-punned pointer will break strict-aliasing rules
broken-date-parser.c:125: warning: pointer targets in assignment differ in signedness
…
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../x86_64-pc-linux-gnu/bin/ld: warning: libgnutls.so.13,
needed by /usr/lib64/libsoup-2.2.so, not found (try using -rpath or -rpath-link)
Ah! The last line of the output seemed to be the problem. My first idea was to simply create a symlink and see what happens:
ln -s /usr/lib64/libgnutls.so.26 /usr/lib64/libgnutls.so.13
This failed to work. Instead I then tried to re-emerge libsoup. This worked and my original emerge then proceeded with no errors
>>> /usr/share/doc/evolution-data-server-1.12.2-r1/TODO.bz2
* Installing GNOME 2 GConf schemas
* Reloading GConf schemas … [ ok ]
* Updating desktop mime database …
* Updating shared mime info database …
* Updating icons cache … [ ok ]
>>> Regenerating /etc/ld.so.cache…
>>> gnome-extra/evolution-data-server-1.12.2-r1 merged.
>>> No packages selected for removal by clean
The upshot of all this is - keep your system up to date and remember to read the log files.
Posted in Gentoo, Linux, Operating Systems, Technology | No Comments »