As a maintainer of a source-based Linux distribution I have tried multiple times throughout the years to add some form of binary package management extension to my distribution. However, these attempts were clear indicators that binary package management cannot be implemented as an after thought and require a clean and well-thought design if they were to be successful. This led me to the design of the following experimental Linux distribution, a playground where I could learn the fine details of binary package management and distribution without disrupting the users of my actual distribution.

Design

Package Manager

Command Line Interface

The package manager's name is quite simple, it is called bpm which simply stands for Binary Package Manager. Since this project is planned to be temporary I am not planning on adding many bells and whistles to the command line interface, and I am planning a simple, and straightforward user interface similar to the package manager of Alpine Linux:

Command Function
bpm add Install packages
bpm search Search package
bpm del Remove packages
bpm update Update package index
bpm upgrade Upgrade installed packages

Package Distribution Repository

  1. Package Identifier Format

    Field Name Type
    Name string
    Version string
    Release int
    Dependencies strarray
    Description string
    SPDX License Identifier string/enum
    Maintainer string
    Repository string
    Package Commit URL string

Source Repository

Build Server

Distribution Server