CL-TAR ProjectΒΆ

The CL-TAR project works on making tar files readable and writeable directly from Common Lisp, without shelling out to a tar executable. There are two sub projects under the CL-TAR umbrella.

The first is cl-tar-file. It defines a single ASDF system: tar-file. This project focuses on reading and writing physical tar file entries. It is a rather low-level library and it is expected that not many projects will use it directly.

The second is cl-tar. It defines several ASDF systems meant for use by other developers: tar, tar-simple-extract, and tar-extract. This project is a high level interface built on top of cl-tar-file. It reads and writes logical entries from/to tar files. Additionally, it contains code to interface with your file system.

Quickstart

You likely want to use cl-tar instead of cl-tar-file directly. Load it with:

(asdf:load-system "tar")

If you want to extract a tar archive on any CL implementation, without preserving all the metadata or symbolic links, run the following:

(asdf:load-system "tar-simple-extract")

(tar:with-open-archive (a "/path/to/file.tar")
  (tar-simple-extract:simple-extract-archive a :directory #p"/path/to/extraction/point/"))

If you want to extract a tar archive, attempting to preserve symbolic links and as much metadata as possible, evaluate the following. Note that this requires osicat to work on your OS and implementation.

(asdf:load-system "tar-extract")

(tar:with-open-archive (a "/path/to/file.tar")
  (tar-extract:extract-archive a :directory #p"/path/to/extraction/point/"))

cl-tar

The cl-tar repository is located at https://gitlab.common-lisp.net/cl-tar/cl-tar

The latest cl-tar release is v0.2.1, and the manual is here

The manuals for all releases of cl-tar can be found below:

cl-tar-file

The cl-tar-file repository is located at https://gitlab.common-lisp.net/cl-tar/cl-tar-file

The latest cl-tar-file release is v0.2.0, and the manual is here

The manuals for all releases of cl-tar-file can be found below: