packlim
packlim copied to clipboard
A small, hackable and secure package manager
_ _ _
_ __ __ _ | | | () __ ___
| ' \ / |/ __| |/ / | | '_ _
| |) | (| | (| <| | | | | | | |
| ./ _,|___||__||| || ||
||
Overview
packlim is a small, lightweight, hackable and permissively-licensed package manager for Linux (https://www.kernel.org/) distributions.
packlim's performance-critical parts are written in C and the rest (mostly logic and I/O) in written in Tcl, using Jim (http://jim.tcl.tk/). Native code provides speed and parallelism, while exceptions and garbage collection improve error handling and resource efficiency. Also, the use of a scripting language greatly reduces the amount of code.
packlim is the successor to packlad (https://github.com/dimkr/packlad), which tries to achieve the same goals using C code alone.
Features
Recursive dependencies resolution
packlim install snownews ||
[22/12 19:04:00]
[22/12 19:04:00]
||
Support for multiple compression algorithms
packlim autoremove luufs
[22/12 19:04:07]
In addition, packlim:
- Supports installation of packages to a prefix other than /
- Has a scripting interface
Scripting Interface
packlim allows complex package management tasks, using a Tcl API in the "packlim" namespace. In addition, it wraps the libraries it depends on with Tcl commands.
For example:
-
To list the packages available in a repository: puts [packlim::available http://repository ""]
-
To remove a package: packlim::remove ca-certificates [packlim::installed]
-
To list the files contained in a tar archive: tar.list /path/to/tar
-
To download a file: curl get http://some/file /some/path
-
To remove all unneeded dependency packages: packlim::cleanup
packlim uses all API internally as well; see its implementation for more usage examples.
Missing Features
- Support for multiple repositories - packlim is designed for small distributions with one repository per architecture
- Support for multiple architectures in one repository
Dependencies
- libarchive (http://libarchive.org/) with support for:
- lzip (http://www.nongnu.org/lzip/lzip.html)
- XZ (http://tukaani.org/xz/)
- gzip (https://www.gnu.org/software/gzip/)
- libcurl (http://curl.haxx.se/)
Ed25519 (https://github.com/orlp/ed25519) and jimtcl (http://jim.tcl.tk/) are embedded into packlim's source code as submodules.
Building
git clone --recursive https://github.com/dimkr/packlim
cd packlim
make
make install
Hacking
packlim is implemented as jimtcl (http://jim.tcl.tk/) C extensions, Tcl logic and a C wrapper for everything.
packlim follows jimtcl's coding style conventions.
Credits and Legal Information
packlim is free and unencumbered software released under the terms of the MIT license; see COPYING for the license text. For a list of its authors and contributors, see AUTHORS.
The ASCII art logo at the top was made using FIGlet (http://www.figlet.org/).