An installable .deb of prel, built by prel release has been fixed.
See more details at : https://github.com/pdulvp/prel/issues/5
- sudo apt install ./prel_0.1.0_all.deb puts prel on a machine with no clone
of it: the tree at /usr/share/prel, /usr/bin/prel a symlink into it,
Architecture: all since there is nothing to compile
- PREL_DIR resolves that symlink through readlink -f - BASH_SOURCE holds
the path prel was invoked as, so from /usr/bin/prel it yielded /usr/bin
and the scripts/ loop silently loaded no command at all
- the build script is packaging/build-deb.sh, not in scripts/: every
scripts/*.sh becomes a prel command, so a build script there would ship a
prel build-deb to everyone who installs the package
- the package sets its own modes rather than inheriting the clone's, where
mode 770 files would install root-owned and unreadable to every other user -
a package that installs cleanly and then refuses to run
- VERSION starts at 0.1.0, and prel.buildCommand with prel.artifacts
make prel release build the .deb and attach it to the GitHub release
A .deb of prel, built by prel release
<sub>2026-10-21-2131-deb-package.md — 2026-10-21 21:31</sub>
Goal
sudo apt install ./prel_0.1.0_all.deb puts prel on the PATH of a machine
that has no clone of it, and prel release <x.y.z> is what produces that file
and attaches it to the GitHub release. No apt repository: a .deb on the
release page, installed by hand, is the whole of it for now.
Pure shell, so Architecture: all. Nothing under scripts/ ever writes into
PREL_DIR - the trees it shares are read as source material and copied into
the target repository - so a read-only install under /usr/share is sound.
Decisions
configs/, skills/, memory/, .githooks/ under /usr/share/prel, and
/usr/bin/prel a symlink to /usr/share/prel/prel.sh. Identical layout
means no path in any script has to learn where it was installed.
- A whitelist of what goes in the payload, not a blacklist of what stays out:
a top-level directory added later must be named before it ships.
- The build script lives in packaging/, not scripts/. prel.sh sources
every scripts/*.sh and turns it into a command, so a build script there
would ship a prel build-deb to every user - a command about prel's own
clone, in the hands of people who do not have one.
- PREL_DIR resolves the symlink through readlink -f. BASH_SOURCE[0] is
the path prel was invoked as, so from /usr/bin/prel it yields /usr/bin
and the scripts/ loop silently finds nothing. A no-op in a clone, so the
development workflow is unchanged.
- prel.buildCommand carries ${version}, which release.sh expands before
the eval: the version being released reaches the build as an argument.
Run by hand with no argument, the script falls back to the VERSION file.
- VERSION starts at 0.1.0. It holds the current version, and prel has
released nothing yet.
- prel.buildCommand and prel.artifacts are git config, so they live in
.git/config and cannot be committed - git will not let a tracked file set
them. They are set once per clone, and the README is where that is written
down.
- Depends: bash, git; gh is Recommends, since only prel release and
prel issue-from-plans need it and the rest of prel works without.
Steps
- [x] prel.sh: readlink -f in the PREL_DIR line
- [x] VERSION: 0.1.0
- [x] .gitignore: build/
- [x] packaging/build-deb.sh: version from $1 or the VERSION file, stage
the whitelist into build/prel_<version>_all/, DEBIAN/control,
README to /usr/share/doc/prel/, the /usr/bin/prel symlink,
modes normalised to 755/644, dpkg-deb --build --root-owner-group
- [x] test: build it, dpkg-deb -c the contents and modes, install it in a
container or with --instdir, run prel usage and one real command
from a repository that is not prel's
- [x] test: prel release 0.1.0 -n shows the build command and the artifact
- [x] set prel.buildCommand and prel.artifacts in this clone
- [x] README.md: an install-from-.deb line in Quick Start, and a packaging
section - how to build, the two git config lines, what the package puts
where
- [x] mark complete; write docs/plans/sumup.md per the plan-summary skill;
archive this file
<sub>Filed by prel from the completed plans at commit time.</sub>