A lightweight Linux packaging system and portable package manager for distributing applications across distributions using a standard .lpk format.
lpack is a production-ready package tool built to simplify Linux application distribution.
It provides:
- A lightweight portable package format
- Easy package building
- Clean install/remove workflows
- Portable app deployment
- Minimal dependencies
- Manifest-driven packaging
The package format used is:
.lpk
NOTE:
.lpkis a compressed archive with a small obfuscated manifest.
- Build portable
.lpkpackages - Install packages locally or system-wide
- Remove installed packages cleanly
- Search installed packages
- Desktop entry support
- Symlink executable management
- Version-aware installation and upgrades
- Minimal Rust-based implementation
lpack packages are composed of:
- A compressed archive
- Application files and resources
- A small obfuscated manifest for metadata
The builder:
- Reads
manifest.lpack - Collects application files
- Generates metadata
- Packages everything into
.lpk
The installer:
- Extracts the package
- Reads the obfuscated manifest
- Installs files
- Creates executable symlinks
- Writes desktop entries
The remover:
- Removes installed files and directories
- Removes symlinks
- Removes desktop entries cleanly
- Rust 1.70+ (stable)
- Linux
git clone https://github.com/bytesketch/lpack.git
cd lpackmake buildThe compiled binary is available at:
target/release/lpack
make installlpack build # CWDor
lpack build /path/to/projectlpack build . --silentlpack install app.lpksudo lpack install app.lpk --system-wideDon't do
sudo lpack install app.lpk # NOTE: Here is no '--system-wide'If done, remove immedietly by
sudo lpack search
sudo lpack remove package.app # NOTE: replace package.app with real packagelpack remove my-packagesudo lpack remove my-package --system-widelpack searchlpack search my-packageNOTE: To search system-wide installed packages, add
--system-wide. The default scans local installations.
manifest.lpack
Example:
{
"package": {
"name": "My App",
"package": "my-app",
"version": "1.0.0",
"authors": ["yourname"]
},
"description": "Example lpack application",
"build_path": "build",
"app": {
"binary": "bin/my-app",
"entry": "myapp"
},
"desktop": {
"name": "My App",
"icon": "res/icon.png",
"exec": "my-app --gui"
},
"include": {
"README.md": "docs/README.md"
}
}- Simplicity
- Minimalism
- Cross-distro portability
- Easy developer workflow
- Clean package management
- Fully scriptable
Current limitations include:
- No dependency resolution
- No remote repositories
- No package signing
- No sandboxing
- No delta updates
- No automatic updates
- No rollback support
- Rust
- Clap
- Serde
- Zip
- WalkDir
This project was built to simplify Linux application distribution with a portable packaging format.
It is designed as:
- A practical package manager
- A distro-agnostic packaging tool
- A Linux application distribution helper
You can install .lpk packages locally or system-wide with:
sudo lpack install app.lpk --system-wideContributions, ideas, and fixes are welcome.
Feel free to:
- Open issues
- Suggest improvements
- Fork the project
- Test on different distros
MIT License. See LICENSE for full info.
Ali Ahmad @bytesketch
Built with Rust and Linux tooling.