作者sppmg (sppmg)
看板Linux
標題[問題] docker 中使用 kdevelop
時間Mon Nov 6 23:28:24 2017
我想用最新版,但不相容於我的舊系統的 kdevelop ,所以試著放在 docker 中使用。
但不知為何總是無法啟動。
docker 中使用的是 debian buster,為了硬體加速,nv 驅動也裝了。
glxgears 、 konsole 都可以開,就 kdevelop 不行。
請問要如何使用呢?
------------------
docker 啟動指令是:
docker run -ti --rm
-e DISPLAY=$DISPLAY
-v /tmp/.X11-unix:/tmp/.X11-unix
--device /dev/snd
--net=host
--shm-size 2g
fdc
執行後的錯誤訊息如下:
$ kdevelop
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-sppmg'
kdevplatform.serialization: version-hint not found, seems to be an old version
kdevplatform.serialization: "The data-repository at /home/sppmg/.cache/kdevduchain/kdevelop-{999c931b-ece1-4542-82dc-9c2fdaf9d6d3} has to be cleared."
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-sppmg'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-sppmg'
kdeinit5: Got EXEC_NEW '/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/man.so' from launcher.
kdeinit5: preparing to launch '/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/man.so'
Failed enumerating UDisks2 objects: "org.freedesktop.DBus.Error.Disconnected"
"Not connected to D-Bus server"
Failed enumerating UDisks2 objects: "org.freedesktop.DBus.Error.Disconnected"
"Not connected to D-Bus server"
...... (重複好幾次)
Segmentation fault
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.173.247
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1509982108.A.DFD.html
1F:推 LinBuoRen: 沒 DBus? 11/06 23:53
2F:推 lantw44: 嘗試把 $XDG_RUNTIME_DIR 指向的地方掛進去? 11/07 00:11
試過了,但 $XDG_RUNTIME_DIR 是空的,結果一樣。
3F:→ galic: 應該是container也要能連到host的dbus 11/07 00:27
--net=host
就是為了dbus 加的,參考網址如下:(抱歉,我就不特別縮了)
http://ask.projectatomic.io/en/question/3647/how-to-connect-to-session-dbus-from-a-docker-container/?answer=3648#post-id-3648
後來發現 docker 內的 dbus 沒啟動,在
/etc/init.d/dbus start
好像可以連上 dbus ,但仍會 Segmentation fault
(所以此時 dbus 是 host 的還是 container 的?)
※ 編輯: sppmg (36.231.173.247), 11/07/2017 14:23:13
4F:推 galic: 我剛閒著幫你測了一下 跟dbus沒關聯 我用跟你一樣的指令啟 11/07 18:32
5F:→ galic: 動 出現一樣的錯誤訊息 但是kdevelop 還是正常開啟 11/07 18:32
6F:→ galic: 你用gdb run看看 segmentation fault之後印一下backtrace 11/07 18:36
7F:→ sppmg: 太感謝了,我明天試試 11/08 00:22
8F:→ sppmg: 對了,今天想到會不會和host太舊有關? 我os是Debian 7 ,k 11/08 00:25
9F:→ sppmg: ernel 升到 3.16 ,不清楚 docker 虛擬化能否處理差異這麼 11/08 00:25
10F:→ sppmg: 大的情況 11/08 00:25
回報一下剛剛的測試結果:
gdb 執行結果:(完整結果請見
https://pastebin.com/d95yfCk8 )
Thread 1 "kdevelop" received signal SIGSEGV, Segmentation fault.
__memmove_sse2_unaligned_erms () at ../sysdeps/x86_64/multiarch/../multiarch/memmove-vec-unaligned-erms.S:325
325 ../sysdeps/x86_64/multiarch/../multiarch/memmove-vec-unaligned-erms.S: No such file or directory.
google :
memmove-vec-unaligned-erms.S: No such file or directory.
之後,看到
https://github.com/qTox/qTox/issues/3928
也有類似問題,疑似軟體一開始會播放音效,觸發 OpenAL bug (?)
mikevmk 提供的解法是
echo "enable-shm = no" >> /etc/pulse/client.conf
我照做了,並配合用 root 啟動 dbus + 以 user 啟動 pulseaudio --start 。
但結果仍然一樣。
(另外也參考過
https://stackoverflow.com/a/28985715 )
我的host os 是直接用 alsa ,沒有 pulse 。這樣會是問題點嗎?
也曾懷疑會不會是 buster 的 kdevelop 有 bug,
在 buster 上裝了 stretch 的 kdevelop (4:5.0.3-1+b1)
還是一樣的問題。
後來看到 docker hub 上有 yume190/kdevelop (不過是基於 debian:jessie )
測試後雖然有跳出視窗,但內容一片白。其錯誤訊息如下
X Error: BadShmSeg (invalid shared segment parameter) 159
Extension: 142 (MIT-SHM)
Minor opcode: 2 (X_ShmDetach)
Resource id: 0x6200013
Object::connect: No such signal org::freedesktop::UPower::DeviceAdded(QString)
Object::connect: No such signal org::freedesktop::UPower::DeviceRemoved(QString)
X Error: BadShmSeg (invalid shared segment parameter) 159
Extension: 142 (MIT-SHM)
Minor opcode: 3 (X_ShmPutImage)
Resource id: 0x620001b
前後是一堆的 X Error 。沒有 Segmentation fault ,但就是沒畫面。
請問 galic 大的 docker os 是哪個呢?如果安裝版本都一樣,或許真是我 host os
的問題,可能要找時間在 VM 裡面測 docker 了。
※ 編輯: sppmg (36.231.173.247), 11/08/2017 19:10:39
11F:推 galic: 跟no such file那行沒關係啦 那是gdb想要dump code給你看 11/08 20:00
12F:→ galic: 看325行長什麼樣子 但是你沒有抓source code所以跟你說沒有 11/08 20:01
13F:→ galic: 總之那不是重點 看起來是qt5和opengl出了狀況 11/08 20:01
14F:→ galic: 有可能container裡面的qt5太新了 跟host的x11配不上 11/08 20:02
15F:→ galic: 回到jessie那個,有run起來又繪製畫面,就代表已經成功一半 11/08 20:02
16F:→ galic: 你多加的-e QT_X11_NO_MITSHM=1 看看 11/08 20:03
太神啦~~
開出來了!看到啟動畫面那一刻超感動~~~
看來我的 debian 7 可以再戰十年了 XD
不過看來 qt/gui 部份也只能到 jessie 了 ...
我最後用的指令是這樣的:
$ docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e QT_X11_NO_MITSHM=1 \
yume190/kdevelop
(註:進去後要先 adduser )
剛剛看到 KDevelop 官網有提供 AppImage 可以直接下載。
我還沒測試能否使用。不過如果問題出在 container 和 host 的 x11 問題上,
可能還是無法使用。
非常感謝 galic 大的熱心幫忙!
等等!突然想到如果我用 VNC/ssh -X 等方式而不是用 -v /tmp/.X11-unix
能否執行呢?(我還不會用 -v 之外的方法,所以先隨口問了。)
※ 編輯: sppmg (36.231.173.247), 11/08/2017 23:47:50
17F:推 Hevak: 推很酷的問答流程XD 11/10 23:48