1 # squidpm 2 The Squid Package Manager is a utility for easily managing local copies and installations of remote git repositories. This tool is designed to be extremely modular and extensible, you should be able to add your own packages with ease. 3 4 This is intended primarily to be a tool for personal use, but I will accept pull requests and add packages to this repository if they are genuinely libre software. 5 6 ### Why squidpm? 7 squidpm is intended to be a convenient way to manage local installations of remote git repositories. Instead of needing to read through a repo's documentation for the specific list of commands every time you want to update/install/uninstall/etc the software, you can perform operations like these with a single call to squidpm. 8 9 Once you have installed a package using squidpm, you can then go into `repos/<package>` for that package and perform any actions you would be able to perform on a normal git repo, such as checking out other branches, modifying config files, etc., and then running `squidpm update <package>` to have those changes take effect. 10 11 Additionally, if you are a maintainer of a project with a public git repo, you could easily add your project to squidpm by creating a package script and submitting it here via pull request. Then the latest versions of your software will be available on squidpm as soon as you push changes to your own repo as you normally would, with no further action required by you. All users have to do is run `squidpm update <package>` to catch themselves up with your repo. 12 13 Lastly, squidpm will only support free software forever! If you install a package using squidpm, you are installing software that has been specifically curated and verified to respect your freedoms as a user of software. 14 15 ### Installation 16 To install squidpm for the first time, run these commands: 17 ``` 18 git clone https://github.com/joshiemoore/squidpm.git 19 cd squidpm 20 ./squidpm.sh install squidpm 21 ``` 22 This will create all the symlinks necessary to run squidpm. After that, you will be able to simply run `squidpm <operation> [package]` to perform package management operations. Note that all packages will be downloaded to the `squidpm/repos/` directory, so be sure to clone this repository in a location that has enough free space for what you're trying to do. 23 24 ### Operations 25 Use the command `squidpm help` or see `docs/operations.txt` to see a list of supported operations. 26 27 The `all` package is a special target that lets you perform the selected operation on all available packages. There is no confirmation, and squidpm really will update/uninstall all installed packages or install all packages in the squidpm repository, so make sure you really want to do what you're doing! 28 29 ### Contributing 30 The best way to contribute is to create package scripts for your own software (or software you use) and submit them to squidpm via pull request. See the `packages/` directory for examples of how to create your own package scripts. All you need to do is inherit from the 'base_package' script and provide implementations for each function. It's very simple and straightforward, and generally involves verbatim copying of commands from the repository's installation instructions. 31 32 Contributions are also welcome in the form of new issues, bugfixes, and documentation.