aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: e74f8152c17f68c706909f023a0ca8bd9fe02445 (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
Stowpkg: ports system based on GNU Stow
=======================================

A non-conflicting Unix package manager built atop GNU Stow.

Features
--------

* Non-conflicting with any other package management in use (distro-spefic, npm, pip, etc).
* Multi-target support: you can keep may isolated and independent software trees.
* Multi-distro support: works for any GNU/Linux and possible any BSD-variant.
* Repository signature verification using GnuPG and signed git commits.
* Small enough so everybody can learn how a package manager works.

Coming features
---------------

* Automatic patch application.
* Source code verification using multiple methods (commit hash, checksums, OpenPGP).

Installation
------------

On a Debian-like system:

    sudo apt install stow build-essential

Usage
-----

    stowpkg search             # list    packages available on ports
    stowpkg install  <package> # install packages from source

Coming usage
------------

    stowpkg list               # list    packages installed
    stowpkg remove   <package> # remove  packages
    stowpkg purge    <package> # purge   packages
    stowpkg update             # update  ports    repository
    stowpkg upgrade  [package] # upgrade packages
    stowpkg upstream <package> # check   packages versions at upstream
    stowpkg build              # simple  package  builder (./configure && make && make install)

Running installed applications
------------------------------

Make sure to include stowpkg package tree into your `PATH`, `MANPATH`, `LD_LIBRARY_PATH`, etc.

Params
------

Passe using environment variables:

* `BASE`: defaults `<stowpkg-repo>/tree/<architecture>`, but can be configured to anything like
  `/usr/local` with corresponding packages installed `/usr/local/stowpkg`.

Configuration
-------------

Use `~/.config/stowpkg` do put any default parameters.

Ports layout
------------

Check the repo for examples :)

Repository layout
-----------------

Starting from `$BASE` (like `/usr/local`) we have:

    {bin,lib,man,share,etc,src}: usual Unix paths
    stow
        package_name-VERSION

Further development
-------------------

* Per-architecture binary package support using git-annex and GnuPG signatures, including:

    stowpkg pack  <package> # pack an installed package
    stowpkg fetch <package> # fetch package from the repo

What is does
------------

If you want to do it manually:

    sudo apt install <luakit-depencies>
    git clone https://github.com/luakit/luakit
    cd luakit
    make PREFIX=/usr/local/stow/luakit
    sudo make PREFIX=/usr/local/stow/luakit install
    cd /usr/local/stow/
    sudo stow luakit

References
----------

* [GNU Stow Docs](http://www.gnu.org/software/stow/manual/html_node/index.html).
* [Using GNU Stow to manage source installs](http://blog.danieroux.com/2005/08/07/using-gnu-stow-to-manage-source-installs/).
* [Get rid of stowaway packages with GNU Stow](https://www.linux.com/news/get-rid-stowaway-packages-gnu-stow).