# Slackware Package Tools Alternative An alternative set of Slackware's core package management tools. ## Benefits - Clear modifiable source code These programs are written in a simple and easy to understand programming language called Golang. Slackware's official tools are written in a programming language (bash) which is harder to understand and customize. - Stable Do you run Slackware Current? Ever mess up an update? This project will allow you to more reliably install or remove packages, making it easier to recover a broken system. Slackware's package tools like 'installpkg' contain dependencies on commands like 'tar' and 'tar's library dependencies. These alternatives have no runtime dependencies, except when running a package's install/uninstall scripts, or ldconfig. ## Contributing Planned improvements and known issues are listed on the project's [issue tracker](https://todo.sr.ht/~slack-coder/pkgtools-go). Please check there before making any bug reports. You can help improve the project through [funding](https://funding.server.ky/project/pkgtools-go). You will be able to influence the direction and speed of project development, while matching other's contributions. For more information, take a look the site's '[about](https://funding.server.ky/project/pkgtools-go/about)' page. ## Install The recommended way to build these tools is to call this command from within the directory. The additional parameters are recommended to minimize external dependencies. You likely want to set the GOBIN environment variable to your preferred install location. ``` go install \ -ldflags="-linkmode external -extldflags -static" \ -a ./cmd/... ``` ## Whats included? The commands 'installpkg' and 'removepkg' are included. These tools are planned to be included: - explodepkg - upgradepkg These tools will likely not be included: - makepkg - pkgdiff - pkgtool ## Operation Notes ### Unsupported tar attributes These tools will exit with error in the unlikely event the package has unsupported file attributes, like PAX. You can opt to ignore them via an environment variable. ``` export PKGTOOLS_GO_STRICT=NO installpkg some-cool-package.txz ```