{"id":16199938,"url":"https://github.com/agateau/clyde","last_synced_at":"2025-04-10T01:13:43.252Z","repository":{"id":37606977,"uuid":"503245074","full_name":"agateau/clyde","owner":"agateau","description":"A cross-platform package manager for prebuilt applications","archived":false,"fork":false,"pushed_at":"2025-04-09T20:10:39.000Z","size":672,"stargazers_count":32,"open_issues_count":10,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-10T01:13:38.667Z","etag":null,"topics":["installer","package-manager","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agateau.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"agateau","ko_fi":"agateau","liberapay":"agateau","custom":"https://agateau.com/support/"}},"created_at":"2022-06-14T07:01:09.000Z","updated_at":"2025-04-09T20:10:43.000Z","dependencies_parsed_at":"2024-03-13T09:31:55.433Z","dependency_job_id":"8e556f1c-1f63-40db-8a73-cfcd538fb184","html_url":"https://github.com/agateau/clyde","commit_stats":{"total_commits":386,"total_committers":1,"mean_commits":386.0,"dds":0.0,"last_synced_commit":"b0e837616ddce9c3168b286e944da6069bf1f2f2"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agateau%2Fclyde","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agateau%2Fclyde/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agateau%2Fclyde/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agateau%2Fclyde/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agateau","download_url":"https://codeload.github.com/agateau/clyde/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137891,"owners_count":21053775,"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":["installer","package-manager","rust"],"created_at":"2024-10-10T09:28:46.175Z","updated_at":"2025-04-10T01:13:43.217Z","avatar_url":"https://github.com/agateau.png","language":"Rust","funding_links":["https://github.com/sponsors/agateau","https://ko-fi.com/agateau","https://liberapay.com/agateau","https://agateau.com/support/"],"categories":[],"sub_categories":[],"readme":"![Clyde](docs/title.png)\n\nClyde is a package manager for prebuilt applications.\n\nIt works on Linux, macOS and Windows.\n\n[![Clyde demo](https://asciinema.org/a/629496.svg)](https://asciinema.org/a/629496)\n\n## Motivation\n\nYou want to install the latest version of tools like ripgrep, fd or fzf, but:\n\n- They are not available in your distribution, or the available versions are too old, and you don't want to mess up your system.\n- You don't want to have to think about where to install them, add them to $PATH or make their man pages available.\n- You don't want to remember how you installed them when it's time to update them.\n\nYou don't have root access on the machine where you need these tools, so installing system packages is not an option.\n\nYou want to pin the tool versions to create a reproducible platform.\n\nYou are concerned about supply-chain attacks (see Security section).\n\n## Getting started\n\n### Installing Clyde\n\nTo get started, you need to download the Clyde binary yourself. Clyde can update itself, but it needs to be installed manually first. You can either:\n\n- Download a pre-built archive from the [releases page](http://github.com/agateau/clyde/releases).\n\n- Download a pre-built archive of the `main` branch from \u003chttps://builds.agateau.com/clyde\u003e.\n\n- Build it yourself. Clyde is written in Rust, so if you have the Rust tool-chain installed, then you can install it with `cargo install clyde`.\n\nNext, make sure git is installed: Clyde uses git to download and update the Clyde store (this requirement might go away in the future).\n\n### Setting up your Clyde home\n\nClyde installs all applications in \"Clyde home directory\": a directory created in the default cache directory of your home directory.\n\nAssuming you downloaded a Clyde archive, unpacked it and changed to its directory.\n\nRun `./clyde setup`. This creates Clyde home directory, and clones the [Clyde Store](https://github.com/agateau/clyde-store) in it.\n\n```\n$ ./clyde setup\n[I] Setting up Clyde in \"/home/demo/.cache/clyde\"\nCloning into '/home/demo/.cache/clyde/store'...\nremote: Enumerating objects: 1790, done.\nremote: Counting objects: 100% (1790/1790), done.\nremote: Compressing objects: 100% (653/653), done.\nremote: Total 1790 (delta 1132), reused 1745 (delta 1113), pack-reused 0\nReceiving objects: 100% (1790/1790), 499.73 KiB | 123.00 KiB/s, done.\nResolving deltas: 100% (1132/1132), done.\n[I] Creating Clyde database\n[I] Creating activation script\n\nAll set! To activate your Clyde installation, add this line to your shell startup script:\n\n. /home/demo/.cache/clyde/scripts/activate.sh\n```\n\nAdd the created activation script to your shell startup script and restart your shell.\n\nYou are now ready to use Clyde. Let's install ripgrep:\n\n```\nclyde install ripgrep\n```\n\nCheck it works:\n\n```\nrg --help\n```\n\nCheck you can read its man page:\n\n```\nman rg\n```\n\nCheck auto-completion works:\n\n```\n$ rg --regex\u003ctab\u003e\n--regexp            -- specify pattern\n--regex-size-limit  -- specify upper size limit of compiled regex\n```\n\n## Commands\n\n### `clyde setup`\n\nSetup Clyde: setup the Clyde store, and creates an activation script. All changes are done in the \"Clyde prefix\" (see \"Folder hierarchy\" section).\n\nThe Clyde store contains the list of all packages Clyde can install.\n\n### `clyde search foobar`\n\nSearches Clyde store for a package matching \"foobar\" in its name or description.\n\n### `clyde install foobar[@version]`\n\nInstalls `foobar` package, following the `@version` restriction if set.\n\nThe `@version` syntax follows [Cargo's interpretation of Semantic Versioning][cargo-semver].\n\nThis makes the syntax a bit surprising: `clyde install foobar@1.2.3` can install an 1.2.4 version or even an 1.3.0 version, because Cargo considers them to be compatible.\n\nTo really pin a version you must use `foobar@=1.2.3`. To install the latest 1.2 version, use `'foobar@1.2.*'` or `foobar@~1.2`.\n\nThis syntax may change in the future.\n\n[cargo-semver]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html\n\n### `clyde uninstall foobar`\n\nUninstalls the `foobar` package. Can also be called as `clyde remove foobar`.\n\n### `clyde show foobar`\n\nShows details about `foobar` package.\n\n### `clyde update`\n\nUpdates Clyde store so that Clyde is aware of the availability of new packages or new versions of existing packages.\n\n### `clyde upgrade`\n\nUpgrades all packages to the latest version. If a package has been installed with an `@version` restriction, enforces it.\n\n### `clyde doc foobar`\n\nShows the list of documentation files provided by the `foobar` package. Let you pick one and read it with the appropriate application.\n\n`clyde doc` looks for a pager to display text files. You can set one in `$CLYDE_PAGER` or in `$PAGER`. If none of these variables is set, it falls back to an hard-coded list of pager programs.\n\n## FAQ\n\n### Is Clyde more secure than `curl \u003curl\u003e | bash`?\n\nYes, but it still requires you to be careful.\n\nIt is more secure in that Clyde checks the integrity of all downloaded archives (The Clyde store contains the sha256 checksum of all known archives), making it more complicated for an attacker to trick you into installing a corrupted archive.\n\nThis means if an attacker takes over the GitHub account of an app developer and replaces some release artifacts with others, Clyde will refuse to install them. It does not protect however from the case where the attacker releases a new version of the application. To protect against this you need to pin the version numbers.\n\nClyde does not sandbox the applications.\n\n### Are Clyde packages built by Clyde?\n\nNo, Clyde installs binaries produced by app developers, it does not rebuild them (unlike projects like [Homebrew](https://brew.sh)).\n\nThis means that there is no guarantee that a package will run on your machine, even if Clyde installs it properly. This is especially true on old Linux installations: it is up to the app developer to provide binaries working on your system.\n\nIf a package used to work but the newer version does not, then you can pin the install to the latest working version, using the `@version` syntax.\n\n### Where is the list of Clyde packages stored?\n\nClyde packages are defined in the [Clyde Store repository][store-repo]. `clyde setup` clones this repository on your machine. `clyde update` pulls the latest changes from it.\n\n### How do I request a new package?\n\nFile an issue on the [Clyde store repository][store-repo].\n\n### How do I add a new package?\n\nFollow the [creating a package documentation](docs/creating-a-package.md).\n\n[store-repo]: https://github.com/agateau/clyde-store\n\n## Similar projects\n\nThere are other projects similar to Clyde. This section lists some of them, and the ways they differ from Clyde:\n\n- [Homebrew](https://brew.sh/):\n    - Binaries are built by Homebrew, not by application developers (not necessarily a bad thing, just a different approach).\n    - No Windows support.\n    - Unreliable support for pinned versions.\n\n- [Hermit](https://cashapp.github.io/hermit/):\n    - More geared maintaining a set of tools to build a project.\n    - No package integrity checks.\n    - No Windows support.\n    - No man page integration.\n\n- [Huber](https://github.com/innobead/huber):\n    - No package integrity checks.\n    - Only for GitHub projects.\n    - No man page integration.\n    - Default package list is hard-coded in the application.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagateau%2Fclyde","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagateau%2Fclyde","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagateau%2Fclyde/lists"}