Add this line to your application’s Gemfile:
gem "ffi-libarchive-binary"And then execute:
$ bundle installOr install it yourself as:
$ gem install ffi-libarchive-binaryRequire the gem and use calls from ffi-libarchive.
require "ffi-libarchive-binary"
path = File.expand_path('file.pkg', __dir__)
flags = Archive::EXTRACT_PERM
reader = Archive::Reader.open_filename(path)
reader.each_entry do |entry|
reader.extract(entry, flags.to_i)
end
reader.closeWe are following Sandi Metz’s Rules for this gem, you can read the description of the rules here. All new code should follow these rules. If you make changes in a pre-existing file that violates these rules you should fix the violations as part of your contribution.
First, thank you for contributing! We love pull requests from everyone. By participating in this project, you hereby grant Ribose Inc. the right to grant or transfer an unlimited number of non exclusive licenses or sub-licenses to third parties, under the copyright covering the contribution to use the contribution by all means.
Here are a few technical guidelines to follow:
-
Open an issue to discuss a new feature.
-
Write tests to support your new feature.
-
Make sure the entire test suite passes locally and on CI.
-
Open a Pull Request.
-
Squash your commits after receiving feedback.
-
Party!
This gem is distributed with a BSD 3-Clause license.
This gem is developed, maintained and funded by Ribose Inc.
The following platforms are officially tested and supported:
| Platform | Architecture | Ruby Versions | Status |
|---|---|---|---|
Windows 2022 |
x86_64 |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
Windows 2025 |
x86_64 |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
macOS 15 |
ARM64 (Apple Silicon) |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
macOS 15 Large |
x86_64 (Intel) |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
macOS 26 |
ARM64 (Apple Silicon) |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
Ubuntu 24.04 |
x86_64 (glibc) |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
Ubuntu 22.04 |
x86_64 (glibc) |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
Alpine Linux |
x86_64 (musl) |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
Ubuntu 24.04 |
ARM64 (glibc) |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
Ubuntu 22.04 |
ARM64 (glibc) |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
Alpine Linux |
ARM64 (musl) |
2.7, 3.0, 3.1, 3.2, 3.3, 3.4 |
✅ Supported |
|
Note
|
The gem provides pre-compiled binaries for 10 platforms. Separate binaries are provided for glibc-based (gnu) and musl-based Linux distributions to ensure compatibility. Windows ARM64 support is planned for future releases pending resolution of OpenSSL build system compatibility issues with MSYS2 CLANGARM64. |
The gem explicitly sets OpenSSL compiler targets to ensure correct assembly code generation:
| Platform | Compiler Target | Reason |
|---|---|---|
Windows x64 |
|
Explicit x86_64 assembly selection |
Linux x86_64 (gnu/musl) |
Auto-detect |
Native toolchain works correctly |
Linux ARM64 (gnu/musl) |
Auto-detect |
Native toolchain works correctly |
macOS ARM64 |
Auto-detect |
Native toolchain works correctly |
macOS x64 |
Auto-detect |
Native toolchain works correctly |
|
Note
|
Windows platforms require explicit compiler targets because OpenSSL’s auto-detection does not reliably select the correct target on Windows. Linux musl and glibc variants use the same OpenSSL configuration with auto-detection, as the toolchain correctly identifies the target. |