Explore the field guideDocumentationField guidesCommunitySearchStoreJournal

2023-08-29

Linglong: the original introduction to its origins and direction

An early account of package-manager evolution, Linglong’s design goals, dependency handling and the project’s proposed direction.

Preface: The Evolution of Package Managers

The Linux operating system has always been known for its open source nature and flexibility, and the most critical part of enabling a Linux system to successfully install and run the required software is Software Assurance Manager 。 

As the name suggests, a Linux package manager is a tool used to install, update, and uninstall software packages on the Linux operating system. Its history dates back to the 1990s, when Linux was in its infancy and software installation had to be done manually by downloading the source code and compiling it, which was a tedious and difficult task for non-technical users. In this case, dpkg and rpm were born. However, since dependencies cannot be automatically resolved, their use is still inconvenient. Until the release of Debian's apt and Red Hat's up2date, package manager usability has been greatly improved. They use an algorithm called a "dependency resolver" that automatically resolves dependencies between software packages, thereby simplifying the software installation and upgrade process. But this greatly increases the complexity on the other hand, and maintainers need to handle it very carefully. If you are not careful, you will fall into "dependency hell" and cause the software package system to malfunction.

In addition, there are many other package managers, such as yum, portage, pacman, etc. The diversity of package managers brings more choices to users, but the disadvantages are also very significant: Their packages cannot interoperate , which means that if a software is to be used on other distributions, it may need to be packaged repeatedly.

With the Linux kernel’s support for containers and the birth of Docker, a number of container-based package managers such as Snap and Flatpak have also begun to emerge. Software packages in this format are almost completely decoupled from the system environment and no longer rely on library files on the system (the same is true for AppImage), making application distribution gradually easier. However, problems such as high disk and memory usage and prolonged startup time have also arisen and have not yet been resolved.

Exploration: “Linyaps” came into being

Since deepin gave up Ubuntu as the upstream in 2015 and chose Ubuntu’s non-commercial upstream community Debian as the basis for research and development, we have received many users’ questions about software package management. Question feedback on , common ones include:

  • There are too few applications available on the system, and the available application versions are too old;
  • After system update, some applications cannot be used normally;
  • After installing certain applications obtained from other sources, ensure The processor cannot work properly, and the system may even become unusable.

The above problems have a common reason: Dependency binding is too strong 。 Due to the underlying library of the system, the application cannot be updated at will. When the interface of the underlying library changes, the application needs to be re-adapted to work properly.

After becoming aware of these issues, we started experimenting with a new package manager.
  • Adapt Snap on deepin: Due to many compatibility issues with Snap in systems other than Ubuntu, it was abandoned.
  • Convert some self-developed applications into AppImage: AppImage has good portability, and these applications can be easily used on other distributions. However, it does not have centralized repository storage and package management functions, nor does it provide the same level of sandbox as Snap and Flatpak. Its security cannot be guaranteed, and it is not suitable as the default package management method of the operating system.
  • In 2017, deepin followed up on the Flatpak format and completed 100+ software package construction work. However, due to various reasons such as large application size, excessive disk usage, and slow bug repair, it did not continue to adapt.

After experiencing various "frustrations" and based on our understanding of various package managers, we decided to design a software package management system ourselves.

After more than 3 months of technical research, more than 1 year of prototype verification, technical solution improvement and product polishing, Finally a set of advanced solutions - "Linyaps" came into being.

Top-level component diagram:

Linglong: the original introduction to its origins and direction — source illustration

  • Application sandbox (ll-box): An application sandbox operating environment designed in accordance with OCI standards. It uses the kernel Cgroup and Namespace features to isolate applications from the host environment and limit the use of system resources.
  • Application management service (ll-service/ll-cli): Provides functions such as creating application sandbox environments and handling system compatibility issues. Complete the installation status/running status management of the application.
  • Rights management proxy service (ll-dbus-proxy/ll-fuse-proxy): Provides rights management functions, including DBus interface and file interface.
  • Application building tool (ll-builder): Provides a containerized application building environment to facilitate developers to build consistent applications in different environments.
  • Individual packaging format (uab/AppBundle): Uniontech Application Bundle, application package packaging format, provides a binary package format that can be directly run.
  • Repository system (ll-repo-server): Provides package upload , download, information statistics, query and other functions, the underlying storage uses OSTree.
Run view:

Linglong: the original introduction to its origins and direction — source illustration

Achievements: Solved compatibility issues and greatly improved performance

Previously, the construction of domestic software ecosystem was still immature, and software compatibility and security issues frequently occurred. When packaging and distributing applications to different operating systems, a lot of extra time and resources were consumed.

The emergence of Linyaps undoubtedly provides new ideas for solving this problem. Linyaps' isolation technology can completely decouple applications and systems, thereby completely solving compatibility issues caused by upgrades between systems and applications, and between applications and applications, while reducing the number of packaging times for distribution under different operating systems.

Linglong: the original introduction to its origins and direction — source illustration

Traditional architecture Vs Linyaps architecture

Compared with other similar software package formats, Linyaps has many advantages in startup speed and resource usage:
  • Using non-full runtime (host system + Runtime), the overall size is smaller;
  • Due to the reuse of libraries on the host system, some library files that have been loaded into the memory can be used, and the startup speed will be faster. The startup speed of the same application under Linyaps is significantly improved;
  • Provide development library hosting service, similar to NuGet, to facilitate developers to develop;
  • Support Rootless (unprivileged) sandbox.

Software package size statistics:

Linglong: the original introduction to its origins and direction — source illustration

Software package startup time-consuming statistics:

Linglong: the original introduction to its origins and direction — source illustration

Future: Promote the healthy development of operating system software package ecosystem

In the future, we will further strengthen and optimize Linyaps in terms of permission control, user interaction and the number of available software.
1. Permission control Currently, Linyaps file access permissions are relatively single. It can only handle the mounting of directories before the application is started. Unmounted directories cannot be accessed by the application after startup. In the future, dynamic management and control of file access permissions will be supported, which can be managed whether the application is started or not. At the same time, the control center will simultaneously adapt to the permission management and control of Linyaps and provide an application permission management interface.

2. User interaction

Currently, the update of Linyaps application requires users to manually update the command line, which requires a certain Linux foundation. And when there is a problem with the software package, the information about the build source, such as the hash value of the git project, cannot be directly queried.

In the future, the App Store will support Linyaps app updates. It also supports traceability, which allows developers to quickly query the hash value of the source file used by the software package, making it easier to track and solve problems.

3. Software package ecology

Ecological construction requires everyone's joint efforts. We are currently developing related software package conversion tools, which can easily convert existing deb, appimage and other format software packages into Linyaps applications. At the same time, we are also promoting the adaptation of existing cooperative software manufacturers to Linyaps.

Instead of walking alone, it is better to walk together. Ecological construction requires the joint efforts of everyone.

We sincerely hope that Linyaps can solve the problem of difficult application distribution for multiple distributions. We also look forward to more interested friends joining us to build an application distribution system and contribute to the healthy development of the operating system software ecosystem.

English edition: Linglong editorial · 18 October 2026. Original publication: 2023-08-29.