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.
It is actually not that bad these days. With modern `find` you can easily locate all files associated with a package, if you know just one file provided by the package. The following is a shell script that will automate finding files that are likely to be related to your reference file, based on common install time. Just run it as root providing a single argument, that being the path to the chosen reference file.
I forgot I once extended this idea and created a little shell script I called f2sb ("Forgot 2 SlackBuild"). It can make a Slackware package out of your manually installed package by finding all the files using change timestamps in a range governed by a reference file from within the package.
For example, say I installed Zstandard version 1.4.3 manually via `make install`. Then at any time in the future, I could simply issue the following (as root):
Code:
./f2sb.sh zstd-1.4.3 /usr/local/bin/zstd
and it would produce "/tmp/zstd-1.4.3-x86_64-1.tgz" (assuming a 64bit system). This would allow me to (re)install it on top via installpkg and have it tracked alongside all other packages, which also simplifies removal should I ever need that.
This is what I've been doing for more than 2 decades on Slackware, /usr/local is my "parallel world" where I put my own compilations. Never managed to break something, nor failed to clean something.
You could try my little example script against one of the files from one of the packages you make installed into /usr/local and see if it accurately finds all the sibling files from the package in question. It is still a nice way of listing files in a package, even if you don't personally need it.
You could try my little example script against one of the files from one of the packages you make installed into /usr/local and see if it accurately finds all the sibling files from the package in question. It is still a nice way of listing files in a package, even if you don't personally need it.
Just tried f2sb.sh on unbound and it worked just fine, got all the files that were part of the unbound package - compared the package your script generated with the one I created when I compiled it.
I used to make && make install back in the day and then archive the whole compilation directory, but moved to creating packages, it's cleaner & more efficient.
Saved your little script in my /kit/tools directory for when/if I'll need it. Thanks!
Just tried f2sb.sh on unbound and it worked just fine, got all the files that were part of the unbound package - compared the package your script generated with the one I created when I compiled it.
I used to make && make install back in the day and then archive the whole compilation directory, but moved to creating packages, it's cleaner & more efficient.
Saved your little script in my /kit/tools directory for when/if I'll need it. Thanks!
Thanks for checking it. I have used these tricks quite a bit but always interesting to hear that it actually works for someone else!
If you have some app to compile - just tell us. Such general discussion is not much of worth without working example. First of all developer usually provides information about how to install. So this is the first point to start with.
( less ugly )
Really the Makefile is just a shell script, so it wouldn't take much to "reverse engineer" the install target(function)
I'm probably being too literal minded here, but for people not knowledgeable about Unix this statement is misleading. Perhaps you meant they have some similar syntax and use snippets in their target recipes that are sequences of shell commands, so learning about Makefiles may feel similar to learning about shell. Or maybe you meant that you can take the commands out of the recipes and put them in shell scripts.
But a Makefile is a very different beast than a shell script. First there are key syntax differences that will trip you up if you're writing a Makefile thinking of it as a shell script, e.g. $(dmesg) means something entirely different as a Makefile macro than it does as a shell expression. More fundamentally, a Makefile is processed in two passes, one that reads all the directives, variable definitions, and rules followed by a second one that picks a rule and recursively processes each rule needed to satisfy prerequisites down a chain leading back down to the starting rule, followed by processing of that rule itself. Shell scripts run in one pass top to bottom.
I'm probably being too literal minded here, but for people not knowledgeable about Unix this statement is misleading. Perhaps you meant they have some similar syntax and use snippets in their target recipes that are sequences of shell commands, so learning about Makefiles may feel similar to learning about shell. Or maybe you meant that you can take the commands out of the recipes and put them in shell scripts.
But a Makefile is a very different beast than a shell script. First there are key syntax differences that will trip you up if you're writing a Makefile thinking of it as a shell script, e.g. $(dmesg) means something entirely different as a Makefile macro than it does as a shell expression. More fundamentally, a Makefile is processed in two passes, one that reads all the directives, variable definitions, and rules followed by a second one that picks a rule and recursively processes each rule needed to satisfy prerequisites down a chain leading back down to the starting rule, followed by processing of that rule itself. Shell scripts run in one pass top to bottom.
The OP needs to be more specific. The only true portable version I understand is statically linked application. And then reconfigure Geany to look for plugins in specified folder. The other solution is Docker. Maybe Geany already has a Docker container. But I confess I failed miserably trying to build Docker myself.
Edit: putting binaries into user home directory is just how Unix worked, common users were not allowed to install system-wide, for custom builds $HOME is place to put binaries.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.