Linux, 工作, 生活, 家人

Gentoo

[Gentoo] 升級 KDE 4.9 的問題.

都什麼年代了, 還在手賤亂升 KDE 系統…..

不過習慣了. 整個系統都要慢慢編, 慢慢升上去.

這次升級完 KDE 4.9 之後, 系統進入 X 之後, 隨即跳出來, 並且出現錯誤訊息
這搞了我一天才一個一個找到方法解決, 在這邊做個記錄.

[TEXT]
startkde: Starting up…
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
kded(1018): Communication problem with “kded” , it probably crashed.
Error message was: “org.freedesktop.DBus.Error.NoReply” : ” “Message did not receive a reply (timeout by message bus)” ”

startkde: Shutting down…
klauncher: Exiting on signal 1
startkde: Running shutdown scripts…
startkde: Done.
xinit: connection to X server lost
[/TEXT]

這個問題呢, 只要 emerge world 就可以解決了
[BASH]
# emerge -uDNv world
[/BASH]
ref. kde 4.9 failed to start

接下來 emerge world, 碰到編 crypto++ Library 的問題, (這段是放別人的, 不過原理是一樣的)
[TEXT]
serpent.lo esign.lo randpool.lo -lpthread
libtool: link: x86_64-pc-linux-gnu-g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/crtbeginS.o .libs/sharkbox.o .libs/base32.o .libs/files.o .libs/hex.o .libs/gzip.o .libs/fips140.o .libs/mars.o .libs/dh2.o .libs/twofish.o .libs/eprecomp.o .libs/dsa.o .libs/polynomi.o .libs/winpipes.o .libs/vmac.o .libs/hrtimer.o .libs/md2.o .libs/fipstest.o .libs/rc5.o .libs/ccm.o .libs/simple.o .libs/queue.o .libs/xtrcrypt.o .libs/gf256.o .libs/cmac.o .libs/authenc.o .libs/des.o .libs/default.o .libs/idea.o .libs/gcm.o .libs/squaretb.o .libs/xtr.o .libs/emsa2.o .libs/sha.o .libs/network.o .libs/eax.o .libs/tea.o .libs/dessp.o .libs/algparam.o .libs/pch.o .libs/crc.o .libs/elgamal.o .libs/mqueue.o .libs/zlib.o .libs/ecp.o .libs/blowfish.o .libs/marss.o .libs/adler32.o .libs/wait.o .libs/iterhash.o .libs/safer.o .libs/wake.o .libs/gf2n.o .libs/rc2.o .libs/cryptlib_bds.o .libs/oaep.o .libs/square.o .libs/md4.o .libs/ida.o .libs/shark.o .libs/seed.o .libs/shacal2.o .libs/eccrypto.o .libs/ripemd.o .libs/camellia.o .libs/pubkey.o .libs/trdlocal.o .libs/salsa.o .libs/seal.o .libs/luc.o .libs/ttmac.o .libs/gf2_32.o .libs/mqv.o .libs/dh.o .libs/bfinit.o .libs/whrlpool.o .libs/asn.o .libs/rng.o .libs/cast.o .libs/tiger.o .libs/channels.o .libs/zinflate.o .libs/pssr.o .libs/misc.o .libs/pkcspad.o .libs/base64.o .libs/zdeflate.o .libs/basecode.o .libs/algebra.o .libs/blumshub.o .libs/ec2n.o .libs/casts.o .libs/gfpcrypt.o .libs/cryptlib.o .libs/rijndael.o .libs/strciphr.o .libs/modes.o .libs/panama.o .libs/nbtheory.o .libs/md5.o .libs/hmac.o .libs/socketft.o .libs/gost.o .libs/tigertab.o .libs/cbcmac.o .libs/tftables.o .libs/rsa.o .libs/rdtables.o .libs/rw.o .libs/3way.o .libs/rabin.o .libs/filters.o .libs/cpu.o .libs/sosemanuk.o .libs/integer.o .libs/rc6.o .libs/skipjack.o .libs/osrng.o .libs/arc4.o .libs/dll.o .libs/serpent.o .libs/esign.o .libs/randpool.o -lpthread -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3 -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../x86_64-pc-linux-gnu/lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../lib64/crtn.o -Wl,-O1 -Wl,–as-needed -pthread -pthread -Wl,-soname -Wl,libcrypto++.so.0 -o .libs/libcrypto++.so.0.0.0
x86_64-pc-linux-gnu-g++: error: /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../lib64/crti.o: No such file or directory
x86_64-pc-linux-gnu-g++: error: /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/crtbeginS.o: No such file or directory
x86_64-pc-linux-gnu-g++: error: /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/crtendS.o: No such file or directory
x86_64-pc-linux-gnu-g++: error: /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../lib64/crtn.o: No such file or directory
make: *** [libcrypto++.la] Error 1
[/TEXT]

