{"id":13747734,"url":"https://github.com/petere/pex","last_synced_at":"2025-04-14T04:33:07.193Z","repository":{"id":6504120,"uuid":"7744677","full_name":"petere/pex","owner":"petere","description":"light-weight package manager for PostgreSQL","archived":false,"fork":false,"pushed_at":"2016-05-22T01:45:17.000Z","size":61,"stargazers_count":95,"open_issues_count":7,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-05-11T22:02:24.631Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/petere.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-01-22T02:28:03.000Z","updated_at":"2023-09-02T19:09:48.000Z","dependencies_parsed_at":"2022-09-19T01:11:25.471Z","dependency_job_id":null,"html_url":"https://github.com/petere/pex","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/petere%2Fpex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/petere%2Fpex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/petere%2Fpex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/petere%2Fpex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/petere","download_url":"https://codeload.github.com/petere/pex/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248822098,"owners_count":21166999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T06:01:40.329Z","updated_at":"2025-04-14T04:33:07.164Z","avatar_url":"https://github.com/petere.png","language":"Shell","funding_links":[],"categories":["Shell","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Pex\n\nPex is a light-weight package manager for PostgreSQL.\n\nInstall a package:\n\n    pex install plproxy\n\nSee available packages:\n\n    pex search\n\nIt's based on Git and standard Unix tools underneath.\n\nSee the man page for the complete usage instructions.\n\nPex is intended for developers and has support for managing multiple PostgreSQL installations.\n\nPex has been influenced by [Homebrew](http://mxcl.github.com/homebrew/) but is otherwise unrelated.\n\n[![Build Status](https://secure.travis-ci.org/petere/pex.png)](http://travis-ci.org/petere/pex)\n\n## Why Pex\n\nThere are many things to like:\n\n- Light-weight: only trivial run-time dependencies\n- Independent: doesn't matter where packages are hosted\n- Curated: no obsolete, unmaintained, immature, or broken packages\n- Trackable: control when packages change and know where they came from\n- Tested: all package downloads are automatically tested\n- Flexible: supports many installation layouts, can build Debs and RPMs\n- Extensible: fork and add your own in-house packages, no infrastructure required\n- Secure: everything is linked together by cryptographic hashes\n\n## Installation\n\nYou can just get the [pex](https://raw.githubusercontent.com/petere/pex/master/pex) program directly and install it wherever you want.\n\nThe standard installation procedure is:\n\n    git clone git://github.com/petere/pex.git\n    cd pex\n    sudo make install\n\nThis install the `pex` program and the man page under `/usr/local`. See the `Makefile` for more options.\n\nTo make a Debian package, run `make deb`.\n\nAfter installation, you must run\n\n    pex init\n\njust once to fetch the initial package descriptions and set up some internal directories.\n\nPex has minimal run-time dependencies.  You just need a POSIX shell, curl, and git, as well as PostgreSQL, including development headers, and any build dependencies of the packages you want to install.\n\n## How it works\n\nPex uses a repository of package description files (see below) to know where to download a specific package.  The package description files are (normally) in a Git repository, by default cloned from https://github.com/petere/pex-packages.  So to make changes, use Git tools to make a branch, revert changes, etc.  When asked to install a package, Pex downloads, unpacks, builds, and installs the package into the PostgreSQL installation.  There are command-line options to choose among multiple PostgreSQL installations.\n\nPex maintains a small amount of state to keep track of what it has already downloaded or installed.  See the man page for the file locations.\n\nIf you maintain custom versions of packages or have in-house packages, Pex can support that.  Just edit the repository and change the download URLs or add your own packages.\n\n## Package description file format\n\nUse `pex --repo` to see where the package description files are stored.  See the man page for details.\n\nThe package files are in YAML format.  But note that the files are parsed by a shell script, not by a real YAML library, so be gentle. The files must be named `packagename.yaml`.  Here is an example of `plsh.yaml`:\n\n    homepage: https://github.com/petere/plsh\n    url: https://github.com/petere/plsh/archive/1.20121226.zip\n    sha1: c85166bc04a3a3731c4acc3f144a0d4779f20010\n\nThere are three required fields:\n\n* `homepage`: A location that can be opened in a web browser to learn about the package.\n* `url`: A location that curl can download and either tar or zip can unpack to get the package source.\n* `sha1`: The SHA1 hash of the downloaded archive.\n\nThere is one optional field:\n\n* `aliases`: Lists alternative package names.  These can be used in commands such as `install` instead of the canonical package name.  If the package provides extensions that differ from the package name, it is recommended that the extension names be listed as aliases.  For example, the package `plv8` might list\n\n    aliases: plcoffee plls\n\nUse `pex audit` to check the package file for syntax and other errors. Note that this requires Perl and the YAML module.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpetere%2Fpex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpetere%2Fpex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpetere%2Fpex/lists"}