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