Wiki
Clone wikisbbdep / example_page
The samples are from my Slackware 14.0 or current x86_64 installation.
All samples use the --quite option to supress the sync output which looks like this
sync cache (/home/slk140/sbbdep.cache) search for changes cache is up to date
If there is something to do than the synchronisation info message may look like this one
./sbbdep sync cache (/home/slk140/sbbdep.cache) search for changes apply changes clear seamonkey-2.20-x86_64-1_slack14.0 index seamonkey-2.20-x86_64-2_slack14.0 index seamonkey-solibs-2.20-x86_64-2_slack14.0 clear seamonkey-solibs-2.20-x86_64-1_slack14.0 store seamonkey-solibs-2.20-x86_64-2_slack14.0 store seamonkey-2.20-x86_64-2_slack14.0 wait for resolving symbolic links persist new information to disk run db analyzer ---synchronisation summary: upgraded: seamonkey-2.20-x86_64-2_slack14.0 (was 2.20-x86_64-1_slack14.0) upgraded: seamonkey-solibs-2.20-x86_64-2_slack14.0 (was 2.20-x86_64-1_slack14.0)
Get dependencies
Query dependency from packages
Query the dependencies of a package, get just the packages as result In this case the query is for the package boost.
./sbbdep --quite /var/adm/packages/boost-1.49.0-x86_64-3 aaa_elflibs >= 14.0 | bzip2 >= 1.0.6 aaa_elflibs >= 14.0 | gcc >= 4.7.1_multilib aaa_elflibs >= 14.0 | zlib >= 1.2.6 cxxlibs >= 6.0.17 | gcc-g++ >= 4.7.1_multilib glibc >= 2.15_multilib | glibc-solibs >= 2.15_multilib icu4c >= 49.1.2
The names can also be printed in single list without the version information using the --short option, it will look like this:
./sbbdep --quiet --short /var/adm/packages/boost-1.49.0-x86_64-3 aaa_elflibs | bzip2, aaa_elflibs | gcc, aaa_elflibs | zlib, cxxlibs | gcc-g++, glibc | glibc-solibs, icu4c
in this way sbbdep produces lists like slapt-get uses them in it's depfiles.
Query dependency of a file
sbbdep takes also a binary file as argument,
With no option it will check the required package of the file.
./sbbdep --quiet /usr/lib64/libboost_program_options.so check /usr/lib64/libboost_program_options.so.1.54.0, 64bit library (libboost_program_options.so.1.54.0) .. from package boost-1.54.0-x86_64-1 aaa_elflibs >= 14.0 | gcc >= 4.8.1 cxxlibs >= 6.0.18 | gcc-g++ >= 4.8.1 glibc >= 2.17 | glibc-solibs >= 2.17
Get info about who needs a package or file
Query who needs a package
<<Anchor(whoneeds_anchor)>>
Query which package are using the given one works with the --whoneeds option.
./sbbdep --quiet --whoneed /var/adm/packages/boost-1.49.0-x86_64-3 akonadi-1.9.0-x86_64-1alien boost-1.49.0-x86_64-3 kig-4.10.4-x86_64-1alien
this works also with short names
./sbbdep --quiet --whoneed --short /var/adm/packages/boost-1.49.0-x86_64-3 akonadi, boost, kig
this shows that boost is reuqired by akonadi, boost and kig.
the whoneeds query does not filter out internal dependencies like the required does, that's why boost is not in the dependency list of boost, but in the --whoneeds list.
Query who needs a file
as exepected, the --whoneed option will check for packages that needs the given file.
./sbbdep --quiet --whoneed /usr/lib64/libboost_program_options.so akonadi-1.9.2-x86_64-1
Getting more details
<<Anchor(xdl_anchor)>>
sbbdep has a -xdl option, which stands for explain dynamic linked.
The -xdl option works for dependency and whoneeds queries on package level and file level.
A dependency for a file looks like this this
./sbbdep --quiet --xdl /usr/lib64/libboost_program_options.so check /usr/lib64/libboost_program_options.so.1.54.0, 64bit library (libboost_program_options.so.1.54.0) .. from package boost-1.54.0-x86_64-1 file /usr/lib64/libboost_program_options.so.1.54.0 needs: libc.so.6 found in: /lib64/libc-2.17.so( glibc-2.17-x86_64-4 | glibc-solibs-2.17-x86_64-4 ) libgcc_s.so.1 found in: /usr/lib64/libgcc_s.so.1( aaa_elflibs-14.0-x86_64-4 | gcc-4.8.1-x86_64-1 ) libm.so.6 found in: /lib64/libm-2.17.so( glibc-2.17-x86_64-4 | glibc-solibs-2.17-x86_64-4 ) libpthread.so.0 found in: /lib64/libpthread-2.17.so( glibc-2.17-x86_64-4 | glibc-solibs-2.17-x86_64-4 ) librt.so.1 found in: /lib64/librt-2.17.so( glibc-2.17-x86_64-4 | glibc-solibs-2.17-x86_64-4 ) libstdc++.so.6 found in: /usr/lib64/libstdc++.so.6.0.18( cxxlibs-6.0.18-x86_64-1 | gcc-g++-4.8.1-x86_64-1 )
A whoneeds query for a file looks like this this
./sbbdep --quiet --whoneed --xdl /usr/lib64/libboost_program_options.so /usr/lib64/libboost_program_options.so.1.54.0 (libboost_program_options.so.1.54.0) is used from: akonadi-1.9.2-x86_64-1 /usr/bin/akonadi_agent_launcher /usr/bin/akonadi_agent_server /usr/bin/akonadi_control /usr/bin/akonadi_rds /usr/bin/akonadictl /usr/bin/akonadiserver
Dependency and whoneed queries for packaes will look similar, just for more than one file.
Search for strings and files
<<Anchor(searchStringFiles_anchor)>>
If a given arugment to sbbdep is just some string, sbbdep will try to find installed files that contain the string in the filename and report them.
./sbbdep passwd not a file path: 'passwd', use name as filename and try to find filename in package list: filename found in /var/adm/packages/bash-completion-2.0-noarch-2: passwd -> line was :usr/share/bash-completion/completions/passwd filename found in /var/adm/packages/shadow-4.1.4.3-x86_64-7: passwd -> line was :usr/bin/passwd filename found in /var/adm/packages/etc-14.0-x86_64-1: passwd -> line was :etc/passwd.new
If a given arugment to sbbdep is a file, sbbdep will try to find installed files that name and report them. sbbdep will search for just the filename and also for absolute filename.
./sbbdep /etc/passwd not a file with binary dependencies: /etc/passwd try to find information in package list: filename found in /var/adm/packages/bash-completion-2.0-noarch-2: passwd -> line was :usr/share/bash-completion/completions/passwd filename found in /var/adm/packages/shadow-4.1.4.3-x86_64-7: passwd -> line was :usr/bin/passwd absolute match in /var/adm/packages/etc-14.0-x86_64-1: /etc/passwd
Updated