dimkr / packlim
Licence: MIT License
A small, hackable and secure package manager
Stars: ✭ 16
Programming Languages
_ _ _ _ __ __ _ ___| | _| (_)_ __ ___ | '_ \ / _` |/ __| |/ / | | '_ ` _ \ | |_) | (_| | (__| <| | | | | | | | | .__/ \__,_|\___|_|\_\_|_|_| |_| |_| |_| 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]<info >: verifying the package list \/ [22/12 19:04:00]<info >: building the package installation queue [22/12 19:04:00]<warn >: iana-etc is already installed (!) [22/12 19:04:00]<warn >: linux-libre-headers is already installed (!) [22/12 19:04:00]<warn >: musl is already installed (!) [22/12 19:04:00]<warn >: zlib is already installed (!) [22/12 19:04:00]<info >: downloading fuse, libseccomp, libwaive and luufs [22/12 19:04:00]<debug>: (reading libseccomp-2.2.3.pkg) /\ [22/12 19:04:00]<info >: verifying libseccomp-2.2.3.pkg || [22/12 19:04:00]<info >: registering libseccomp || [22/12 19:04:00]<info >: extracting libseccomp-2.2.3.pkg || [22/12 19:04:00]<debug>: (reading libwaive-22122015.pkg) || [22/12 19:04:00]<info >: verifying libwaive-22122015.pkg Parallel download [22/12 19:04:00]<info >: registering libwaive of all packages [22/12 19:04:00]<info >: extracting libwaive-22122015.pkg in a dependency [22/12 19:04:00]<debug>: (reading fuse-2.9.4.pkg) chain, before it [22/12 19:04:00]<info >: verifying fuse-2.9.4.pkg gets installed [22/12 19:04:00]<info >: registering fuse [22/12 19:04:00]<info >: extracting fuse-2.9.4.pkg [22/12 19:04:00]<debug>: (reading luufs-22122015.pkg) [22/12 19:04:00]<info >: verifying luufs-22122015.pkg<=====Digitally-signed [22/12 19:04:00]<info >: registering luufs packages [22/12 19:04:01]<info >: extracting luufs-22122015.pkg /\ || Support for multiple compression algorithms # packlim autoremove luufs [22/12 19:04:07]<info >: removing luufs [22/12 19:04:07]<debug>: (removing unneeded packages)<=====Automatic removal [22/12 19:04:07]<info >: removing fuse of unneeded [22/12 19:04:07]<info >: removing libwaive packages [22/12 19:04:07]<info >: removing libseccomp 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: 1) To list the packages available in a repository: puts [packlim::available http://repository ""] 2) To remove a package: packlim::remove ca-certificates [packlim::installed] 3) To list the files contained in a tar archive: tar.list /path/to/tar 4) To download a file: curl get http://some/file /some/path 5) 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/).
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].