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.
I have browsed a few slackbuilds over the years and have noticed that slackbuild scripts for current have the "Don't ship .la files" bit that removes these files from the build directory before building the package.
Today I was poking around /var/lib/pkgtools/packages/ and I started noticing .la files. Then I entered the following bit and the result surprised me:
My system was last upgraded around 2 weeks ago so its not too far behind the most recent current development. If you take the "-c" off grep it shows lots of files that are from recent slackware upgrades (within the last months).
I'm hoping that this is a silly question and that things are not borked here. I'm not sure what changed but this doesn't appear normal.
here I don't see any *.la file in /usr/lib64 installed by packages that come with Slackware, there are some in subdirectories but those are not to be removed, as explained in the ChangeLog:
Quote:
Originally Posted by The ChangeLog
Hi folks, and welcome to the third ever Slackware Mass Rebuild (and the
longest ChangeLog entry in project history). There were two primary
motivations for rebuilding everything in the main tree. The first was to
switch to the new C++ ABI. The second was to get rid of all the .la files
in the LD_LIBRARY_PATH. Really, having .la files installed has been mostly
obsolete since things began to use pkg-config instead, but it's not easy
to get rid of them unless you do it all at once. If you just take them out
of one package, any other packages containing .la files that refer to the
removed ones will be broken. We've removed a few here and there before
(and then handled any packages that had referred to them with a rebuild),
but it was time to finally remove all the ones in /lib{,64} and
/usr/lib{,64}. One of the reasons that this really needed to happen is that
many projects are starting to migrate to build systems other than autotools,
and those systems do not generate .la files. So if we didn't get rid of them
now, we might end up in a situation later on where they are being removed
by upstream and then we would have to chase down the dependency breakage and
recompile (possibly many) other packages. The .la files that are outside of
the LD_LIBRARY_PATH were not removed (and shouldn't be) - those ones are
often used by the lt_dlopen() function to load plugins and removing those
ones can break things. But those ones don't cause problems... they aren't
likely to try to infect .la files produced by other packages.
IMPORTANT NOTE: If you have any third party or other packages installed on
your system that don't come with Slackware, and those packages have installed
any .la files, it is very likely that they refer to some .la files which we
have just removed, and that trying to compile against these packages will no
longer work. Luckily, the solution is simple: remove them. This command will
remove any stale .la files from the LD_LIBRARY_PATH:
rm /{,usr/}lib{,64}/*.la
Moving forward, nothing shipped in Slackware will contain any .la files in
those directories, and any SlackBuilds intended to be used with Slackware 15.0
should contain this bit of script:
# Don't ship .la files:
rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
also, if you have installed third party packages they might ship their own *.la files in /usr/lib${LIBDIRSUFFIX}.
the scripts of the unofficial SBo fork for current are an example, and they will be edited to remove *.la files only when Slackware 15.0 will be about to be released, but if you built your packages from that repository on a current installation post-april 2018, you shouldn't need to remove them as indicated in the ChangeLog, everything should work as it is.
Thanks for pointing out that changelog ponce. I have read it before but its been a while so it slipped my mind. The majority of these .la files are in subdirectories of /usr/lib64/, with only 28 actually in /usr/lib64. I'm guessing those are from 3rd party packages and I'll go through those to see where they came from.
At least I'm not going crazy!
Edit: Looks like the remainders in /usr/lib64 are from some alien packages I have installed recently.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.