anom/transpkg
1
1
Fork
You've already forked transpkg
0
Tiny Transitional Package Management
  • Nim 51.2%
  • Python 46.2%
  • Makefile 2.1%
  • Shell 0.5%
Find a file
2026年07月12日 22:18:45 +02:00
assets
atule
doc
transpkg Require newer version of anomlib 2026年07月12日 22:18:45 +02:00
.gitignore
AdiffFormat.org
atule.nimble
config.nims
LICENSE
Makefile
package Add some convenient symlinks 2026年07月11日 23:22:37 +02:00
Plugins.org
project.geany
README.org
requirements.txt

Tiny Transitional Package Management

https://img.shields.io/badge/justforfunnoreally-dev-9ff.svg https://img.shields.io/badge/License-GPL_v3_or_later-blue.svg

GPL version 3 plus

https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg https://codeberg.org/ashleyirispuppy/pages/raw/branch/main/images/pr.svg?v=5

https://codeberg.org/ashleyirispuppy/pages/raw/branch/main/images/trans-badge.svg https://codeberg.org/ashleyirispuppy/pages/raw/branch/main/images/free-Palestine.svg

hi
Transpkg's icon with the Back And Forth Symbol inside.

👷 The library is not ready for general use at the moment. 🏗️

Transpkg will look for all diferences btw packages to creates an intermidiate package. This "transitional package" can be used for restoring new version from the old package and vise versa. Instead of downloading "updates" we can download "differential updates" instead to make things faster.

Transpkg's 3 stages are already planned and i'm excited to see when will come up the first.

Transpkg will be available as library and simple enough to use it inside another python project or write plugins for it.

Transpkg supposed to be upen's sub-project, for managing differential updates. Unfortunally upen requires morph or i hope will use my nvfs (which is my new experimental project) to work, for complex flexibale API support. Transpkg is much simpler and will work on its own just with common utils like tar and diff.

How Transpkg will work?

  • Transpkg will unpack old and new packages
  • Hash each file to know if there are files that can be reused later
  • Get metadata: e.i. privs, ownership, time and date, etc.
  • Get order in which files were added in tars. It may help us restoring tars with the original hash
  • If your restore metadata and file order, original hash should remain untouched (in theory), however it may be complicated
  • At the end transpkg creates transitional package (AKA Differential Update) which can be 10x smaller.
  • Created mid package can be shared on the internet as update (a patch package)
  • On the other side downloaded transpkg can be applied to construct new package from the old one and vise versa.
  • Having old or new package together with mid package is as good as having both old and new packages (but saved a lot of space)

What features are planned

Reusing old packages

  • To use differential updates you have to tell your Current Version to the Updates' Provider. When usually we re telling only which Version you wanna download and update to.
  • The reciever may declare what old versions they have locally
  • This will help speeding up the downloading process

Restoring Missing Package's known files

  • Each package that goes thru transpkg will be unpacked.
  • Also, each upacked package and its files will be hashed and reused later.
  • If reused package is missing, its content's hashes are known.
  • This feature will let us continue the work (even if pkg is missing) as long as pkg's required files are available in cache

Why Atule?

  • Atool is amazing, but is 12 years outdated...
  • Note: It's not planned to be an alternative for the Atool!
  • But Upen gonna need this Tiny Archive Management
  • For Differential Updates Upen did required atool --diff command
  • But Atool is outdated. It does not support Zstd yet, when tar does
  • Well, The Atool2 (which is Atool's fork) actually supports Zstd
  • Also the output with 'Unpack-9999/' is terrible .__.
  • We had to unpack tar archive one more time just to fix Atool's output!!!
  • Atool is written in Perl, so We can't just import that as a library. :C😒😢🫠
  • Fixing Atool's output is not Sustainable

TODO Support

Atule should support

  • First well supported package format shall be .tar.gz as the most popular one
  • Auto-detect package's format.
  • Convert archive with any format into any another format
  • unpack two packages, check the differences and report all details.
  • make a Differential Package (that's btw two pkgs) with the same format (that first package has).
  • also Atule is a library, so you can manipulate with all functions to make more tools

Also thoughts about what Atule should support

  • Support `.iso` images, if we can.
  • diff updates should also support work with files and directories
  • since Unpacks are Dirs, we could check diffs btw two dirs!
  • check the DiffPDF out, is it possible to make a PatchPDF for it?