{"id":13723074,"url":"https://github.com/taylor/kiex","last_synced_at":"2025-05-15T02:07:53.503Z","repository":{"id":12787153,"uuid":"15460812","full_name":"taylor/kiex","owner":"taylor","description":"Elixir version manager","archived":false,"fork":false,"pushed_at":"2025-03-18T18:19:16.000Z","size":187,"stargazers_count":786,"open_issues_count":19,"forks_count":66,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-09T10:00:41.658Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://taylor.github.io/kiex/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taylor.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2013-12-26T21:36:38.000Z","updated_at":"2025-03-18T18:19:20.000Z","dependencies_parsed_at":"2024-10-24T11:56:34.783Z","dependency_job_id":"714896ab-9450-4d87-827c-2b53ab94aefa","html_url":"https://github.com/taylor/kiex","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylor%2Fkiex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylor%2Fkiex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylor%2Fkiex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylor%2Fkiex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taylor","download_url":"https://codeload.github.com/taylor/kiex/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254259383,"owners_count":22040820,"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-03T01:01:36.003Z","updated_at":"2025-05-15T02:07:53.479Z","avatar_url":"https://github.com/taylor.png","language":"Shell","funding_links":[],"categories":["Shell","Tooling","List of \\*env-, ch\\*- and \\*vm- style version managers","Version Managers"],"sub_categories":["Elixir"],"readme":"kiex - Elixir version manager\n====\n\nKiex allows you to easily build and switch between different [Elixir](http://elixir-lang.org/) versions.\n\nIt supports setting the default (global) Elixir version as well as per shell/project versions.\n\nEverything is self-contained under ~/.kiex.\n\nUsage is based *lightly* on [RVM](http://rvm.io), [kerl](https://github.com/spawngrid/kerl), and [rbenv](https://github.com/sstephenson/rbenv).\n\n*NOTE:* Some Erlang source builds are broken.  [See below](#notes).\n\n### Install\n\n**Prerequisites:** bash, curl, erlang, git, make, openssl \n\nRun the following to get up and running:\n\n```\n\\curl -sSL https://raw.githubusercontent.com/taylor/kiex/master/install | bash -s\n```\n\nwhich will install in $HOME/.kiex.\n\n### Usage\n\nList installed versions\n * ``` kiex list ```\n\nList known releases\n * ``` kiex list known ```  (or ``` kiex list releases ```)\n\nList current branches\n * ``` kiex list branches ```\n\nInstall a known release or branch.\n * ``` kiex install 0.12.5 ```\n\nUse specific elixir version\n * ``` kiex use 0.12.5 ``` -- Sets the elixir version for current shell.\n\nCreate an alias for the specified elixir version\n * ``` kiex alias 0.12.5 0.12 ```\n\nUse sub-shell with specific elixir version\n * ``` kiex shell 0.12.5 ``` -- Starts sub-shell with given elixir version. Exiting shell goes to default.\n\nSet default elixir version\n * ``` kiex default 0.12.5 ```\n\nUninstall kiex and elixirs\n * ``` kiex implode ``` -- This removes all versions of elixir installed by kiex as well as all kiex components\n\nUpgrade kiex\n * ``` kiex selfupdate ``` -- pull down latest updates for kiex\n    - Can also re-curl\n\n### Sourcing elixir into your path\n\nAfter installing your preferred version of elixir and setting it as your default you can use kiex scripts to\nput your default elixir bin into your path. One way to do this is to add the following line into your rc file:\n\n```\n[[ -s \"$HOME/.kiex/scripts/kiex\" ]] \u0026\u0026 source \"$HOME/.kiex/scripts/kiex\"\n```\n\n### Design philosophy\n\n * KISS\n * Sane defaults\n * Self-contained\n * Single-purpose\n\n\n#### Comparison Q\u0026A\n\nHow is it like exenv (rbenv)?\n * Super light and simple\n * Focus on installing \u0026 managing one piece of software: Elixir\n\nHow is it not like exenv?\n * Does not use shims\n * Includes elixir build component\n\nHow is it like Kerl?\n * Minimal command set\n * Retrieves, builds, installs and manages different releases\n\nHow is it not like Kerl?\n * Not as flexible on install path\n * Dynamically gets release list instead of caching\n * Build and install actions are not separated\n\nHow is it like RVM?\n * Sane defaults\n * Uses Unix PATH to manage binary to use\n\nHow is it not like RVM?\n * No function over-loading\n * Does not manage/install extra software and prereqs\n\n\n### Platforms/Shells tested\n\nOperating Systems:\n * Arch\n * CentOS\n * Debian\n * FreeBSD\n * OS X/Darwin\n * Ubuntu\n\nShells:\n * bash\n * csh\n * tcsh\n * zsh\n\nErlang installs:\n * erlang-solutions\n * erlang.org\n * kerl\n * Debian apt, FreeBSD pkg, OS X brew\n\n### Alternatives and References\n\nAlternatives:\n * [exenv](https://github.com/mururu/exenv) + [elixir-build](https://github.com/mururu/elixir-build)\n * [edwb](https://github.com/clutchanalytics/edwb)\n * [asdf](https://github.com/HashNuke/asdf) extendable version manager for multiple languages (eg. ruby, erlang, elixir)\n\nRelated tools:\n * [kerl](https://github.com/spawngrid/kerl) - Easy building and installing of Erlang/OTP instances\n * [kex](https://github.com/d0rc/kex) - Build any tagged release of Erlang/OTP or Elixir from git\n * [heroku-buildpack-elixir](https://github.com/goshakkk/heroku-buildpack-elixir) - Elixir buildpack for Heroku\n   - [heroku-buildpack-erlang](https://github.com/archaelus/heroku-buildpack-erlang) - Erlang/OTP buildpack for Heroku\n * [erln8](https://github.com/metadave/erln8) - Erlang/OTP version manager (builds from git source)\n * [robisonsantos/evm](https://github.com/robisonsantos/evm) - Erlang Version Manager (from erlang.org tarballs)\n\n\n### Limitations\n\n * Does not build erlang\n * Does not build Dynamo or any other elixir app\n * Same build directory used for every build (saving space vs keeping build env around)\n * No uninstall option for installed elixir versions\n * No per-directory/project config file.\n   - You can hack it in by adding kiex use \u003cversion\u003e to .rvmrc or friends ;P\n\n\u003ca name=\"notes\"\u003e\n\n### Notes\n\nSome erlang builds (including default kerl) are unusuable on current CentOS and Fedora distros as a result of an OpenSSL update.  -- 2014/03/31\n\nVarious bugs reported:\n  * https://bugzilla.redhat.com/show_bug.cgi?id=1023017\n  * https://groups.google.com/forum/#!topic/erlang-programming/wW6Uuz4VO2w\n  * https://github.com/basho/rebar/issues/375\n  * https://bugs.ruby-lang.org/issues/9065\n\nA update to OTP crypto https://github.com/RoadRunnr/otp/commit/8837c1be2ba8a3c123df3f5a87003daa9aac6539\n\n### TODO\n\n * Merge install script into kiex script as an install function\n * Cleanup build output (extra git info etc)\n * Maybe print source line with use command\n * Add active command (or similar) to show current elixir\n   - Already in list command - this would be the single version\n   - Maybe show source line?\n * Add sourceline or similar command to show source line to use?\n * Maybe add dynamo install and setup for MIX_PATH\n   - how to tie to elixir used? gemset like?\n   - use dynamo tags?\n * Look at elixir-build for ideas, collaboration\n\n### License\n\nSee [LICENSE file](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaylor%2Fkiex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaylor%2Fkiex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaylor%2Fkiex/lists"}