smileaf419 / spkg

Bash based package manager
GNU General Public License v2.0
6 stars 0 forks source link

spkg

Bash based package manager based roughly after Gentoo's Portage. This is intended to be a playground for learning about package management and not right now intended as a serious distribution.

Join me at: https://discord.gg/DQR42sWk

To Use

mkdir -p /var/{lib/spkg,db} git clone https://github.com/smileaf419/spkg /var/lib/spkg/bin git clone https://github.com/smileaf419/spkg-repository /var/db/spkg

spkg-tools contains the scripts, I recommend symlinking the spkg script to a dir within your path

INSTALL_PATH must be set within the /etc/spkg.conf to wherever you've placed the scripts. on first run a default /etc/spkg.conf should be created if ran as root.

BUILD_USER must be set to actual accounts or you can create a spkg user and use the default.

BUILD_USER should have read/write access to the WORKDIR_BASE dir.

/etc/spkg.conf

MAKEOPTS: extra options to pass to make, such as -j or -s to make commands silent.

CFLAGS CXXFLAGS: Compile time optimizations

USE Gentoo like enables and disables certain options within packages.

PAGE Groff option set to either 'letter' (US) or 'A4' (everyone else)

BUILD_PACKAGE (yes|no) If set to 'yes' will create an archive within PKG_ARCHIVE_DIR

PKG_ARCHIVE_DIR path to where archives will be stored. (default: /var/lib/spkg/archive)

ENABLE_TESTS (yes|no) Best to keep to 'no' and use --enable-tests on certain packages.

INSTALL_DOCS (yes|no) set to 'yes' to free up some extra space if you don't actually read/want any documentation

LOGDIR path to where logs should be kept (default: /var/log/spkg)

LOGFILE File name to use for log files.

INSTALL_PATH path to where spkg scripts are installed. (default: /var/lib/spkg/bin)

PKG_DB_DIR path to build files. (default: /var/db/spkg)

PKG_CACHE path to data pkg data files (default: /var/lib/spkg/data)

DISTFILES path to download source and patch files (default: /var/lib/spkg/files)

PKG_WORLD path to the world file, this file stores all explicitly installed packages. (default: /var/lib/spkg/world)

WORKDIR_BASE path to where to build packages (default: /var/tmp/spkg)

Helper scripts

I've shamelessly written a script that scrape data from gentoo's repository

check-update : uses wget to grab the index of a gentoo mirror and checks the files listed for updates.

Repository Tools

clean-db : Cleans the repository keeping only the 3 most recent versions.

clean-archive : Cleans the archives of old versions.