aboutsummaryrefslogtreecommitdiff

Slackware Package Tools Alternative

An alternative set of Slackware's core package management tools.

DO NOT USE! The project is experimental, and should not be used until tested adequately.

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 todo branch. Please check there before making any bug reports.

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

Verifying source code

The latest project commit will be signed by the maintainer's GPG key. You will need to retreive the his key first. Pay extra attention to the key fingerprint which should remain the same.

  gpg2 --auto-key-locate=wkd --locate-keys slackcoder@server.ky
  # gpg: key 0x8D147EEA19EFF029: public key "Slack Coder <slackcoder@server.ky>" imported
  # [..]
  # sub   cv25519/0xDCA6C34C0A95B957 2022-07-17 [E] [expires: 2024-07-16]

  git -c gpg.program=gpg2 verify-commit HEAD
  # [..]
  # gpg: Good signature from "Slack Coder <slackcoder@server.ky>" [unknown]
  # [..]
  # Primary key fingerprint: D0CF FD10 75CA B8DA 3299  7507 8D14 7EEA 19EF F029

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/...

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