aboutsummaryrefslogtreecommitdiffsponsor
path: root/README.md
blob: be9acd51f2e517a405ec2614b8f2319c864b1e20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# Slackware Package Tools Alternative

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

The project is experimental, USE AT YOUR OWN RISK!

## 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](https://git.server.ky/slackcoder/pkgtools-go/tree/todo?h=todo).  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
```