Package manager =============== How the command line interface might look like: Builds, and prints error messages if any module interface packages are missing. The URLs and distribution package names are printed. Note that there can never be any transitive build dependencies with SLUL (but runtime dependencies can be transitive). --dep-install=dist,bundled,hashed,download,unsigned Install any necessary dependencies for building or running. The parameter controls the order of preference for installation. * dist = from distribution (e.g. Debian) * bundled = bundled inside source tree * hashed = downloads that have a secure hash, and are locked to a tested version. this includes bundled also, with higher priority. * download = downloads that are signed (or hashed). this includes hashed,bundled also, with lower priority. * unsigned = any downloads. includes bundled,hashed,download. Will print errors for packages that are not available or are too old (this is only applicable for the dist option). The destination for installation is affected by --env, --user and --system, but distribution packages will typically be installed system-wide anyway. For that reason, if run without root access, it will typically not be able to install distribution packages. If implicitly included options are also specified in the parameter, then the preference order from the parameter takes precedence. --builddep-install=dist,bundled,hashed,download,unsigned Install build dependencies only. Note that distribution packages may have dependencies on other packages, so --builddep-install=dist is generally equivalent to --dep-install=dist --install-this Installs this module. It must have been built first. --auto Automatically downloads and installs signed and hashed dependencies (if not already available), builds the module and install it. Implies --user, unless --system or --env is specified. In --system mode, it prefers distribution packages, when they exist and satisfy the minimum version. If there are unmet runtime dependencies, it will prompt for confirmation. --download[=dist,hashed,download,unsigned] Downloads all unavailable dependencies, recursively. The default is to download signed and hashed dependencies only. --env=PATH Sets the environment path. This is used as the installation target path, but is also used for searching for existing modules, in addition to the default paths. Linux distributors will usually want to set this to /usr --env-only Do not search for modules outside of the environment path. --user Sets the environment to ~/.local (i.e. install for the current user) --system Sets the environment to /usr/local (i.e. install for all users). This is the default. --target-destdir=PATH Installs the targets into the given path. They probably have to be copied into the correct location before they will work. Implies --system, unless --user or --env is specified --prompts=[yes|no|stop] What to do if a there is a prompt. --query-trust[=SERVER-API-URL|local] Shows which keys have signed the package and the dependencies (or previous versions). Shows which keys the public keys has been signed with (both dependencies and the package itself). Specify "local" as the SERVER-API-URL to only query locally. Uncommon options: --dist=X,Y Sets the distributions (e.g. debian) in order of preference. Specify --dist= to disable all distributions. Specify --dist=list to list supported distributions. --static Builds static executables/libraries. When building a static executable, then static builds of dependencies and recursive dependencies are needed, so this could be quite slow. Uncommon options, that might not be needed: (The user can download dependencies manually) --broken-tls=expired,cert,cipher,version Ignore TLS errors for signed and hashed downloads. * expired = ignore expired certificate errors * cert = ignore all certificate errors * cipher = allow insecure ciphers * version = allow old TLS versions --dangerous-tls=expired,cert,cipher,version Ignore certificate errors for all downloads. Requires --INSECURE to unlock. --no-signature-check Do not check signatures. Requires --INSECURE to unlock. --no-hash-check Do not check hashes. Requires --INSECURE to unlock. --INSECURE Unlocks totally insecure options. --proxy[=URL] Use a proxy: * socks4://HOSTNAME:PORT * socks5://HOSTNAME:PORT * http://HOSTNAME:PORT * https://HOSTNAME:PORT In the early versions of the "slul" implementated in SLUL, it will probably not support compilation, and instead call "cslul" for that.