Inspired by the modifications made by zerouno to slackpkg to add support for third party repositories and the good reception they had in this thread
, I've spent a few hours coding third party repository support in slackroll
. The result has been released as version v43 today.
For those who don't know slackroll, it's a package or upgrade manager designed specifically for Slackware and similar, if anything, to slackpkg. The first version was released in 2007 and I've been using it to manage my system since then.
The main difference to slackpkg is that slackroll, like many other package management tools, keeps a package database on disk and associates a state to each package. For example, to detect package additions slackpkg uses a reliable method that parses Slackware's changelog, while slackroll only downloads FILELIST.TXT and sees which packages it didn't know about previously. Or, when running clean-system, typically slackpkg asks about your personal packages too unless you blacklist them, while with slackroll you can mark them as foreign and it remembers that information.
The tutorial can be read at its website, which I linked to before, and there's also a FAQ
available, and inline help for every operation it supports.
Regarding third party repositories, I'd like to highlight some comments by Alien Bob in the slackpkg+ thread, to give you an idea.
In any case, I changed one line in /usr/libexec/slackpkg/functions.d/slackpkgplus.sh and that is the priority of the repositories. In the original file, the non-Slackware repositories have lowest priority, which is not what I want. If I have a package in a non-Slackware repository (say, glibc's multilib version) I want that to have higher priority than the Slackware package so that the Slackware package can never overwrite the multilib/custom package
slackroll always asks interactively when a package needs an upgrade and there are several versions available. It shows you which version is installed and the list of available remotes.
Of course, the slackpkg functionality that still only works with Slackware repositories is slackpkg's "install-new" but I am able to use "upgrade-all", "search", "file-search" and "info" functions with my own repositories. Cool!
slackroll can do all that, as far as I know, and detecting new packages works with external repositories too.
I hope some of you find the program interesting and give it a try. Have fun!
PS: if you have questions or bug reports or something, ask here or contact me by email
or use github's issue tracker or whatever. :-)