{"id":19081053,"url":"https://github.com/alessandro-salerno/tarman","last_synced_at":"2025-04-30T07:41:11.202Z","repository":{"id":261670607,"uuid":"876579187","full_name":"Alessandro-Salerno/tarman","owner":"Alessandro-Salerno","description":"The portable, cross-platform, extensible, and simple package manager for tarballs (and others!)","archived":false,"fork":false,"pushed_at":"2025-04-12T08:50:25.000Z","size":9322,"stargazers_count":28,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T09:39:12.179Z","etag":null,"topics":["archlinux","arm64","c","cli","cross-platform","extensible","free-software","gpl-3-or-later","hobby-os","linux","macos","package-manager","pacman","portable","posix","simple","targz","unix","windows","x86-64"],"latest_commit_sha":null,"homepage":"","language":"C","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/Alessandro-Salerno.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-22T07:59:41.000Z","updated_at":"2025-04-12T08:49:21.000Z","dependencies_parsed_at":"2024-11-24T20:26:53.647Z","dependency_job_id":"5cbd2689-59ec-48d8-a444-61e82fe28948","html_url":"https://github.com/Alessandro-Salerno/tarman","commit_stats":null,"previous_names":["alessandro-salerno/tarman"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alessandro-Salerno%2Ftarman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alessandro-Salerno%2Ftarman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alessandro-Salerno%2Ftarman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alessandro-Salerno%2Ftarman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alessandro-Salerno","download_url":"https://codeload.github.com/Alessandro-Salerno/tarman/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249479068,"owners_count":21279191,"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":["archlinux","arm64","c","cli","cross-platform","extensible","free-software","gpl-3-or-later","hobby-os","linux","macos","package-manager","pacman","portable","posix","simple","targz","unix","windows","x86-64"],"created_at":"2024-11-09T02:32:45.385Z","updated_at":"2025-04-18T10:35:10.544Z","avatar_url":"https://github.com/Alessandro-Salerno.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ch1 align=\"center\"\u003etarman\u003c/h1\u003e\n    \u003cp align=\"center\"\u003e The portable, cross-platform, extensible, and simple package manager for tarballs (and others!) \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[contributors-shield]: https://img.shields.io/github/contributors/Alessandro-Salerno/tarman.svg?style=flat-square\n[contributors-url]: https://github.com/Alessandro-Salerno/tarman/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/Alessandro-Salerno/tarman.svg?style=flat-square\n[forks-url]: https://github.com/Alessandro-Salerno/tarman/network/members\n[stars-shield]: https://img.shields.io/github/stars/Alessandro-Salerno/tarman.svg?style=flat-square\n[stars-url]: https://github.com/Alessandro-Salerno/tarman/stargazers\n[issues-shield]: https://img.shields.io/github/issues/Alessandro-Salerno/tarman.svg?style=flat-square\n[issues-url]: https://github.com/Alessandro-Salerno/tarman/issues\n[license-shield]: https://img.shields.io/github/license/Alessandro-Salerno/tarman.svg?style=flat-square\n[license-url]: https://github.com/Alessandro-Salerno/tarman/blob/master/LICENSE.txt\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n![](https://tokei.rs/b1/github/Alessandro-Salerno/tarman)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\".github/screenshots/showcase.gif\" width=\"100%\"\u003e\n\u003c/div\u003e\n\n## Why tarman?\nArchives are often used in the Linux world to distribute packages that work on all distros, but this often comes with the caveat of having to manually manage the installation and, worst of all, updates. One notable example is [Discord](https://discord.com/) which only provides packages for Debian-based distros, while everybody else is left with a `tar.gz` archive which contains a version of the program that can't even update itself.\n\nSome distros try to solve the issue by letting their users create and distribute packages (see [Arch User Repository](https://aur.archlinux.org/)), but obviously this means downloading software from unofficial sources which may break the ToS and can potentially be dangerous.\n\nTarman solves this by automating the steps you would have to follow to install archives as packages. Much like a regular package manager, it is able to install packages from local files, URLs and repositories.\n\n## How to install tarman\nYou can install tarman... with tarman...\n### Install tarman with tarman\n\nOn Linux (x86-64):\n```sh\ncurl -L \"https://github.com/Alessandro-Salerno/tarman/raw/refs/heads/latest-build/linux-x86_64/tarman\" -o ./tarman \u0026\u0026 chmod +x ./tarman \u0026\u0026 ./tarman add-repo \"https://github.com/Alessandro-Salerno/tarman-user-repository/raw/refs/heads/latest-repos/linux-x86_64.tar.gz\" \u0026\u0026 ./tarman install -r tarman \u0026\u0026 rm ./tarman\n```\n\nOn Linux (ARM64 - AARCH64):\n```sh\ncurl -L \"https://github.com/Alessandro-Salerno/tarman/raw/refs/heads/latest-build/linux-arm64/tarman\" -o ./tarman \u0026\u0026 chmod +x ./tarman \u0026\u0026 ./tarman add-repo \"https://github.com/Alessandro-Salerno/tarman-user-repository/raw/refs/heads/latest-repos/linux-arm64.tar.gz\" \u0026\u0026 ./tarman install -r tarman \u0026\u0026 rm ./tarman\n```\n\nOn macOS (Apple Silicon - ARM64 - AARCH64):\n```sh\ncurl -L \"https://github.com/Alessandro-Salerno/tarman/raw/refs/heads/latest-build/macos-arm64/tarman\" -o ./tarman \u0026\u0026 chmod +x ./tarman \u0026\u0026 ./tarman add-repo \"https://github.com/Alessandro-Salerno/tarman-user-repository/raw/refs/heads/latest-repos/macos-arm64.tar.gz\" \u0026\u0026 ./tarman install -r tarman \u0026\u0026 rm ./tarman\n```\n\nOn macOS (Intel - x86-64):\n```sh\ncurl -L \"https://github.com/Alessandro-Salerno/tarman/raw/refs/heads/latest-build/macos-x86_64/tarman\" -o ./tarman \u0026\u0026 chmod +x ./tarman \u0026\u0026 ./tarman add-repo \"https://github.com/Alessandro-Salerno/tarman-user-repository/raw/refs/heads/latest-repos/macos-x86_64.tar.gz\" \u0026\u0026 ./tarman install -r tarman \u0026\u0026 rm ./tarman\n```\n\n\u003e [!IMPORTANT]\n\u003e To use tarman properly, you'll have to add it to your `PATH` environment variable. This procedure depends on your [Shell](https://en.wikipedia.org/wiki/List_of_command-line_interpreters), with bash for example:\n\u003e ```sh\n\u003e echo \"export PATH=~/.tarman/path/:\\$PATH\" \u003e\u003e ~/.bashrc \u0026\u0026 source ~/.bashrc\n\u003e ```\n\n### Install tarman from the AUR (Arch Linux and derivatives)\n...or from the AUR.\nUsing your preferred AUR package manager (e.g. yay):\n```sh\nyay -S tarman-bin\n```\n\n## How to use tarman\nThis is a CLI tool, so the only way to interact with it (at the moment) is through the terminal. After installing it, type `tarman help` for a list of all commands and options. \n\n### Installing packages\nTo install a package you can use the `tarman install` command with the following options:\n- `-u` Downloads from a URL (e.g., `tarman install -u https://some.domain/some/path/archive.tar.gz`)\n- `-r` Downloads from a repository using a recipe (e.g., `tarman install -r nvim`)\n- `-f` Is often used with `-u` to set the archive format (e.g., `-f zip`)\n- If neither `-u` nor `-r` are specified, tarman will assume that you have an archive locally (e.g., `tarman install ~/Downloads/program.tar.gz`)\n\n### Updating packages\nTo update an installed package, assuming that your local repositories are up-to-date, just type:\n```\ntarman update \u003cpackage name\u003e\n```\n\n### Removing packages\nTo remove a package, simply type:\n```\ntarman remove \u003cpackage name\u003e\n```\n\n\u003e [!WARNING]\n\u003e This command can be used to remove tarman itself. Be careful!\n\n### Adding repositories\nTo add repositories from remote URLs, you can use the following command:\n```\ntarman add-repo \u003cURL\u003e\n```\n\n### Removing a repository\nTo remove a repository, use:\n```\ntarman remove-repo \u003crepo name\u003e\n```\n\n\u003e [!WARNING]\n\u003e This command can be used to remove the [tarman user repository](https://github.com/Alessandro-Salerno/tarman-user-repository) from which tarman itself is intalled and updated. Be careful!\n\n## Portable?\nArchives have the advantage of being universal. The `tar` format, for example, is standardized and documented, thus anyone with the right know-how can create their own program to archive and extract tarballs. Tarman is designed to take advantage of this, its source code is structured in a way that should make it very easy to port to operating systems other than GNU/Linux. In fact, there's a working port for macOS (Darwin)!\n\nTarman should be fit for hobby operating systems since it leaves most concrete aspects to the OS-specific implementation and avoids the use of advanced OS features (e.g., dynamic linking with `dlopen`).\n\nSee the [documentation](docs/porting.md) for more information.\n\n## Extensible?\nTarman has a tiny core and is very modular. There's no code to extract archives or download files in the core program, instead tarman relies on other programs. By default, it attempts to call `tar` and `curl` from the `PATH` environment variable, but plugins can be written and installed to support other backends and file formats!\n\nSee the [documentation](docs/plugins.md) for more information.\n\n## How to build tarman\nUsing the included Makefile:\n```sh\nmake debug        # Compile the whole program (plugins included) in debug mode\nmake release      # Compile the whol program (plugins included) in release mode\nmake plugin-sdk   # Compile ONLY the Plugin SDK\nmake plugins      # Compile the Pugin SDK and all built-in plugins\n```\n\n## License\nTarman is distributed under the GNU General Public License v3.0 or later. This only applies to the core source code (and headers) of the program, files added by contributors may be distributed under different licenses. The license is always stated at the beginning of each source file. The copyright notice at the top of each source file states the name of the original creator of the file, copyright for changes and contributions however belongs to their authors. \n\nThe list of authors can be found [here](./AUTHORS)\n\n## Contributing\nThere's much to be done here, so if you want to contribute, go ahead! Read (and expand) the [documentation](./docs) and the [CONTRIBUTING](./CONTRIBUTING.md) file and take not of the license policy stated above.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falessandro-salerno%2Ftarman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falessandro-salerno%2Ftarman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falessandro-salerno%2Ftarman/lists"}