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.
For the past few releases, when Slackware current is a couple of months old I start testing. With the previous release I provided some nominal feedback to Pat and would like to continue that practice with each release.
I run two scripts to perform the updating in an alternate set of partitions and then I boot to and test the new installation. By the time current becomes the next release I am reasonably comfortable with all the changes between releases.
However, I do not maintain a full installation of Slackware. Because I do not want a full installation, in the past I performed an upgradepkg --install-new and then performed a removepkg of the unwanted packages. That works okay, but is not efficient.
I would like to update Slackware, install all new packages that seem relevant to my needs but not install packages I don't want. Using upgradepkg --install-new installs all packages I don't want as well as the truly new packages added since the previous release. That is, the install-new option cannot distinguish between a truly new package and packages that were removed.
If I was installing fresh every time, I could create my own tag files to ignore those packages I do not want installed. But to my understanding tag files serve no purpose with the upgradepkg and installpkg tools.
So I am l looking for ideas to improve the way I update Slackware.
One possible method is to create my own tag files and perform a "fresh" install (without reformatting the partitions). I haven't studied the setup scripts to learn whether such an approach would succeed.
Another option would be to perform an upgradepkg without using the install-new option and then performing a installpkg for the truly new packages I want to add. This latter idea seems palatable but I need to learn a way to diff the previous release and current directories to create a list of truly new files. (I keep a copy of the previous release and the current branch on my hard drive.)
I realize the CHANGES_AND_ HINTS.TXT document lists new packages added since the previous release, but I would rather use a programmatic method to create that list. A simple diff of the two directories (diff --qr | grep "Only in" does not succeed because the file versions often are different in the file names. I would appreciate some ideas how to diff or create a such list.
slackpkg might be an option, especially with the blacklist option. I will investigate further.
In the mean time, I'd appreciate some help from anybody with programmatically comparing the 12.0 and current directories to create a list of new packages added since 12.0. Thanks.
Each Slackware release has a MANIFEST.bz2 file which lists all packages in the distribution, and all the files within the packages. So running this command on the bunzipped MANIFEST file will result in a file "packages" that lists all the package names, sans version numbers.
Run this command on MANIFEST from both 12.0 and -current, and diff the two files. That will tell you what the package differences are.
Similarly,
ls -1 /var/log/packages | cut -d"-" -f1 > installed
will give you a file "installed" that lists all your currently installed packages, sans version numbers.
Parsing this file, and deleting the packages that are only in 12.0, and feeding the results to slackpackage, or upgradepkg, will allow you to just upgrade the installed packages. You will have to make your own decisions about whether to install any newly added packages in -current. There is no way to programmatically decide which you will need. Any big changes, like the change from 11.0 to 12.0, will require more manual intervention to upgrade, but this approach will work well at this time.
Use blacklists. I think all package managers (slackpkg, slapt-get, swaret and others) have those. Still you would be installing new packages which could be depending on the removed ones.
ls -1 /var/log/packages | cut -d"-" -f1 > installed
Good idea in theory, but not quite good enough -- some packages have a "-" in the actual app name.
Have a look at how /sbin/installpkg handles determining the package name -- something along these lines:
Hmm, I can't think of any - the closest that comes to mind is slang2 (but yeah, doesn't match the pattern, so your sed line would work). That is probably a bit more efficient than what I posted, but I'm not sure it's an issue for the intended use case. Whatever works
I wouldn't be human if I didn't take this opportunity to promote my own tool to manage a slackware-current system. The best one, in my humble opinion (which may be a bit biased) .
Thanks for the responses. I will try some of the suggestions.
I pretty much know what I want installed. The script I wrote mentioned in the original post automates my update testing. The Changes and Hints file provides a list of new files. I simply wanted a programmatic way of determining the new files in case the Changes and Hints is incorrect.
I was somewhat writing tongue in cheek, but I can do that --- after I learn to programmatically diff my stable and current mirrors on my local hard drive. :lol:
I wish I had more time to provide meaningful feedback with Slackware, especially during Current development. Currently I only have time on weekends (which explains the delays between my posts) and even that time is limited. Today I made another pass at installing Current, but have no progress testing. Too many other things to do.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.