Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dimkr/packsiz

A tiny, hackable and secure package manager
https://github.com/dimkr/packsiz

embedded embedded-devices embedded-scripting-language embedded-systems lightweight package package-manager packages scriptable-object

Last synced: 2 months ago
JSON representation

A tiny, hackable and secure package manager

Awesome Lists containing this project

README

        

_ _
_ __ __ _ ___| | _____(_)____
| '_ \ / _` |/ __| |/ / __| |_ /
| |_) | (_| | (__| <\__ \ |/ /
| .__/ \__,_|\___|_|\_\___/_/___|
|_|

Overview
========

packsiz is a tiny, lightweight, hackable and permissively-licensed package
manager for Linux (https://www.kernel.org/) distributions.

packsiz is a re-implementation of packlim (https://github.com/dimkr/packlim) in
szl (https://github.com/dimkr/szl) rather than Tcl
(https://github.com/msteveb/jimtcl/).

Features
========
Recursive dependencies resolution
# packsiz install mutt ||
[12/02 20:21:07]: verifying the package list \/
[12/02 20:21:07]: building the package installation queue
[12/02 20:21:07]: iana-etc is already installed (!)
[12/02 20:21:07]: linux-libre-headers is already installed (!)
[12/02 20:21:07]: musl is already installed (!)
[12/02 20:21:07]: ncurses is already installed (!)
[12/02 20:21:07]: zlib is already installed (!)
[12/02 20:21:07]: ca-certificates is already installed (!)
[12/02 20:21:07]: libressl is already installed (!)
[12/02 20:21:07]: downloading fetchmail, msmtp and mutt
[12/02 20:21:07]: (reading fetchmail-6.3.26.pkg) /\
[12/02 20:21:07]: verifying fetchmail-6.3.26.pkg ||
[12/02 20:21:07]: registering fetchmail ||
[12/02 20:21:07]: extracting fetchmail-6.3.26.pkg ||
[12/02 20:21:07]: (reading msmtp-1.6.2.pkg) ||
[12/02 20:21:07]: verifying msmtp-1.6.2.pkg Parallel download
[12/02 20:21:07]: registering msmtp of all packages
[12/02 20:21:07]: extracting msmtp-1.6.2.pkg in a dependency
[12/02 20:21:07]: (reading mutt-1.5.23.pkg) chain, before it
/> [12/02 20:21:07]: verifying mutt-1.5.23.pkg gets installed
|| [12/02 20:21:07]: registering mutt
|| [12/02 20:21:08]: extracting mutt-1.5.23.pkg
|| /\
Digitally-signed packages ||
||
Support for multiple compression algorithms

Automatic removal
# packsiz autoremove mutt /==== of unneeded packages
[12/02 20:24:53]: removing mutt \/
[12/02 20:24:53]: looking for unneeded packages
[12/02 20:24:53]: (libpcap cannot be removed; needed by tcpdump)
[12/02 20:24:53]: removing fetchmail
[12/02 20:24:53]: removing msmtp
[12/02 20:24:53]: (zlib cannot be removed; needed by libressl)
[12/02 20:24:53]: (ncurses cannot be removed; needed by nano)
[12/02 20:24:53]: (linux-libre-headers cannot be removed; needed by musl)
[12/02 20:24:53]: (tinyalsa cannot be removed; needed by mpg123)
[12/02 20:24:53]: (libressl cannot be removed; needed by fetchmail)
[12/02 20:24:53]: (musl cannot be removed; needed by libpcap)
[12/02 20:24:53]: (ca-certificates cannot be removed; needed by libressl)
[12/02 20:24:53]: (iana-etc cannot be removed; needed by musl)
[12/02 20:24:53]: (looking for more unneeded packages)
[12/02 20:24:53]: (libpcap cannot be removed; needed by tcpdump)
[12/02 20:24:53]: (zlib cannot be removed; needed by libressl)
[12/02 20:24:53]: (ncurses cannot be removed; needed by nano)
[12/02 20:24:53]: (linux-libre-headers cannot be removed; needed by musl)
[12/02 20:24:53]: (tinyalsa cannot be removed; needed by mpg123)
[12/02 20:24:53]: (libressl cannot be removed; needed by tcpdump)
[12/02 20:24:53]: (musl cannot be removed; needed by libpcap)
[12/02 20:24:53]: (ca-certificates cannot be removed; needed by libressl)
[12/02 20:24:53]: (iana-etc cannot be removed; needed by musl)

In addition, packsiz:
- Supports installation of packages to a prefix other than /
- Has a scripting interface

Scripting Interface
===================

packsiz allows complex package management tasks through an interactive scripting
shell or scripts, using a szl API in the "packsiz" namespace.

For example:

1) To list the packages available in a repository:
$packsiz.available http://repository {}

2) To remove a package:
$packsiz.remove ca-certificates [$packsiz.installed]

3) To remove all unneeded dependency packages:
$packsiz.cleanup

packsiz uses all API internally as well; see its implementation for more usage
examples.

Missing Features
================

- Support for multiple repositories - packsiz is designed for small
distributions with one repository per architecture
- Support for multiple architectures in one repository

Building
========

# git clone --recursive https://github.com/dimkr/packsiz
# cd packsiz
# meson build
# cd build
# ninja
# ninja install

Credits and Legal Information
=============================

packsiz 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/).