我正在尝试做的事情:我正在尝试从源代码构建我自己的完整 KDE 并以我的普通用户身份运行它,而无需从系统中更改它。问题:如果不将整个系统更改为始终只运行该软件,我似乎无法运行我构建的软件。
根据我从文档第 2.5.1 节的理解,这得到了很好的支持。kdesrc-build 将安装一个登录驱动程序,以便登录管理器找到一个适当的设置来运行等离子会话,该会话运行在我的安装前缀中构建的软件。我无法开箱即用地完成这项工作——SDDM 不会看到已安装的脚本,但我可以通过将plasma.desktop
kdesrc-build 安装的文件链接到我的 /usr/share/xsession 文件夹来轻松地工作。这让 SDDM 可以看到我的会话。
不幸的是,这仍然无法运行我从源代码构建的 KDE。这样做的原因是,虽然这会从我构建的软件启动 init 序列,但启动序列(如在plasma/plasma-workspace/startkde/plasma-session/startup.cpp 及其朋友中)只会添加安装前缀对于一开始的一些命令,所以它会运行我构建的 startkde 但很快它就会恢复到 from$PATH
并且似乎没有人设置该变量。在我看来,一些环境脚本应该这样做(kde-env-master.sh 看起来是个不错的候选者)
所以我作弊,安排登录脚本设置$PATH
为包含我构建的软件的bin目录。但这还不够——我构建的二进制文件现在将尝试从系统中加载库,这些库不是他们构建的对象。init 文件中有一些引用设置$LD_LIBRARY_PATH
为包含我构建的库所在的目录,但出于安全原因$LD_LIBRARY_PATH
,经常重置(实际上,一旦 init 序列删除权限,就会发生这种情况),因此在环境脚本实际上被忽略了。
我可以设置我的 ldconfig 来查找我构建的这些库——但这是系统范围的,所以如果我这样做,使用我的发行版安装的稳定软件运行的正常会话将尝试使用我构建的库,这充其量是危险的主意。
所有这些都表明我做错了什么,但我不知道是什么。毕竟,文档说运行会话是正确的方法,kdesrc-build
安装登录驱动程序,有文件可以将我构建的前缀中内置的环境设置为正确的目录,所有这些似乎都很好地集成了但是当我尝试这样做我发现一个又一个问题,所以我只能假设我没有做对。
我应该如何设置一个运行我定制的 KDE 的会话,而不影响我的发行版安装的常规会话?
注意:在 Debian 测试和 kdesrc-build 20.06 上运行它
您必须运行
~/kde/build/plasma-workspace/login-sessions/install-sessions.sh
安装您的 kde 构建会话:
https ://community.kde.org/Get_Involved/development#Plasma_Desktop
这可能是一个问题,仍然(对我而言)。如果遇到它们,请向 kde bugtracker 报告。