6.3 KiB
Common Runtime Issues
-
Why does the application fail to read resource files under
/usr/shareduring runtime?Linyaps applications run in a container environment where application data is mounted under
/opt/apps/<appid>/. The/usr/sharedirectory only contains system data, not application-related data. Therefore, directly reading from/usr/sharewill fail. Recommended solution: Use theXDG_DATA_DIRSenvironment variable to read resources, as/opt/apps/<appid>/files/sharewill be included in this environment variable's search path. -
Why can't the application find font library files at runtime? Why could it read the corresponding font libraries when installed as a
debpackage?When installing a
debpackage, the corresponding font library files are brought in as dependencies. However, the Linyaps package format uses a self-sufficient packaging approach. Except for basic system libraries and theQtandDTKlibraries provided in theruntime, all other dependency data files must be provided by the application itself. It is recommended to place the corresponding data files underfiles/shareand use theXDG_DATA_DIRSenvironment variable to read the path. -
What's in the Linyaps application
runtime? Can I add some library files to it?Currently, the
runtimethat Linyaps applications depend on providesQtlibraries andDTKlibraries. Due to strict size limitations on theruntime, adding additional library files to theruntimeis currently not allowed. -
Can the application create configuration files in any path within the container during runtime?
Configuration files can be created under
XDG_CONFIG_HOME. -
Where is application data saved? Where can it be found outside the container?
As Linyaps applications follow the principle of non-interference, the
XDG_DATA_HOME,XDG_CONFIG_HOME, andXDG_CACHE_HOMEenvironment variables are defined to correspond to paths under the host's~/.linglong/<appid>/. Therefore, user application data will be saved in this path, and applications should read the corresponding environment variables when writing data during runtime. Reading and writing configurations of other applications is prohibited. -
The application provides a
dbus servicefile, how should it be placed? What should be written in theExecfield?When the application provides a
dbus servicefile, it needs to be placed in theentries/dbus-1/servicesdirectory. IfExecexecutes a binary within the Linyaps package, use the--execoption parameter to execute the corresponding binary. -
The launcher cannot find the application after installation?
TryExec=xxx, when xxx does not exist in the $PATH, the application will be considered non-existent and will not be displayed.
-
Why is the icon displayed as a small black dot?
The desktop file has an Icon field, but the Icon field name is incorrect or an absolute path is used.
-
Why is the icon displayed as a gear?
The desktop file does not provide an Icon field.
-
Where should icons be stored?
svg → $PREFIX/share/icons/hicolor/scalable/apps/
Other formats are stored by resolution, such as 16x16
png/xpm → $PREFIX/share/icons/hicolor/16X16/apps/
-
Why do the application's built-in
xdg-openandxdg-emailfail?Linyaps specially handles
xdg-openandxdg-emailin theruntime, so applications are prohibited from executing their own xdg-open and xdg-email executables or scripts. -
Why doesn't the system environment variable used by the application take effect?
When using environment variables, you need to confirm whether the corresponding environment variable exists in the container. If not, you need to contact the Linyaps team for handling.
-
The library files needed for application runtime are not found, how to provide them?
Resource files and library files that the application needs to use must be provided by the application itself. Library files should be placed under the
$PREFIX/libpath. -
Why does the
Qt WebEnginerendering process crash during application runtime?Due to system upgrades of
glibc, applications fail when using the built-in browser and need to be re-adapted. A temporary solution is to set the environment variable:export QTWEBENGINE_DISABLE_SANDBOX=1. -
The application cannot find the
libqxcb.solibrary or reports qtwebengine errors at runtime?When a
qt.conffile exists, configure the correct path in the file, or use environment variablesQTWEBENGINEPROCESS_PATH,QTWEBENGINE_RESOURCES_PATH,QT_QPA_PLATFORM_PLUGIN_PATH,QT_PLUGIN_PATHto configure the search path. -
Can the application carry its own database files and write data to the database during runtime?
The file system inside the container is a read-only file system, and writing data to application resource files is not allowed.
-
Why does executing binaries with
suid,guidpermissions fail?To ensure system security, Linyaps containers prohibit the execution of such privileged binaries.
-
UAB offline package format cannot use input method under Debian and Ubuntu?
It is recommended to install the
fictxinput method for better experience. -
How to know which packages are installed in the container environment?
Use
ll-builder run --exec bashto enter the container environment, and use the commandcat /var/lib/dpkg/status | grep "^Package: "to view pre-installed packages. Additionally, libraries compiled from source can be viewed usingcat /runtime/packages.list. -
Why doesn't the application tray display after the application starts?
This may be because the application registered the tray using the same service name. According to the KDE/freedesktop StatusNotifierItem specification, applications should register service names as org.kde.StatusNotifierItem-
<process id>-<instance number>. In Linyaps applications, the pid during application runtime is 19. You can check whether a service has been registered using the following command:dbus-send --session --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.NameHasOwner string:org.kde.StatusNotifierItem-19-1. Ifboolean trueexists, it means the service has been registered.