[SOLVED] Newbie Question: How do I know if I have the dependencies I need?
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
How do I know if I have the dependencies it says I need (and the dependencies of those dependencies)? I did a full install, but I do not know where to check to see if a particular package is installed. Thanks.
A primary presumption with slackbuilds.org is a full install of the stock Slackware. That is not always a requirement, just a presumption.
Next check the specific web page for dependencies. In the case of the nitrogen web page you linked, gtkmm is required. Selecting that link indicates mm-common and atkmm are further dependencies. Selecting the atkmm link indicates pangomm is required. Selecting the pangomm link indicates cairomm is required. Selecting the cairomm link indicates glibmm is required. Selecting the glibmm link indicates libsigc++ is required.
A primary presumption with slackbuilds.org is a full install of the stock Slackware. That is not always a requirement, just a presumption.
Next check the specific web page for dependencies. In the case of the nitrogen web page you linked, gtkmm is required. Selecting that link indicates mm-common and atkmm are further dependencies. Selecting the atkmm link indicates pangomm is required. Selecting the pangomm link indicates cairomm is required. Selecting the cairomm link indicates glibmm is required. Selecting the glibmm link indicates libsigc++ is required.
sbopkg also has the concept of queuefiles - basically a text file that lists the dependencies in the right order. sbopkg can load up the queuefile and then you can process the queue. There are folks who maintain repos of sbopkg queuefiles (like this one: http://gitorious.org/sbopkg-slackware-queues). Alternatively, you can pull the sbopkg subversion repository and use a helper script called 'sqg' that will generate queuefiles for you by processing the REQUIRES line in each .info file in SlackBuilds.org. You can also grab the script here: https://sbopkg.googlecode.com/svn/tr...oc/contrib/sqg
And I guess I can assume that the dependencies listed on Slackbuilds.org will be accurate?
Yes.
Once in a blue moon I notice a listed dependency is not really required, but that involves having used Slackware and free/libre software for many years. When in doubt build the dependencies.
As astrogeek noted, inspecting the contents of /var/log/packages will help you know whether you have already built a dependency package from slackbuilds.org. As I mentioned, a full stock install is presumed and those dependencies are never listed in the slackbuilds.org web pages. Sometimes for people who do not install a full stock system, building a slackbuilds.org package will fail, but the failure message usually provides a clue as to what is missing. Then again, those who do not install a full stock system have been using Slackware long enough to know what they are doing.
If you want to see how the process works, build notrogen without building any of the dependencies. Either the build process will fail with messages why the build failed (missing libraries, etc.) or the build will succeed but the final app will not run as expected, usually with appropriate stdout/stderr messages. The same process applies when a presumed stock Slackware package is not installed. The build process or run-time errors will provide clues.
This process might sound involved or complicated, but in systems that provide dependency checking, the package maintainers still have to manually edit the respective dependency list for the package manager. With slackbuilds.org packages they are listed in the respective web page and there is no automation.
Occasionally a slackbuilds.org package maintainer will build a package a certain way that includes unwanted dependencies. With experience a user learns how to edit the build script to eliminate that dependency when possible. Many of the slackbuilds.org build scripts are written to provide users build parameters and options to avoid that problem.
Whereas sbopkg can remove some of the drudgery and provide some automation, if you are new to the process I recommend building everything manually for a while to understand what is involved.
Once in a blue moon I notice a listed dependency is not really required, but that involves having used Slackware and free/libre software for many years. When in doubt build the dependencies.
As astrogeek noted, inspecting the contents of /var/log/packages will help you know whether you have already built a dependency package from slackbuilds.org. As I mentioned, a full stock install is presumed and those dependencies are never listed in the slackbuilds.org web pages. Sometimes for people who do not install a full stock system, building a slackbuilds.org package will fail, but the failure message usually provides a clue as to what is missing. Then again, those who do not install a full stock system have been using Slackware long enough to know what they are doing.
If you want to see how the process works, build notrogen without building any of the dependencies. Either the build process will fail with messages why the build failed (missing libraries, etc.) or the build will succeed but the final app will not run as expected, usually with appropriate stdout/stderr messages. The same process applies when a presumed stock Slackware package is not installed. The build process or run-time errors will provide clues.
This process might sound involved or complicated, but in systems that provide dependency checking, the package maintainers still have to manually edit the respective dependency list for the package manager. With slackbuilds.org packages they are listed in the respective web page and there is no automation.
Occasionally a slackbuilds.org package maintainer will build a package a certain way that includes unwanted dependencies. With experience a user learns how to edit the build script to eliminate that dependency when possible. Many of the slackbuilds.org build scripts are written to provide users build parameters and options to avoid that problem.
Whereas sbopkg can remove some of the drudgery and provide some automation, if you are new to the process I recommend building everything manually for a while to understand what is involved.
I think it sounds great. I don't want dependency checking. I'd rather learn what's going on.
So, all the packages that are either installed with the Slackware installation or with a Slackbuild (and installpkg) are listed in /var/log/packages? But if I compile a package from source myself it will not be there, right? Are there any other circumstances under which it will not be there? Thank you very much again.
Whereas sbopkg can remove some of the drudgery and provide some automation, if you are new to the process I recommend building everything manually for a while to understand what is involved.
Agreed - in fact sbopkg assumes the user understands how to manually build and install things from SlackBuilds.org. I would not use sbopkg until you are comfortable with the process of doing it manually.
So, all the packages that are either installed with the Slackware installation or with a Slackbuild (and installpkg) are listed in /var/log/packages? But if I compile a package from source myself it will not be there, right? Are there any other circumstances under which it will not be there? Thank you very much again.
Yes, this is correct. Packages are listed in /var/log/packages but manually compiling and installing from source will not be there.
But if I compile a package from source myself it will not be there, right? Are there any other circumstances under which it will not be there?
Correct.
There is another popular Slackware tool to help compile packages not supported anywhere with a formal build script: src2pkg.
That said, if you compile and install software as recommend by numerous wanna-bes around the web pretending to be a somebody, using the mantra of "configure, make, make install," then just as often as not there is no easy way to remove the files that were installed or even to know which files were installed. If a wanna-be on the web writes to use "configure, make, make install," then grab a copy of the slackbuilds.org build script template and modify as needed to create a build script. The nice thing about using a build script is the software does not get installed immediately, only compiled. Another nice aspect about Slackware build scripts is they are designed to install the software to a directory using the makepkg command rather than install directly to the system. Then the package contents can be inspected and studied.
I will stick with creating build scripts, then. I don't want to have a bunch of untraceable packages hiding all over my system. Thank you for all your help!
use a helper script called 'sqg' that will generate queuefiles for you by processing the REQUIRES line in each .info file in SlackBuilds.org.
This is a lovely little script. It would be nice if you could add it to the menu system of sbopkg to allow people to update the queue files after the update the slackbuild lists.
@samac - thanks! I also put it up on github along with all the queuefiles it has generated. https://github.com/chessgriffin/sqg. I'll have to think about adding to sbopkg itself.
Usually, the best option is to learn to manually install the dependencies yourself rather than have sbopkg or src2pkg do it for you. Most stuff is already on Slackbuilds.org as it is so all you have to do is follow the dependency list back and build from the furthermost back dependency. It's super easy.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.