问题标签 [libarchive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
798 浏览

c++ - libarchive 在某些条目上返回错误,而 7z 可以正常提取

我在使用libarchive3.3.2 版时遇到问题。我编写了一个程序来读取 7z 档案中的选定条目,如下所示:

但是,该程序无法读取file_1.fog我的大部分档案,并且无法读取file.fog某些文件。我试着用archive_error_string()看看会发生什么,错误是corrupted archiveortruncated RAR archiveDecompressing internal error.

这是故障代码:

0 投票
1 回答
1589 浏览

c - 使用未声明的标识符“ENOMEM”

我为我的 xcode 项目使用“libarchive”,但得到以下错误

使用未声明的标识符“errno”

使用未声明的标识符“ENOMEM”

使用未声明的标识符“ERANGE”

“struct archive_write”中没有名为“compressor”的成员

我该如何解决这个错误?

错误截图

https://github.com/Tarsnap/tarsnap/blob/master/libarchive/archive_write_set_format_ustar.c

0 投票
0 回答
237 浏览

c++ - 缺少'#include'; 必须先从模块“Darwin.POSIX.grp”导入“getgrgid”声明

我为我的 xcode 项目使用“libarchive”:

而且我收到以下错误:

'getgrgid' 的冲突类型

函数“getgrgid”的隐式声明在 C99 中无效

缺少“#include”;必须先从模块“Darwin.POSIX.grp”导入“getgrgid”声明

缺少“#include”;必须先从模块“Darwin.POSIX.grp”导入“组”的定义

我该如何解决这个错误?

来源:https ://github.com/LuaDist/libarchive/blob/master/libarchive/archive_read_disk_set_standard_lookup.c

0 投票
0 回答
303 浏览

extractor - libarchive 完整提取器

我下载了 libarchive-3.3.2.zip 并根据 https://github.com/libarchive/libarchive/wiki/BuildInstructions使用 mingw32 构建它

我还设置 LIBS += -L$$PWD/libarchive/ -larchive_static 了静态构建。

构建后,我尝试使用 https://github.com/libarchive/libarchive/wiki/Examples#A_Complete_Extractor中的示例提取我的 .zip 文件

当我运行上面的代码时,它在 A1 处退出。当我调试 r = copy_data(a, ext); 我发现 r = -25 和 #define ARCHIVE_WARN (-20)

我的构建似乎有问题,但我无法弄清楚。

0 投票
1 回答
471 浏览

c++ - 如何将空文件夹和符号链接添加到存档 - libarchive

我正在尝试使用以下代码将文件夹压缩到 cpio.gz 存档中。但它不压缩空文件夹和符号链接。

我正在使用此代码重新打包提取的 Android ramdisk。使用 libarchive 提取文件工作正常。它提取了所有文件、文件夹和符号链接......

此处压缩的完整代码

0 投票
0 回答
321 浏览

python-3.x - 如何从 .7z 存档中读取包含大量数据的 csv 文件?

我有一个包含 162 GB 数据的 csv 文件,我必须使用 7-zip 对其进行压缩以节省空间。我一直在使用 libarchive 从 .7z 文件中读取并附加读取的块以在最后获得最终结果。但这个文件的问题是,它太大了,我无法将它附加到创建单个字符串或数据帧,因为我的主内存限制为 8 GB。此外,我无法对每个块执行任何操作,因为每次最后一行剪掉一些列时,读取的块都是不一致的。

以下是我用来读取 csv 文件的片段:

以下是单个输出块的 pastebin:

https://pastebin.com/7agwAAds

注意最后一行的剪裁。

我将不胜感激从存档的巨大 csv 文件中读取完整行和大块行的任何帮助。

0 投票
2 回答
1209 浏览

c++ - 使用 libarchive 将 gzip 文件解压缩到内存

我正在尝试以编程方式将 gzip 文件解压缩到内存中并gzip -d file.gz使用libarchive project模拟命令。该文件实际上取自具有以下标头的http响应Accept-Encoding: gzip, deflate

这是我尝试读取文件的尝试。我预计不会工作,因为 gzip 压缩文件没有条目(它被压缩为流)并archive_read_next_header尝试从存档中读取下一个文件。

是否有任何替代此功能的方法可以从压缩文件中提取整个数据。

也许有人可以发布解决此问题的最小代码示例?另外,是否有一个选项可以找出 gzip 存档文件是否有条目?

0 投票
0 回答
150 浏览

python - Linux 上的 Libarchive 未正确安装(对于 Python)

我在我的 Ubuntu 机器上安装了 libarchive apt install libarchive-dev,然后使用 pip 为 Python 安装了 libarchive pip3 install libarchive

我现在的问题是安装似乎不正确,因为 libarchive 根本不提供任何功能,如下面的输出所示:

和图书馆本身

我在 Ubuntu 19.04 和 18.04 上都试过了,每次都得到相同的结果。我想我一定错过了一些明显的东西,但我一辈子都找不到它。

在此先感谢您的帮助。

0 投票
1 回答
871 浏览

libarchive - C++ 使用 libarchive 和 archive_write_open_memory ...如何清除缓冲区?

我正在编写一个服务器,它将压缩文件并通过 http 套接字发送它们。

不幸的是,它们并不是真正的文件,它们更像是来自远程源的数据库条目。

我想压缩内存中的每个条目,然后通过我的 http 服务器将它们发送出去,每个条目都可能很大,比如每个 1GB。

我以块的形式从源接收数据,例如 16mb(但可以是任何有意义的块大小)。

从概念上讲,这就是正在发生的事情,尽管这是一些伪代码:

问题是,我如何知道数据何时被压缩到 _archiveBuffer,何时压缩,如何读取缓冲区然后清除它,重置 _used 计数器。我假设如果_used>0发生了压缩/刷新。

另外,_archiveBuffer 是否需要大于我的块大小?

似乎我可能需要使用回调,但不清楚如何将 archive_write_open 与回调和内存缓冲区一起使用。

我似乎无法在网上找到示例。

任何帮助,将不胜感激!

0 投票
0 回答
307 浏览

python - 在 Windows 中加载 libarchive 时出错 - 无法加载库:[WinError 126] 找不到指定的模块

我是python的初学者,试图在windows 10 64位笔记本电脑上安装“Libarchive”,正在使用python 3.7得到以下错误