pnafs

PNA-FS

Portable-Network-Archive Filesystem

PNA-FS is a virtual filesystem that allows users to mount their PNA file and interact with it as a regular disk partition.

Requirements

PNA-FS requires the stable branch of the Rust programming language, which can be installed following the instructions on rustup.rs. If you already have Rust installed, make sure that it is updated to the latest version (≥1.76):

$ rustup update stable

MacOS

On MacOS, PNA-FS requires macfuse and pkg-config:

$ brew install pkg-config; brew install --cask macfuse

Ubuntu

On Ubuntu, PNA-FS requires libfuse-dev and pkg-config:

sudo apt-get install -y libfuse-dev pkg-config

SUSE

sudo zypper install -y fuse-devel fuse rust pkgconf-pkg-config

Other linux distros

Make sure you have pkg-config and the fuse library installed. These are usually found in the package repositories of major distributions.

FreeBSD

Rust can be installed via the lang/rust port. You will need to install sysutils/fusefs-libs for the cairo install command to succeed.

Installation

After all requirements are met, PNA-FS can be installed using cargo:

$ cargo install --git https://github.com/Portable-Network-Archive/fs.git

This will generate the pnafs binary in $HOME/.cargo/bin. Make sure that this directory is in your PATH variable: export PATH=$PATH:$HOME/.cargo/bin

Usage

Mount archive:

$ pnafs mount archive.pna /mnt/pnafs/

Troubleshooting

Could not mount to $mountpoint: Operation not permitted (os error 1)

This error occurs when user_allow_other is not set in /etc/fuse.conf or the file has improper permissions. Fix by running (as root):

# echo 'user_allow_other' >> /etc/fuse.conf
# chmod 644 /etc/fuse.conf
# sudo chown root:root /etc/fuse.conf