[Libguestfs] Workaround to get supermin to work on Slackware

shiftag shiftag at nanotek.info
Fri Jun 2 16:14:16 UTC 2023


On 6/2/23 12:50, Richard W.M. Jones wrote:
> On Fri, Jun 02, 2023 at 04:35:06AM +0400, shiftag wrote:
>> On 6/1/23 15:21, Richard W.M. Jones wrote:
>>> On Thu, Jun 01, 2023 at 07:07:45AM +0400, shiftag wrote:
>>>> Hello,
>>>>
>>>> I'm experimenting with a Software using supermin. However, it look
>>>> like supermin cannot work because of Slackware package manager.
>>>>
>>>> $ supermin --list-drivers
>>>> arch/pacman               not-detected
>>>> debian/dpkg                 not-detected
>>>> openmandriva/rpm    not-detected
>>>> mageia/rpm                  not-detected
>>>> opensuse/rpm              not-detected
>>>> ibm_powerkvm/rpm    not-detected
>>>> fedora/rpm                    not-detected
>>>>
>>>> Is there any workaround to make the following command works :
>>>>
>>>> $ supermin --prepare bash coreutils ethtool iproute iputils kmod
>>>> net-tools pciutils perf procps-ng python strace strace systemd
>>>> systemd-udev util-linux vim -o supermin.d
>>> supermin fundamentally relies on having a package manager supporting a
>>> few operations (not all are required):
>>>
>>> https://github.com/libguestfs/supermin/blob/057ea99a3211057d2cb2c9971afe56e0a85e0f78/src/package_handler.mli#L90
>>>
>>> It's been a while since I used Slackware.  Does it have a package
>>> manager which keeps track of packages, files installed by packages,
>>> and provide a way to list installed packages and files used by
>>> installed packages, etc?
>>>
>>> Rich.
>>>
>> There are two principals package manager "slackpkg" and "sbopkg" and
>> both store installed packages information in "/var/log/packages"
>> using a file format.
>>
>> For example, to check some information related to "hivex" installed package:
>>
>> $ ls /var/log/packages/hivex*
>> /var/log/packages/hivex-1.3.23-x86_64-1_SBo
>>
>> So the package is installed.
>>
>> $ cat /var/log/packages/hivex-1.3.23-x86_64-1_SBo
>>
>> PACKAGE NAME:     hivex-1.3.23-x86_64-1_SBo
>> COMPRESSED PACKAGE SIZE:     184K
>> UNCOMPRESSED PACKAGE SIZE:     610K
>> PACKAGE LOCATION: /tmp/hivex-1.3.23-x86_64-1_SBo.tgz
>> PACKAGE DESCRIPTION:
>> hivex: hivex (Windows Registry Extractor System)
>> hivex:
>> hivex: Hivex is a tool for reading windows registry
>> hivex: Hive binary files. It uses C API or exports
>> hivex: it to a XML file.
>> hivex:
>> hivex:
>> hivex: Homepage:https://libguestfs.org
>> hivex:
>> hivex:
>> hivex:
>> FILE LIST:
>> ./
>> install/
>> install/doinst.sh
>> install/slack-desc
>> usr/
>> usr/bin/
>> usr/bin/hivexget
>> usr/bin/hivexml
>> usr/bin/hivexregedit
>> usr/bin/hivexsh
>> usr/doc/
>> usr/doc/hivex-1.3.23/
>> usr/doc/hivex-1.3.23/FUZZING
>> usr/doc/hivex-1.3.23/LICENSE
>> usr/doc/hivex-1.3.23/README.md
>> usr/doc/hivex-1.3.23/SECURITY
>> usr/doc/hivex-1.3.23/hivex.SlackBuild
>> usr/include/
>> usr/include/hivex.h
>> usr/lib64/
>> usr/lib64/libhivex.so.0.0.0
>> usr/lib64/ocaml/
>> usr/lib64/ocaml/hivex/
>> usr/lib64/ocaml/hivex/METAusr/lib64/ocaml/hivex/hivex.cmx
>> usr/lib64/ocaml/hivex/hivex.mli
>> usr/lib64/ocaml/hivex/libmlhivex.a
>> usr/lib64/ocaml/hivex/mlhivex.a
>> usr/lib64/ocaml/hivex/mlhivex.cma
>> usr/lib64/ocaml/hivex/mlhivex.cmxa
>> usr/lib64/ocaml/stublibs/
>> usr/lib64/ocaml/stublibs/dllmlhivex.so
>> usr/lib64/ocaml/stublibs/dllmlhivex.so.owner
>> usr/lib64/perl5/
>> usr/lib64/perl5/Win/
>> usr/lib64/perl5/Win/Hivex.pm
>> usr/lib64/perl5/Win/Hivex/
>> usr/lib64/perl5/Win/Hivex/Regedit.pm
>> usr/lib64/perl5/auto/
>> usr/lib64/perl5/auto/Win/
>> usr/lib64/perl5/auto/Win/Hivex/
>> usr/lib64/perl5/auto/Win/Hivex/Hivex.so
>> usr/lib64/pkgconfig/
>> usr/lib64/pkgconfig/hivex.pc
>>
>> [...]
>>
>> However, this cannot be requested from the package manager, its
>> essentially a manual task.
> It seems sort of possible though?
>
> Another thing which would be good (not strictly required) is to
> resolve dependencies between packages, ie. if hivex requires perl,
> have some way to list the dependencies of hivex which would include
> perl.
>
> Rich.
>
Unfortunately, there is some uncertainty for the dependencies. The 
accuracy for the required dependencies is up to the person who wrote the 
scripts ("package.SlackBuild" file). But its still possible to get that 
information by using "-R" switch which "sbopkg".

For example, with hivex:

```

# sbopkg -Ri hivex

+----------------------+
| The active queue is: |
| hivex                |
+----------------------+


+-------+
| hivex |
+-------+

libhivex is a self-contained library for
reading and writing Windows Registry "hive" binary files.

Unlike many other tools in this area,
it doesn't use the textual .REG format for output, because parsing
that is as much trouble as parsing the original binary format. Instead
it makes the file available through a C API, or there is a
separate program to export the hive as XML.

REQUIRES="ocaml ocaml-findlib ocamlbuild perl-IO-stringy perl-Test-Simple"

```

Here the variable "REQUIRES" contains the dependencies for building the 
package.




More information about the Libguestfs mailing list