Hi again Laszlo,

I thought I would revisit the conversation in 918075. Since then, I think we have had additional features in 2.7.x. At the moment, I believe this is a list of things we could support in dar on Debian but aren't:

zstd compression
lz4 compression
multithreading
delta compression (librsync)
remote repository (libcurl)
argon2 hashing (libargon)
Python library

Necessary libraries for all of these except multithreading are in Debian already.

If I might summarize the situation:

- There is concern that some of these libraries are not available in static versions in Debian, and thus dar_static can't be built with them.

- On the other hand, we are now at a point where Debian's dar is incapable of extracting quite a few archives made by dar on other platforms (or locally-compiled dar). dar_static is of little use if it can't unpack the archive anyhow. zstd and delta compression, in particular, are two quite compelling features that we are lacking.

I propose:

1) Packaging up threadar

2) Pick one of:

2a) Enabling all libraries in the dynamic version, and as many as possible in the static version, and document the situation;

2b) Take an approach like exim4-daemon-heavy vs. exim4-daemon-light, and provide a dar-light and a dar-heavy binary package, which differ in what libraries are linked in.

2c) Enable all libraries in the dynamic version, and drop dar-static entirely.

I volunteer to do the work. I would be happy to package up and maintain threadar, and to send you patches for dar, be a co-maintainer for dar, or take over maintaining dar, whatever you may prefer.

As for which option 2 we choose, my preference is 2c, followed by 2a. I think that a light vs. heavy package is overkill in this situation (exim did this because the "heavy" package really did bring in significant heavy libraries like SQL and such).

Comparing with other similar packages on the system:

- GNU tar, at /bin/tar, is dynamically linked but calls external archivers as a separate process and therefore doesn't link them in.

- bsdtar, at /usr/bin/bsdtar, is dynamically linked and has a very similar set of libraries it would use compared to dar. bsdtar's own libarchive is linked in, as well as liblz4, libzstd, libbz2, liblzma, libacl, etc. bsdtar is a multi-archive program, supporting multiple flavors of tar, pax, cpio, shar, iso9660, zip, ar, mtree, 7z, cab, lha, rar, warc, and xar, so it is quite capable of creating formats that can't be extraced by standard Debian base system tools.

- fsarchiver has its own format, and its linking approach is like bsdtar. dynamically-linked only, links libbz2, liblzo2, liblz4, libzstd, liblzma, libgcrypt, etc.

- p7zip uses a linking approach similar to GNU tar, dynamic only

- unrar is dynamic only

- cpio is dynamic only

- afio is dynamic only

- borgbackup is Python-only and also depends on libzstd1

- rdiff-backup is Python-only and also depends on librsync2

- duplicity is Python-only and also depends on librsync2

So what I'm trying to say here is that I can't find any other backup/archiving tool on Debian that limits itself to what is possible in a static binary, or even ships a static binary in the first place. Given the existence of Debian Live images, it should be easy enough for someone wanting to be able to extract a dar archive to make that happen even with a completely wiped system. All of these other tools make that assumption as well.

Ultimately, I don't want Debian's dar to be unable to unpack dar archives because we are restricting the feature set so tightly to what we can put in dar-static.

Thanks,

John

Reply via email to