原來以為是 libtool 要用 fix_libtool_files.sh 去修正它, 不過還是沒有用, 最後用了一個很鳥的方式解決, 就是重新編 libtool
[BASH]
# emerge -av libtool
[/BASH]

ref.
Cannot compile amule due to crypto++

接下來就是碰到編 sys-auth/polkit-kde-agent 的問題
[TEXT]
Linking CXX executable polkit-kde-authentication-agent-1
/usr/bin/cmake -E cmake_link_script CMakeFiles/polkit-kde-authentication-agent-1.dir/link.txt –verbose=1
/usr/bin/x86_64-pc-linux-gnu-g++ -march=core2 -O2 -pipe -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-check-new -fno-common -Woverloaded-virtual -fno-threadsafe-statics -fvisibility=hidden -Werror=return-type -fvisibility-inlines-hidden -Wl,–enable-new-dtags -Wl,-O1 -Wl,–as-needed CMakeFiles/polkit-kde-authentication-agent-1.dir/polkit-kde-authentication-agent-1_automoc.o CMakeFiles/polkit-kde-authentication-agent-1.dir/policykitkde.o CMakeFiles/polkit-kde-authentication-agent-1.dir/policykitlistener.o CMakeFiles/polkit-kde-authentication-agent-1.dir/main.o CMakeFiles/polkit-kde-authentication-agent-1.dir/AuthDialog.o CMakeFiles/polkit-kde-authentication-agent-1.dir/polkit1authagentadaptor.o -o polkit-kde-authentication-agent-1 -rdynamic -L/usr/lib64/qt4 /usr/lib64/libkdeui.so.5.8.0 -lpolkit-qt-gui-1 -lpolkit-qt-core-1 -lpolkit-qt-agent-1 /usr/lib64/libkdecore.so.5.8.0 /usr/lib64/qt4/libQtDBus.so /usr/lib64/qt4/libQtCore.so -lpthread /usr/lib64/qt4/libQtGui.so /usr/lib64/qt4/libQtSvg.so -Wl,-rpath,/usr/lib64/qt4:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../x86_64-pc-linux-gnu/bin/ld: warning: libattica.so.0.3, needed by /usr/lib64/libkdeui.so.5.8.0, not found (try using -rpath or -rpath-link)
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Person::~Person()’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Provider::~Provider()’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Person::city() const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Person::extendedAttribute(QString const&) const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::ItemJob::result() const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Metadata::~Metadata()’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::ProviderManager::ProviderManager()’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Person::country() const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::ProviderManager::providers() const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Provider::name() const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Provider::Provider()’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Person::avatarUrl() const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::ProviderManager::loadDefaultProviders()’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Metadata::error() const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::ProviderManager::~ProviderManager()’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::BaseJob::start()’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::ProviderManager::providerByUrl(QUrl const&) const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Provider::isValid() const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Provider::requestPerson(QString const&)’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Person::homepage() const’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::Provider::operator=(Attica::Provider const&)’
/usr/lib64/libkdeui.so.5.8.0: undefined reference to `Attica::BaseJob::metadata() const’
collect2: ld returned 1 exit status
[/TEXT]

這個內文也是拿別人的, 不過原理還是一樣, 解決方式是重編 kdelib
[BASH]
# emerge -av kdelib
[/BASH]

ref.
[solved] polkit-kde-agent versus libattica

如果 emerge world 有中斷, 解決完問題之後, 可以加上 r 參數從斷掉的地方接下去編, 就不用每次都重來了
[BASH]
# emerge -uDNvr world
[/BASH]
編到超過一半應該就可以試著重新啟動 KDE 了.

發佈留言