pdulvp.fr

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

  • The payload is the repository tree verbatim: prel.sh, scripts/,

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>