Программное извлечение пакетов .deb - PullRequest
1 голос
/ 20 сентября 2010

У меня есть .deb пакет, содержимое которого мне нужно извлечь программным способом.Однако я не могу найти какие-либо ресурсы по этой теме, такие как .deb спецификация формата пакета, которая дала бы мне больше идей о том, как подойти к проблеме, не переходя к обратному проектированию всего этого.Есть идеи?

Ответы [ 4 ]

3 голосов
/ 20 сентября 2010

Довольно просто, на самом деле.

ar xv [name of deb file]

Чтобы позвонить изнутри C, вы можете использовать system:

system("ar xv [name of deb file]");
1 голос
/ 08 сентября 2011

Одна из целей разработки формата пакета .deb состояла в том, чтобы сделать его простым для извлечения с использованием существующих инструментов и / или библиотек.Структура верхнего уровня действительно является файлом ar, но внутри него вы найдете другой уровень структуры, который традиционно представляет собой пару файлов tar.Дополнительную документацию см., Например, http://en.wikipedia.org/wiki/Deb_(file_format)

. Вы можете использовать исходные коды GNU ar для создания собственной библиотеки, если не можете найти существующую библиотеку.Я ожидаю, что будут общие библиотеки для ar / tar / cpio / что там у вас.

1 голос
/ 20 сентября 2010

Если вы не нашли библиотеку для этого (я тоже не нашел) и не можете прибегнуть к выполнению системных команд, вы всегда можете реализовать свою собственную для чтения архива. Формат файла ar не очень сложен.

0 голосов
/ 08 сентября 2011

Я только что видел libarchive поддерживает формат ar, наряду с кучей других.

...