-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the spkg wiki!
This package manager was initially designed as a lightweight fully-customizable package manager to explore how package managers work. After exploring LinuxFromScratch they have a section for package managers, because without one you’d have many obsolete files on your system needing cleaning out if you upgrade with any frequency, and would eventually need a full system reset. I’m quite lazy in that doing such a large task is a bit too much even if done only once a year.
Other package managers seem to mystify this experience for me. A binary based package manager seems overkill as I’d be creating packages to only ever be used once (tho very useful for larger distros with many users not caring for a large degree of customization) Source based distros such as Gentoo have written their own language within ebuilds among having sort of ‘magic’ happening within the ebuilds causing newer readers to be unsure of what exactly is happening without deep diving and doing research into their system.
Obviously to have a sense of standardization a layout and API, if you will, is required. Slackware seems to have the most simplistic of all choices, however this minimalist approach seems a bit too much to me and offers no sense of organization.
Many packages would require a lot of excess code for things that are always done such as recording and clean-up. This also could run into issues not having the recording done the same way across the board, or having to update many files to fix or alter 1 thing.
I chose the Gentoo’s src_* functions as a way to group or organize the code, as well as many packages use the same duplicated code such as src_compile’s make
. Omitting this will just cause the compile_default to initiate.
My approach’s focus will be to use as little helper methods as possible while still making to build file easy to read.
The package manager itself should allow for most tasks to be done for the user without needing much maintenance or several options. Simplistic is key, a package manager shouldn’t require the user to do much of anything other than decide what they want installed or uninstall.
Usage: /sbin/spkg [Arguments] [package | @set]
@set can be any of: @all @system @world
see spkg-sets, for a complete listing.
Modes (Default: Install)
--search, -s Search and list package information.
--uninstall, -u uninstall package.
--rebuildKernelMods Rebuilds all Kernel Modules.
--rebuildPythonMods Rebuilds all Python Modules.
--rebuildPerlMods Rebuilds all Perl Modules.
--buildKernel Builds a new kernel
--deepClean, -D Compares the charts of the world file and packages installed.
--sync Syncs the package database via: git pull
--preserved Checks for and initiates a rebuild of all packages requiring a rebuild.
--resume Continues where we left off.
Developer Options
--buildbdeps Updates .build files setting DEPS/BDEPS/RDEPS.
--updatesha1 [pkg] Creates or updates sha1sum for the given package.
--bootstrap [path] Generates a new install at [path]
--debug Shows all commands as they are being ran
Optional Arguments
--silentBuild, -Q Hides all build output.
--user [username] Runs all build file commands as [username]
--oneshot, -1 Omits adding any package requested to the world file.
--empty, -e Assumes an empty world file
--update, -U Finds all updates for all installed packages.
--force, -f Forces install of already installed packages.
--pretend, -p Shows what will be done, without doing it.
--fetchOnly Fetches all files without installing.
--verify Verify PGP Signatures if available.
--installArchive, -A Installs package(s) from a preprepared archive.
--archiveDir [dir] Sets the archive Directory (default: /var/lib/spkg/archive)
--enable-tests Enable package specific tests.
--disable-tests Disables package specific tests. (Default)
--logdir, -l [file] Set the Log Directory (default: /var/log/spkg)
--verbose, -v Make the output more verbose. (add another for extra)
--help, -h This Help Message.