mirror of
https://github.com/rbenv/ruby-build.git
synced 2026-05-15 00:46:53 -04:00
Compare commits
16 commits
master
...
binary-pac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d8999e9d1 | ||
|
|
e9129e5a34 | ||
|
|
972498d4bf | ||
|
|
aacb3afe1b | ||
|
|
4fbb207e0f | ||
|
|
59269d1571 | ||
|
|
d6da2d5fda | ||
|
|
6990108a1e | ||
|
|
2948dee888 | ||
|
|
97a48518e5 | ||
|
|
b5cc9ffb8b | ||
|
|
296cdb4384 | ||
|
|
eed1cd5f0c | ||
|
|
7c06228378 | ||
|
|
c152a226e6 | ||
|
|
7311e0dc23 |
757 changed files with 899 additions and 8710 deletions
1
.gitattributes
vendored
1
.gitattributes
vendored
|
|
@ -1 +0,0 @@
|
|||
/share/man/man[1-8]/*.[1-8] linguist-generated
|
||||
16
.github/ISSUE_TEMPLATE/bug.md
vendored
16
.github/ISSUE_TEMPLATE/bug.md
vendored
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
name: "🐛 Bug report"
|
||||
about: Report a bug with ruby-build. For "BUILD FAILED" scenarios, see below
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
### Steps to reproduce the behavior
|
||||
|
||||
### Expected vs. actual behavior
|
||||
|
||||
### Logs
|
||||
|
||||
<!-- Paste the output from your terminal. Please enclose the pasted content within triple backticks. If the output suggests the full log was written to a file, copy the contents of that file to a new Gist and link it here. -->
|
||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
8
.github/ISSUE_TEMPLATE/config.yml
vendored
|
|
@ -1,8 +0,0 @@
|
|||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: BUILD FAILED
|
||||
about: Check the Discussions section for reports of a failing Ruby build. Submit your experience (plus logs) if you cannot find reports similar to yours.
|
||||
url: https://github.com/rbenv/ruby-build/discussions
|
||||
- name: Suggested build environment
|
||||
about: Review the instructions about the suggested build environment for your operating system.
|
||||
url: https://github.com/rbenv/ruby-build/wiki
|
||||
8
.github/ISSUE_TEMPLATE/enhancement.md
vendored
8
.github/ISSUE_TEMPLATE/enhancement.md
vendored
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
name: "⭐ Submit a feature request"
|
||||
about: Suggest a feature to be added to ruby-build
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
6
.github/dependabot.yml
vendored
6
.github/dependabot.yml
vendored
|
|
@ -1,6 +0,0 @@
|
|||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: 'github-actions'
|
||||
directory: '/'
|
||||
schedule:
|
||||
interval: 'weekly'
|
||||
22
.github/workflows/ci.yml
vendored
22
.github/workflows/ci.yml
vendored
|
|
@ -1,22 +0,0 @@
|
|||
name: Test
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Install bats
|
||||
run: git clone --depth 1 --branch v1.10.0 https://github.com/bats-core/bats-core.git bats
|
||||
- name: Run tests
|
||||
run: PATH="./bats/bin:$PATH" script/test
|
||||
29
.github/workflows/differential-shellcheck.yml
vendored
29
.github/workflows/differential-shellcheck.yml
vendored
|
|
@ -1,29 +0,0 @@
|
|||
# Doc: https://github.com/redhat-plumbers-in-action/differential-shellcheck#usage
|
||||
---
|
||||
|
||||
name: Differential ShellCheck
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: [master]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Differential ShellCheck
|
||||
uses: redhat-plumbers-in-action/differential-shellcheck@v5
|
||||
with:
|
||||
severity: warning
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
19
.github/workflows/release.yml
vendored
19
.github/workflows/release.yml
vendored
|
|
@ -1,19 +0,0 @@
|
|||
name: Release
|
||||
on:
|
||||
push:
|
||||
tags: 'v*'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
homebrew:
|
||||
name: Bump Homebrew formula
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: mislav/bump-homebrew-formula-action@v4
|
||||
if: "!contains(github.ref, '-')" # skip prereleases
|
||||
with:
|
||||
formula-name: ruby-build
|
||||
env:
|
||||
COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }}
|
||||
49
.github/workflows/update-ruby.yml
vendored
49
.github/workflows/update-ruby.yml
vendored
|
|
@ -1,49 +0,0 @@
|
|||
name: Update Ruby definitions
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
ruby_version:
|
||||
description: 'Ruby version'
|
||||
required: true
|
||||
default: '3.3.4'
|
||||
openssl_version:
|
||||
description: 'OpenSSL version'
|
||||
required: true
|
||||
default: '3.0.15'
|
||||
|
||||
repository_dispatch:
|
||||
types: [update-ruby]
|
||||
|
||||
jobs:
|
||||
update-ruby:
|
||||
name: Update Ruby definitions
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Store Ruby version
|
||||
run: echo "RUBY_VERSION=${{ github.event.client_payload.ruby_version || github.event.inputs.ruby_version }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Store ABI version
|
||||
run: echo "ABI_VERSION=$(echo ${{ env.RUBY_VERSION }} | cut -d '.' -f 1-2)" >> $GITHUB_ENV
|
||||
|
||||
- name: Store OpenSSL version
|
||||
run: echo "OPENSSL_VERSION=${{ github.event.client_payload.openssl_version || github.event.inputs.openssl_version }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Run script/update-cruby
|
||||
run: |
|
||||
curl -fsL https://cache.ruby-lang.org/pub/ruby/${{ env.ABI_VERSION }}/ruby-${{ env.RUBY_VERSION }}.tar.gz -O
|
||||
curl -fsL https://www.openssl.org/source/openssl-${{ env.OPENSSL_VERSION }}.tar.gz -O
|
||||
script/update-cruby ${{ env.RUBY_VERSION }} ${{ env.OPENSSL_VERSION }} .
|
||||
rm *.gz
|
||||
|
||||
- name: commit and push
|
||||
run: |
|
||||
git config user.name "GitHub Actions Bot"
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git add .
|
||||
git commit -m "Added ${{ env.RUBY_VERSION }} with OpenSSL ${{ env.OPENSSL_VERSION }}"
|
||||
git push
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMITTER_TOKEN }}
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
/bats
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
||||
nationality, personal appearance, race, religion, or sexual identity and
|
||||
orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting one of the project maintainers listed below. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Project Maintainers
|
||||
|
||||
* Sam Stephenson <<sstephenson@gmail.com>>
|
||||
* Mislav Marohnić <<mislav.marohnic@gmail.com>>
|
||||
* Erik Michaels-Ober <<sferik@gmail.com>>
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
## Adding a new Ruby version
|
||||
|
||||
Use one of the scripts `script/update-*` to add a new Ruby version.
|
||||
|
||||
## Updating OpenSSL
|
||||
|
||||
Use `script/update-openssl`.
|
||||
33
LICENSE
33
LICENSE
|
|
@ -1,19 +1,20 @@
|
|||
Copyright (c) 2012-2013 Sam Stephenson
|
||||
Copyright (c) 2011 Sam Stephenson
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
|
|
|||
9
Makefile
9
Makefile
|
|
@ -1,9 +0,0 @@
|
|||
release_version := $(shell grep "^RUBY_BUILD_VERSION" bin/ruby-build | cut -d\" -f2)
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
bash install.sh
|
||||
|
||||
share/man/man1/%.1: share/man/man1/%.1.adoc bin/ruby-build
|
||||
which asciidoctor || gem install asciidoctor
|
||||
asciidoctor -b manpage -a version=$(release_version:v%=%) -o $@ $<
|
||||
270
README.md
270
README.md
|
|
@ -1,229 +1,95 @@
|
|||
# ruby-build
|
||||
|
||||
ruby-build is a command-line tool that simplifies installation of any Ruby version from source on Unix-like systems.
|
||||
ruby-build provides a simple way to compile and install different
|
||||
versions of Ruby on UNIX-like systems.
|
||||
|
||||
It is available as a plugin for [rbenv][] as the `rbenv install` command, or as a standalone program as the `ruby-build` command.
|
||||
### Installing ruby-build
|
||||
|
||||
## Installation
|
||||
$ git clone git://github.com/sstephenson/ruby-build.git
|
||||
$ cd ruby-build
|
||||
$ ./install.sh
|
||||
|
||||
### Homebrew package manager
|
||||
```sh
|
||||
brew install ruby-build
|
||||
```
|
||||
This will install ruby-build into `/usr/local`. If you do not have
|
||||
write permission to `/usr/local`, you will need to run `sudo
|
||||
./install.sh` instead. You can install to a different prefix by
|
||||
setting the `PREFIX` environment variable.
|
||||
|
||||
Upgrade with:
|
||||
```sh
|
||||
brew upgrade ruby-build
|
||||
```
|
||||
### Installing Ruby
|
||||
|
||||
### Clone as rbenv plugin using git
|
||||
```sh
|
||||
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
|
||||
```
|
||||
To install a Ruby version, run the `ruby-build` command with the path
|
||||
to a definition file and the path where you want to install it. (A
|
||||
number of [built-in
|
||||
definitions](https://github.com/sstephenson/ruby-build/tree/master/share/ruby-build)
|
||||
may be specified instead.)
|
||||
|
||||
Upgrade with:
|
||||
```sh
|
||||
git -C "$(rbenv root)"/plugins/ruby-build pull
|
||||
```
|
||||
$ ruby-build 1.9.2-p290 ~/local/ruby-1.9.2-p290
|
||||
...
|
||||
$ ~/local/ruby-1.9.2-p290/bin/ruby --version
|
||||
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.0]
|
||||
|
||||
### Install manually as a standalone program
|
||||
You can use it with [rbenv](https://github.com/sstephenson/rbenv):
|
||||
|
||||
First, download a tarball from https://github.com/rbenv/ruby-build/releases/latest. Then:
|
||||
```sh
|
||||
tar -xzf ruby-build-*.tar.gz
|
||||
PREFIX=/usr/local ./ruby-build-*/install.sh
|
||||
```
|
||||
$ ruby-build 1.9.2-p290 ~/.rbenv/versions/1.9.2-p290
|
||||
|
||||
## Usage
|
||||
ruby-build provides an `rbenv-install` command that shortens this to:
|
||||
|
||||
### Basic Usage
|
||||
$ rbenv install 1.9.2-p290
|
||||
|
||||
```sh
|
||||
# As a standalone program
|
||||
$ ruby-build --list # lists latest stable releases for each Ruby
|
||||
$ ruby-build --definitions # lists all definitions, including outdated ones
|
||||
$ ruby-build 3.4.9 ~/.rubies/ruby-3.4.9 # installs Ruby 3.4.9
|
||||
$ ruby-build -d ruby-3.4.9 ~/.rubies # alternate form for the previous example
|
||||
$ ruby-build -d ruby-3.4 ~/.rubies # installs latest Ruby 3.4.x
|
||||
### Version History
|
||||
|
||||
# As an rbenv plugin
|
||||
$ rbenv install 3.4.9 # installs Ruby 3.4.9 to ~/.rbenv/versions/3.4.9
|
||||
$ rbenv install 3 # installs latest Ruby 3.x
|
||||
```
|
||||
#### 20110928
|
||||
|
||||
> [!WARNING]
|
||||
> ruby-build mostly does not verify that system dependencies are present before downloading and attempting to compile Ruby from source. Please ensure that [all requisite libraries][build-env] such as build tools and development headers are already present on your system.
|
||||
* ruby-build now uses the `--with-gcc` configure flag on OS X Lion.
|
||||
* Added definitions for REE 1.8.7-2010.02 and 1.8.6-2009.06.
|
||||
* Modified `rbenv-install` to run `rbenv rehash` after installation.
|
||||
* Added a Ruby 1.9.3-rc1 definition.
|
||||
* Updated the JRuby defintions to install the `jruby-launcher` gem.
|
||||
* Updated the rbx-2.0.0 definition to point to the master branch.
|
||||
* Added a jruby-1.7.0-dev definition.
|
||||
* Added a Ruby 1.9.4-dev definition.
|
||||
|
||||
Basically, what ruby-build does when installing a Ruby version is this:
|
||||
- Downloads an official tarball of Ruby source code;
|
||||
- Extracts the archive into a temporary directory on your system;
|
||||
- Executes `./configure --prefix=/path/to/destination` in the source code;
|
||||
- Runs `make install` to compile Ruby;
|
||||
- Verifies that the installed Ruby is functional.
|
||||
#### 20110914
|
||||
|
||||
Depending on the context, ruby-build does a little bit more than the above: for example, it will try to link Ruby to the appropriate OpenSSL version, even if that means downloading and compiling OpenSSL itself; it will discover and link to Homebrew-installed instances of some libraries like libyaml and readline, etc.
|
||||
* Added an rbx-2.0.0-dev definition for Rubinius 2.0.0 from git.
|
||||
* Added support for setting `./configure` options with the
|
||||
`CONFIGURE_OPTS` environment variable.
|
||||
* Added a 1.9.3-dev definition for Ruby 1.9.3 from Git.
|
||||
* Added support for fetching package sources via Git.
|
||||
* Added an `rbenv-install` script which provides an `install` command
|
||||
for rbenv users.
|
||||
|
||||
### Ruby versions
|
||||
#### 20110906.1
|
||||
|
||||
When listing "latest" Ruby versions, such as in `ruby-build --list` output, ruby-build only knows of Ruby versions that are bundled with this project. That means that when a new Ruby version comes out, ruby-build will not know about it immediately— you will have to upgrade ruby-build before you can use it to install the new Ruby version. This is because ruby-build bundles [definition files](#custom-build-definitions) for each individual Ruby version.
|
||||
* Changed the REE definition not to install its default gem
|
||||
collection.
|
||||
* Reverted a poorly-tested change that intended to enable support for
|
||||
relative installation paths.
|
||||
|
||||
If it's important to you that your installer tool always consults remote resources to download the list of latest Ruby versions (without having to upgrade the tool itself), check out [ruby-install][] as an alternative to ruby-build.
|
||||
#### 20110906
|
||||
|
||||
### Ruby implementations
|
||||
* Initial public release.
|
||||
|
||||
ruby-build ships with definitions for the following Ruby implementations, denoted by version prefixes in the `ruby-build --list` output:
|
||||
### License
|
||||
|
||||
- [CRuby][]: listed in ruby-build as unprefixed version numbers in the `X.Y.Z` format. This is the main Ruby implementation that most people use and is also historically known as "MRI". ruby-build allows adding the `ruby-` prefix to CRuby version numbers for compatibility with other version managers.
|
||||
(The MIT License)
|
||||
|
||||
- `jruby`: [JRuby][] is a high-performance Ruby implementation with real threading built on top of the Java virtual machine (JVM).
|
||||
Copyright (c) 2011 Sam Stephenson
|
||||
|
||||
- `mruby`: [mruby][] is a lightweight, embeddable Ruby implementation for microcontrollers.
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
- `picoruby`: [PicoRuby][] is an alternative mruby implementation for one-chip microcontrollers.
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
- `truffleruby`: The Native standalone distribution of [TruffleRuby][], an implementation of Ruby on top of GraalVM's Truffle framework.
|
||||
|
||||
- `truffleruby+graalvm`: The JVM standalone distribution of TruffleRuby.
|
||||
|
||||
### Advanced Usage
|
||||
|
||||
#### Custom Build Definitions
|
||||
|
||||
To install a version of Ruby that is not available in ruby-build, you can specify the path to a custom build definition file in place of a Ruby version number.
|
||||
|
||||
```sh
|
||||
# As a standalone program
|
||||
$ ruby-build -d /path/to/3.4-custom /opt/rubies # installs to /opt/rubies/3.4-custom
|
||||
|
||||
# As an rbenv plugin
|
||||
$ rbenv install /path/to/3.4-custom # installs to $(rbenv root)/versions/3.4-custom
|
||||
```
|
||||
|
||||
You can also provide a _directory_ of custom build definition files.
|
||||
The path(s) will be searched along with ruby-build's bundled `share/ruby-build/` directory.
|
||||
(Perhaps a collection of 3rd-party build definitions published as a git repo,
|
||||
or an organization's custom build definitions distributed in-house.)
|
||||
|
||||
```sh
|
||||
# As a standalone program
|
||||
$ RUBY_BUILD_DEFINITIONS=/path/to/custom/defs ruby-build --definitions # lists all available versions of Ruby, including custom defs
|
||||
$ RUBY_BUILD_DEFINITIONS=/path/to/custom/defs ruby-build -d 3.5-custom /opt/rubies # installs to /opt/rubies/3.5-custom
|
||||
|
||||
# As an rbenv plugin
|
||||
$ RUBY_BUILD_DEFINITIONS=/path/to/custom/defs rbenv install --list # lists all available versions of Ruby, including custom defs
|
||||
$ RUBY_BUILD_DEFINITIONS=/path/to/custom/defs rbenv install 3.5-custom # installs to $(rbenv root)/versions/3.5-custom
|
||||
```
|
||||
|
||||
Check out [default build definitions][definitions] as examples on how to write definition files.
|
||||
|
||||
#### Custom Build Configuration
|
||||
|
||||
The build process may be configured through the following environment variables:
|
||||
|
||||
| Variable | Function |
|
||||
| ------------------------------- | ------------------------------------------------------------------------------------------------ |
|
||||
| `TMPDIR` | Where temporary files are stored. |
|
||||
| `RUBY_BUILD_BUILD_PATH` | Where sources are downloaded and built. (Default: a timestamped subdirectory of `TMPDIR`) |
|
||||
| `RUBY_BUILD_CACHE_PATH` | Where to cache downloaded package files. (Default: `~/.rbenv/cache` if invoked as rbenv plugin) |
|
||||
| `RUBY_BUILD_HTTP_CLIENT` | One of `aria2c`, `curl`, or `wget` to use for downloading. (Default: first one found in PATH) |
|
||||
| `RUBY_BUILD_ARIA2_OPTS` | Additional options to pass to `aria2c` for downloading. |
|
||||
| `RUBY_BUILD_CURL_OPTS` | Additional options to pass to `curl` for downloading. |
|
||||
| `RUBY_BUILD_WGET_OPTS` | Additional options to pass to `wget` for downloading. |
|
||||
| `RUBY_BUILD_MIRROR_URL` | Custom mirror URL root. |
|
||||
| `RUBY_BUILD_MIRROR_PACKAGE_URL` | Custom complete mirror URL (e.g. http://mirror.example.com/package-1.0.0.tar.gz). |
|
||||
| `RUBY_BUILD_SKIP_MIRROR` | Bypass the download mirror and fetch all package files from their original URLs. |
|
||||
| `RUBY_BUILD_TARBALL_OVERRIDE` | Override the URL to fetch the ruby tarball from, optionally followed by `#checksum`. |
|
||||
| `RUBY_BUILD_DEFINITIONS` | Colon-separated list of paths to search for build definition files. |
|
||||
| `RUBY_BUILD_ROOT` | The path prefix to search for build definitions files. *Deprecated:* use `RUBY_BUILD_DEFINITIONS`|
|
||||
| `RUBY_BUILD_VENDOR_OPENSSL` | Build and vendor openssl even if the system openssl is compatible |
|
||||
| `CC` | Path to the C compiler. |
|
||||
| `RUBY_CFLAGS` | Additional `CFLAGS` options (_e.g.,_ to override `-O3`). |
|
||||
| `CONFIGURE_OPTS` | Additional `./configure` options. |
|
||||
| `MAKE` | Custom `make` command (_e.g.,_ `gmake`). |
|
||||
| `MAKE_OPTS` / `MAKEOPTS` | Additional `make` options. |
|
||||
| `MAKE_INSTALL_OPTS` | Additional `make install` options. |
|
||||
| `RUBY_CONFIGURE_OPTS` | Additional `./configure` options (applies only to Ruby source). |
|
||||
| `RUBY_MAKE_OPTS` | Additional `make` options (applies only to Ruby source). |
|
||||
| `RUBY_MAKE_INSTALL_OPTS` | Additional `make install` options (applies only to Ruby source). |
|
||||
| `NO_COLOR` | Disable ANSI colors in output. The default is to use colors for output connected to a terminal. |
|
||||
| `CLICOLOR_FORCE` | Use ANSI colors in output even when not connected to a terminal. |
|
||||
| `RUBY_REPO` | The URL of the git repository to use when building `ruby-dev` |
|
||||
| `RUBY_REF` | The git branch (or revision) to use when building `ruby-dev`, e.g. `some-branch@af12decf` |
|
||||
|
||||
#### Applying Patches
|
||||
|
||||
Both `rbenv install` and `ruby-build` commands support the `-p/--patch` flag to apply a patch to the Ruby source code before building. Patches are read from standard input:
|
||||
|
||||
```sh
|
||||
# applying a single patch
|
||||
$ rbenv install --patch 1.9.3-p429 < /path/to/ruby.patch
|
||||
|
||||
# applying a patch from HTTP
|
||||
$ rbenv install --patch 1.9.3-p429 < <(curl -sSL http://git.io/ruby.patch)
|
||||
|
||||
# applying multiple patches
|
||||
$ cat fix1.patch fix2.patch | rbenv install --patch 1.9.3-p429
|
||||
```
|
||||
|
||||
#### Checksum Verification
|
||||
|
||||
All Ruby definition files bundled with ruby-build include checksums for packages, meaning that all externally downloaded packages are automatically checked for integrity after fetching.
|
||||
|
||||
See the next section for more information on how to author checksums.
|
||||
|
||||
#### Package Mirrors
|
||||
|
||||
You may specify a custom mirror by setting `RUBY_BUILD_MIRROR_URL`. When set,
|
||||
ruby-build will first attempt to download packages from the mirror before falling
|
||||
back to the original URL.
|
||||
|
||||
```sh
|
||||
# example:
|
||||
export RUBY_BUILD_MIRROR_URL="https://my-mirror.example.com"
|
||||
install_package "ruby-2.6.5" "https://ruby-lang.org/ruby-2.6.5.tgz#<SHA2>"
|
||||
# Will first try: https://my-mirror.example.com/<SHA2>
|
||||
```
|
||||
|
||||
ruby-build will first try to fetch this package from `$RUBY_BUILD_MIRROR_URL/<SHA2>`
|
||||
(note: this is the complete URL), where `<SHA2>` is the checksum for the file. It
|
||||
will fall back to downloading the package from the original location if:
|
||||
- the package was not found on the mirror;
|
||||
- the mirror is down;
|
||||
- the download is corrupt, i.e. the file's checksum doesn't match;
|
||||
- no tool is available to calculate the checksum; or
|
||||
- `RUBY_BUILD_SKIP_MIRROR` is enabled.
|
||||
|
||||
If a mirror site doesn't conform to the above URL format, you can specify the
|
||||
complete URL by setting `RUBY_BUILD_MIRROR_PACKAGE_URL`. It behaves the same as
|
||||
`RUBY_BUILD_MIRROR_URL` except being a complete URL.
|
||||
|
||||
#### Keeping the build directory after installation
|
||||
|
||||
Both `ruby-build` and `rbenv install` accept the `-k` or `--keep` flag, which
|
||||
tells ruby-build to keep the downloaded source after installation. This can be
|
||||
useful if you need to use `gdb` and `memprof` with Ruby.
|
||||
|
||||
Source code will be kept in a parallel directory tree `~/.rbenv/sources` when
|
||||
using `--keep` with the `rbenv install` command. You should specify the
|
||||
location of the source code with the `RUBY_BUILD_BUILD_PATH` environment
|
||||
variable when using `--keep` with `ruby-build`.
|
||||
|
||||
## Getting Help
|
||||
|
||||
Please see the [ruby-build wiki][wiki] for solutions to common problems.
|
||||
|
||||
If you can't find an answer on the wiki, open an issue on the [issue tracker][].
|
||||
Be sure to include the full build log for build failures.
|
||||
|
||||
|
||||
[rbenv]: https://github.com/rbenv/rbenv#readme
|
||||
[definitions]: https://github.com/rbenv/ruby-build/tree/master/share/ruby-build
|
||||
[wiki]: https://github.com/rbenv/ruby-build/wiki
|
||||
[build-env]: https://github.com/rbenv/ruby-build/wiki#suggested-build-environment
|
||||
[issue tracker]: https://github.com/rbenv/ruby-build/issues
|
||||
[cruby]: https://www.ruby-lang.org/
|
||||
[truffleruby]: https://truffleruby.dev/
|
||||
[picoruby]: https://github.com/picoruby/picoruby#readme
|
||||
[mruby]: https://mruby.org/
|
||||
[jruby]: https://www.jruby.org/
|
||||
[ruby-install]: https://github.com/postmodern/ruby-install#readme
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
|
|
|||
8
TODO
Normal file
8
TODO
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
Binary packages
|
||||
---------------
|
||||
|
||||
X Better error messages
|
||||
X Show 'Downloading' and 'Installing' messages a la ruby-build
|
||||
* Rewrite RbConfig::CONFIG['CC'] on install
|
||||
* Patch rbx since the rewriter doesn't work there
|
||||
X rbenv-install should check for binary packages before building
|
||||
|
|
@ -1,278 +1,82 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Summary: Install a Ruby version using ruby-build
|
||||
#
|
||||
# Usage: rbenv install [-f|-s] [-kpv] <version> [-- <configure-args...>]
|
||||
# rbenv install [-f|-s] [-kpv] <definition-file>
|
||||
# rbenv install --list
|
||||
# rbenv install --version
|
||||
#
|
||||
# -l, --list List latest stable versions for each Ruby
|
||||
# -L, --list-all List all local versions, including outdated ones
|
||||
# -f, --force Allow overwriting an existing installed version
|
||||
# -s, --skip-existing Avoid overwriting an existing installed version
|
||||
#
|
||||
# ruby-build options:
|
||||
#
|
||||
# -v, --verbose Verbose mode: forward all build output to stdout/stderr
|
||||
# -p, --patch Apply a patch from stdin before building
|
||||
# -k, --keep Keep source tree in RBENV_BUILD_ROOT after installation
|
||||
# (defaults to "RBENV_ROOT/sources")
|
||||
# --version Show version of ruby-build
|
||||
#
|
||||
# For detailed information on installing Ruby versions with ruby-build,
|
||||
# including a list of environment variables for adjusting compilation,
|
||||
# see: https://github.com/rbenv/ruby-build#usage
|
||||
#
|
||||
set -e
|
||||
[ -n "$RBENV_DEBUG" ] && set -x
|
||||
|
||||
# Add `share/ruby-build/` directory from each rbenv plugin to the list of
|
||||
# paths where build definitions are looked up.
|
||||
shopt -s nullglob
|
||||
for plugin_path in "$RBENV_ROOT"/plugins/*/share/ruby-build; do
|
||||
RUBY_BUILD_DEFINITIONS="${RUBY_BUILD_DEFINITIONS}:${plugin_path}"
|
||||
resolve_link() {
|
||||
$(type -p greadlink readlink | head -1) $1
|
||||
}
|
||||
|
||||
abs_dirname() {
|
||||
local cwd="$(pwd)"
|
||||
local path="$1"
|
||||
|
||||
while [ -n "$path" ]; do
|
||||
cd "${path%/*}"
|
||||
local name="${path##*/}"
|
||||
path="$(resolve_link "$name" || true)"
|
||||
done
|
||||
export RUBY_BUILD_DEFINITIONS
|
||||
shopt -u nullglob
|
||||
|
||||
pwd
|
||||
cd "$cwd"
|
||||
}
|
||||
|
||||
usage() {
|
||||
{ echo "usage: rbenv install [--build | --package] VERSION"
|
||||
echo " rbenv install /path/to/definition"
|
||||
echo
|
||||
echo "Available versions:"
|
||||
ruby-build --definitions | sed 's/^/ /'
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
bin_dir="$(abs_dirname "$0")"
|
||||
export PATH="${bin_dir}:$PATH"
|
||||
|
||||
# Provide rbenv completions
|
||||
if [ "$1" = "--complete" ]; then
|
||||
echo --list
|
||||
echo --list-all
|
||||
echo --force
|
||||
echo --skip-existing
|
||||
echo --keep
|
||||
echo --patch
|
||||
echo --verbose
|
||||
echo --version
|
||||
exec ruby-build --definitions
|
||||
fi
|
||||
|
||||
# Load shared library functions
|
||||
eval "$(ruby-build --lib)"
|
||||
|
||||
usage() {
|
||||
rbenv-help install 2>/dev/null
|
||||
[ -z "$1" ] || exit "$1"
|
||||
}
|
||||
|
||||
definitions() {
|
||||
local query="$1"
|
||||
ruby-build --definitions | $(type -p ggrep grep | head -1) -F "$query" || true
|
||||
}
|
||||
|
||||
suggest_selecting_global() {
|
||||
# shellcheck disable=SC2155
|
||||
local version_file="$(rbenv-version-file)"
|
||||
[[ "$version_file" != "$RBENV_ROOT"/version || -e "$version_file" ]] && return 0
|
||||
echo
|
||||
colorize 1 "NOTE:"
|
||||
echo -n " to activate this Ruby version as the new default, run: "
|
||||
colorize 33 "rbenv global $VERSION_NAME"
|
||||
echo
|
||||
}
|
||||
|
||||
colorize() {
|
||||
if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
|
||||
else printf "%s" "$2"
|
||||
force_build=""
|
||||
force_package=""
|
||||
if [ "$1" = "--build" ]; then
|
||||
force_build=1
|
||||
shift
|
||||
elif [ "$1" = "--package" ]; then
|
||||
force_package=1
|
||||
shift
|
||||
fi
|
||||
}
|
||||
|
||||
indent() {
|
||||
sed 's/^/ /'
|
||||
}
|
||||
|
||||
unset FORCE
|
||||
unset SKIP_EXISTING
|
||||
unset KEEP
|
||||
unset VERBOSE
|
||||
unset HAS_PATCH
|
||||
|
||||
parse_options "$@"
|
||||
for option in "${OPTIONS[@]}"; do
|
||||
case "$option" in
|
||||
"h" | "help" )
|
||||
usage 0
|
||||
;;
|
||||
"l" | "list" )
|
||||
ruby-build --list
|
||||
[ ! -t 1 ] || {
|
||||
echo
|
||||
echo "Only latest stable releases for each Ruby implementation are shown."
|
||||
echo "Use \`rbenv install --list-all' to show all local versions."
|
||||
} 1>&2
|
||||
exit
|
||||
;;
|
||||
"L" | "list-all" )
|
||||
ruby-build --definitions
|
||||
exit
|
||||
;;
|
||||
"f" | "force" )
|
||||
FORCE=true
|
||||
;;
|
||||
"s" | "skip-existing" )
|
||||
SKIP_EXISTING=true
|
||||
;;
|
||||
"k" | "keep" )
|
||||
[ -n "${RBENV_BUILD_ROOT}" ] || RBENV_BUILD_ROOT="${RBENV_ROOT}/sources"
|
||||
;;
|
||||
"v" | "verbose" )
|
||||
VERBOSE="-v"
|
||||
;;
|
||||
"p" | "patch" )
|
||||
HAS_PATCH="-p"
|
||||
;;
|
||||
"version" )
|
||||
exec ruby-build --version
|
||||
;;
|
||||
* )
|
||||
usage 1 >&2
|
||||
definition="$1"
|
||||
case "$definition" in
|
||||
"" | -* )
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ "${#ARGUMENTS[@]}" -le 1 ] || usage 1 >&2
|
||||
|
||||
# The first argument contains the definition to install. If the
|
||||
# argument is missing, try to install whatever local app-specific
|
||||
# version is specified by rbenv. Show usage instructions if a local
|
||||
# version is not specified.
|
||||
DEFINITION="${ARGUMENTS[0]}"
|
||||
[ -n "$DEFINITION" ] || DEFINITION="$(rbenv-local 2>/dev/null || true)"
|
||||
[ -n "$DEFINITION" ] || usage 1 >&2
|
||||
|
||||
if VERSION_NAME="$(ruby-build --resolve "$DEFINITION")"; then
|
||||
DEFINITION="$VERSION_NAME"
|
||||
else
|
||||
unset VERSION_NAME
|
||||
if [ -z "$RBENV_ROOT" ]; then
|
||||
RBENV_ROOT="${HOME}/.rbenv"
|
||||
fi
|
||||
|
||||
# Define `before_install` and `after_install` functions that allow
|
||||
# plugin hooks to register a string of code for execution before or
|
||||
# after the installation process.
|
||||
declare -a before_hooks after_hooks
|
||||
version_name="${definition##*/}"
|
||||
prefix="${RBENV_ROOT}/versions/${version_name}"
|
||||
|
||||
# shellcheck disable=SC2317
|
||||
before_install() {
|
||||
local hook="$1"
|
||||
before_hooks["${#before_hooks[@]}"]="$hook"
|
||||
package() {
|
||||
ruby-package install $* "$definition" "$prefix"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2317
|
||||
after_install() {
|
||||
local hook="$1"
|
||||
after_hooks["${#after_hooks[@]}"]="$hook"
|
||||
build() {
|
||||
ruby-build "$definition" "$prefix"
|
||||
}
|
||||
|
||||
IFS=$'\n' read -d '' -r -a scripts <<<"$(rbenv-hooks install)" || true
|
||||
# shellcheck disable=SC1090
|
||||
for script in "${scripts[@]}"; do source "$script"; done
|
||||
|
||||
|
||||
# Set VERSION_NAME from $DEFINITION, if it is not already set. Then
|
||||
# compute the installation prefix.
|
||||
[ -n "$VERSION_NAME" ] || VERSION_NAME="${DEFINITION##*/}"
|
||||
PREFIX="${RBENV_ROOT}/versions/${VERSION_NAME}"
|
||||
|
||||
[ -d "${PREFIX}" ] && PREFIX_EXISTS=1
|
||||
|
||||
# If the installation prefix exists, prompt for confirmation unless
|
||||
# the --force option was specified.
|
||||
if [ -d "${PREFIX}/bin" ]; then
|
||||
if [ -z "$FORCE" ] && [ -z "$SKIP_EXISTING" ]; then
|
||||
echo "rbenv: $PREFIX already exists" >&2
|
||||
if [ ! -t 0 ]; then
|
||||
echo "rbenv: must use \`--force' or \`--skip-existing' in non-interactive mode" >&2
|
||||
exit 1
|
||||
fi
|
||||
read -rp "continue with installation? (y/N) "
|
||||
|
||||
case "$REPLY" in
|
||||
y* | Y* ) ;;
|
||||
* ) exit 1 ;;
|
||||
esac
|
||||
elif [ -n "$SKIP_EXISTING" ]; then
|
||||
# Since we know the ruby version is already installed, and are opting to
|
||||
# not force installation of existing versions, we just `exit 0` here to
|
||||
# leave things happy
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# If RBENV_BUILD_ROOT is set, always pass keep options to ruby-build.
|
||||
if [ -n "${RBENV_BUILD_ROOT}" ]; then
|
||||
export RUBY_BUILD_BUILD_PATH="${RBENV_BUILD_ROOT}/${VERSION_NAME}"
|
||||
KEEP="-k"
|
||||
fi
|
||||
|
||||
# Set RUBY_BUILD_CACHE_PATH to $RBENV_ROOT/cache, if the directory
|
||||
# exists and the variable is not already set.
|
||||
if [ -z "${RUBY_BUILD_CACHE_PATH}" ] && [ -d "${RBENV_ROOT}/cache" ]; then
|
||||
export RUBY_BUILD_CACHE_PATH="${RBENV_ROOT}/cache"
|
||||
fi
|
||||
|
||||
# Default RBENV_VERSION to the globally-specified Ruby version. (The
|
||||
# REE installer requires an existing Ruby installation to run. An
|
||||
# unsatisfied local .ruby-version file can cause the installer to
|
||||
# fail.)
|
||||
# shellcheck disable=SC2155
|
||||
export RBENV_VERSION="$(rbenv-global 2>/dev/null || true)"
|
||||
|
||||
|
||||
# Execute `before_install` hooks.
|
||||
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
||||
|
||||
# Plan cleanup on unsuccessful installation.
|
||||
cleanup() {
|
||||
[ -z "${PREFIX_EXISTS}" ] && rm -rf "$PREFIX"
|
||||
}
|
||||
|
||||
trap cleanup SIGINT
|
||||
|
||||
build_args=(${KEEP:+--keep} ${VERBOSE:+--verbose} ${HAS_PATCH:+--patch} "$DEFINITION" "$PREFIX")
|
||||
[ ${#EXTRA_ARGUMENTS[@]} -eq 0 ] || build_args+=(-- "${EXTRA_ARGUMENTS[@]}")
|
||||
|
||||
# Invoke `ruby-build` and record the exit status in $STATUS.
|
||||
STATUS=0
|
||||
ruby-build "${build_args[@]}" || STATUS="$?"
|
||||
|
||||
# Display a more helpful message if the definition wasn't found.
|
||||
if [ "$STATUS" == "2" ]; then
|
||||
{ candidates="$(definitions "$DEFINITION")"
|
||||
here="$(dirname "${0%/*}")"
|
||||
if [ -n "$candidates" ]; then
|
||||
echo
|
||||
echo "The following versions contain \`$DEFINITION' in the name:"
|
||||
echo "$candidates" | indent
|
||||
fi
|
||||
echo
|
||||
echo "See all available versions with \`rbenv install --list-all'."
|
||||
echo
|
||||
echo -n "If the version you need is missing, try upgrading ruby-build"
|
||||
if [ "$here" != "${here#"$(brew --prefix 2>/dev/null)"}" ]; then
|
||||
printf ":\n\n"
|
||||
echo " brew upgrade ruby-build"
|
||||
elif [ -d "${here}/.git" ]; then
|
||||
display_here="$here"
|
||||
[[ -z "${HOME%/}" || $here != "${HOME}/"* ]] || display_here="~${here#"$HOME"}"
|
||||
printf ":\n\n"
|
||||
echo " git -C $display_here pull"
|
||||
if [ -n "$force_build" ]; then
|
||||
build
|
||||
elif [ -n "$force_package" ]; then
|
||||
package
|
||||
else
|
||||
printf ".\n"
|
||||
fi
|
||||
} >&2
|
||||
package --fail-silently || build
|
||||
fi
|
||||
|
||||
# Execute `after_install` hooks.
|
||||
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||
|
||||
# Run `rbenv-rehash` after a successful installation.
|
||||
if [ "$STATUS" == "0" ]; then
|
||||
rbenv-rehash
|
||||
suggest_selecting_global
|
||||
else
|
||||
cleanup
|
||||
fi
|
||||
|
||||
exit "$STATUS"
|
||||
rbenv rehash
|
||||
|
|
|
|||
|
|
@ -1,91 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Summary: Uninstall a specific Ruby version
|
||||
#
|
||||
# Usage: rbenv uninstall [-f|--force] <version>
|
||||
#
|
||||
# -f Attempt to remove the specified version without prompting
|
||||
# for confirmation. If the version does not exist, do not
|
||||
# display an error message.
|
||||
#
|
||||
# See `rbenv versions` for a complete list of installed versions.
|
||||
#
|
||||
set -e
|
||||
|
||||
# Provide rbenv completions
|
||||
if [ "$1" = "--complete" ]; then
|
||||
echo --force
|
||||
exec rbenv versions --bare
|
||||
fi
|
||||
|
||||
usage() {
|
||||
rbenv-help uninstall 2>/dev/null
|
||||
[ -z "$1" ] || exit "$1"
|
||||
}
|
||||
|
||||
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||
usage 0
|
||||
fi
|
||||
|
||||
unset FORCE
|
||||
if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then
|
||||
FORCE=true
|
||||
shift
|
||||
fi
|
||||
|
||||
[ "$#" -eq 1 ] || usage 1 >&2
|
||||
|
||||
DEFINITION="$1"
|
||||
case "$DEFINITION" in
|
||||
"" | -* )
|
||||
usage 1 >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
declare -a before_hooks after_hooks
|
||||
|
||||
before_uninstall() {
|
||||
local hook="$1"
|
||||
before_hooks["${#before_hooks[@]}"]="$hook"
|
||||
}
|
||||
|
||||
after_uninstall() {
|
||||
local hook="$1"
|
||||
after_hooks["${#after_hooks[@]}"]="$hook"
|
||||
}
|
||||
|
||||
OLDIFS="$IFS"
|
||||
IFS=$'\n' scripts=(`rbenv-hooks uninstall`)
|
||||
IFS="$OLDIFS"
|
||||
for script in "${scripts[@]}"; do source "$script"; done
|
||||
|
||||
|
||||
VERSION_NAME="${DEFINITION##*/}"
|
||||
PREFIX="${RBENV_ROOT}/versions/${VERSION_NAME}"
|
||||
|
||||
if [ -z "$FORCE" ]; then
|
||||
if [ ! -d "$PREFIX" ]; then
|
||||
echo "rbenv: version \`$VERSION_NAME' not installed" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -t 0 ]; then
|
||||
echo "rbenv: must use \`--force' in non-interactive mode" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
read -p "rbenv: remove $PREFIX? [yN] "
|
||||
case "$REPLY" in
|
||||
y* | Y* ) ;;
|
||||
* ) exit 1 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
||||
|
||||
if [ -d "$PREFIX" ]; then
|
||||
rm -rf "$PREFIX"
|
||||
rbenv-rehash
|
||||
fi
|
||||
|
||||
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||
1658
bin/ruby-build
1658
bin/ruby-build
File diff suppressed because it is too large
Load diff
47
bin/ruby-package
Executable file
47
bin/ruby-package
Executable file
|
|
@ -0,0 +1,47 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
resolve_link() {
|
||||
$(type -p greadlink readlink | head -1) $1
|
||||
}
|
||||
|
||||
abs_dirname() {
|
||||
local cwd="$(pwd)"
|
||||
local path="$1"
|
||||
|
||||
while [ -n "$path" ]; do
|
||||
cd "${path%/*}"
|
||||
local name="${path##*/}"
|
||||
path="$(resolve_link "$name" || true)"
|
||||
done
|
||||
|
||||
pwd
|
||||
cd "$cwd"
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "usage: ruby-package <command> [<args>]" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
bin_dir="$(abs_dirname "$0")"
|
||||
export PATH="${bin_dir}/../libexec:${bin_dir}:$PATH"
|
||||
|
||||
command="$1"
|
||||
command_path="$(command -v ruby-package-"$1" || true)"
|
||||
|
||||
if [ -z "$TMPDIR" ]; then
|
||||
export TMPDIR="/tmp"
|
||||
else
|
||||
export TMPDIR="${TMPDIR%/}"
|
||||
fi
|
||||
|
||||
if [ -z "$command" ]; then
|
||||
usage
|
||||
elif [ -z "$command_path" ]; then
|
||||
echo "ruby-package: ${command}: command not found" >&2
|
||||
usage
|
||||
fi
|
||||
|
||||
shift
|
||||
exec "$command_path" "$@"
|
||||
21
install.sh
21
install.sh
|
|
@ -1,22 +1,23 @@
|
|||
#!/bin/sh
|
||||
# Usage: PREFIX=/usr/local ./install.sh
|
||||
#
|
||||
# Installs ruby-build under $PREFIX.
|
||||
|
||||
set -e
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
if [ -z "${PREFIX}" ]; then
|
||||
PREFIX="/usr/local"
|
||||
fi
|
||||
|
||||
BIN_PATH="${PREFIX}/bin"
|
||||
SHARE_PATH="${PREFIX}/share/ruby-build"
|
||||
MAN_PATH="${PREFIX}/share/man/man1"
|
||||
|
||||
mkdir -p "$BIN_PATH" "$SHARE_PATH" "$MAN_PATH"
|
||||
mkdir -p "${BIN_PATH}"
|
||||
mkdir -p "${SHARE_PATH}"
|
||||
|
||||
install -p bin/* "$BIN_PATH"
|
||||
install -p -m 0644 share/ruby-build/* "$SHARE_PATH"
|
||||
install -p -m 0644 share/man/man1/*.1 "$MAN_PATH"
|
||||
for file in bin/*; do
|
||||
cp "${file}" "${BIN_PATH}"
|
||||
done
|
||||
|
||||
for file in share/ruby-build/*; do
|
||||
cp "${file}" "${SHARE_PATH}"
|
||||
done
|
||||
|
||||
echo "Installed ruby-build at ${PREFIX}"
|
||||
|
|
|
|||
99
libexec/ruby-package-build
Executable file
99
libexec/ruby-package-build
Executable file
|
|
@ -0,0 +1,99 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
resolve_link() {
|
||||
$(type -p greadlink readlink | head -1) $1
|
||||
}
|
||||
|
||||
abs_dirname() {
|
||||
local cwd="$(pwd)"
|
||||
local path="$1"
|
||||
|
||||
while [ -n "$path" ]; do
|
||||
cd "${path%/*}"
|
||||
local name="${path##*/}"
|
||||
path="$(resolve_link "$name" || true)"
|
||||
done
|
||||
|
||||
pwd
|
||||
cd "$cwd"
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "usage: ruby-package build [-v | --verbose] [--resume] DEFINITION"
|
||||
exit 1
|
||||
}
|
||||
|
||||
bin_root="$(abs_dirname "$0")"
|
||||
|
||||
verbose=""
|
||||
resume=""
|
||||
|
||||
while :; do
|
||||
case "$1" in
|
||||
"-v" | "--verbose" )
|
||||
verbose="-v"
|
||||
shift
|
||||
;;
|
||||
"--resume" )
|
||||
resume=1
|
||||
shift
|
||||
;;
|
||||
"-"* )
|
||||
usage
|
||||
;;
|
||||
* )
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
definition="$1"
|
||||
if [ -z "$definition" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
package="${definition##*/}"
|
||||
prefix="/tmp/ruby-build/-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/$package"
|
||||
|
||||
package_dir="${package}.$(ruby-package platform)"
|
||||
|
||||
if [ -z "$resume" ]; then
|
||||
ruby-build $verbose "$definition" "$prefix"
|
||||
fi
|
||||
|
||||
cwd="$(pwd)"
|
||||
cd "${prefix}/.."
|
||||
|
||||
mkdir -p "${package_dir}/bin"
|
||||
cp "${bin_root}/../share/ruby-package/ruby-package-install" "${package_dir}/bin"
|
||||
cp "${bin_root}/../share/ruby-package/ruby-package-rewrite-text" "${package_dir}/bin"
|
||||
cc -Wall "${bin_root}/../share/ruby-package/ruby-package-rewrite-binary.c" -o "${package_dir}/bin/ruby-package-rewrite-binary"
|
||||
|
||||
mkdir -p "${package_dir}/metadata"
|
||||
echo -n "$prefix" > "${package_dir}/metadata/prefix"
|
||||
echo -n "$package" > "${package_dir}/metadata/package"
|
||||
|
||||
cd "$package"
|
||||
|
||||
while read line; do
|
||||
binary="${line#Binary file }"
|
||||
if [ "$line" = "$binary" ]; then
|
||||
# plain text match
|
||||
text="${line%%:*}"
|
||||
echo "$text" >> "../${package_dir}/metadata/text-files"
|
||||
else
|
||||
# binary match
|
||||
binary="${binary% matches}"
|
||||
echo "$binary" >> "../${package_dir}/metadata/binary-files"
|
||||
fi
|
||||
done < <( grep -m 1 -R "$prefix" * )
|
||||
|
||||
tar cf "../${package_dir}/package.tar" *
|
||||
|
||||
cd ..
|
||||
|
||||
tar czf "${cwd}/${package_dir}.rubypackage" "$package_dir"
|
||||
rm -fr "$package_dir"
|
||||
|
||||
echo "${package_dir}.rubypackage"
|
||||
72
libexec/ruby-package-fetch
Executable file
72
libexec/ruby-package-fetch
Executable file
|
|
@ -0,0 +1,72 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
usage() {
|
||||
echo "usage: ruby-package fetch [--check] PACKAGE" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
check() {
|
||||
local url="$1"
|
||||
|
||||
set +e
|
||||
curl -ILfs "$url" >/dev/null
|
||||
local result="$?"
|
||||
set -e
|
||||
|
||||
if [ "$result" -ne 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
download() {
|
||||
local url="$1"
|
||||
local filename="$2"
|
||||
|
||||
set +e
|
||||
curl -Lfs "$url" > "$filename"
|
||||
local result="$?"
|
||||
set -e
|
||||
|
||||
if [ "$result" -ne 0 ]; then
|
||||
return 1
|
||||
elif [ ! -f "$filename" ]; then
|
||||
return 1
|
||||
else
|
||||
echo "$filename"
|
||||
fi
|
||||
}
|
||||
|
||||
check=""
|
||||
if [ "$1" = "--check" ]; then
|
||||
check=1
|
||||
shift
|
||||
fi
|
||||
|
||||
package="$1"
|
||||
if [ -z "$package" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
package_name="${package}.$(ruby-package platform).rubypackage"
|
||||
|
||||
package_repo="${RUBY_PACKAGE_REPO%/}"
|
||||
if [ -z "$ruby_package_repo" ]; then
|
||||
package_repo="https://github.com/downloads/sstephenson/ruby-packages"
|
||||
fi
|
||||
|
||||
package_url="${package_repo}/${package_name}"
|
||||
|
||||
if [ -n "$check" ]; then
|
||||
check "$package_url" || {
|
||||
echo "error: package \`$package' not found ($package_url)"
|
||||
exit 1
|
||||
} >&2
|
||||
else
|
||||
package_filename="${TMPDIR}/${package_name}.$$"
|
||||
echo "Downloading $package_url..." >&2
|
||||
download "$package_url" "$package_filename" || {
|
||||
echo "error: couldn't download package \`$package' ($package_url)"
|
||||
exit 1
|
||||
} >&2
|
||||
fi
|
||||
54
libexec/ruby-package-install
Executable file
54
libexec/ruby-package-install
Executable file
|
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
usage() {
|
||||
echo "usage: ruby-package install [--fail-silently] PACKAGE DESTINATION" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
cleanup_packages() {
|
||||
if [ -n "$package_root" ]; then
|
||||
rm -rf "${package_root%/*}"
|
||||
fi
|
||||
|
||||
if [ -n "$package_file" ]; then
|
||||
if [ "$package" != "$package_file" ]; then
|
||||
rm -rf "$package_file"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
fail_silently=""
|
||||
if [ "$1" = "--fail-silently" ]; then
|
||||
fail_silently=1
|
||||
shift
|
||||
fi
|
||||
|
||||
package="$1"
|
||||
if [ -z "$package" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
destination="$2"
|
||||
if [ -z "$destination" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
if [ -f "$package" ]; then
|
||||
package_file="$package"
|
||||
else
|
||||
if [ -n "$fail_silently" ]; then
|
||||
ruby-package fetch --check "$package" 2>/dev/null
|
||||
fi
|
||||
|
||||
package_file="$(ruby-package fetch "$package")"
|
||||
fi
|
||||
|
||||
trap cleanup_packages SIGINT SIGTERM EXIT
|
||||
|
||||
package_root="$(ruby-package unpack "$package_file")"
|
||||
package_name="$(cat "${package_root}/metadata/package")"
|
||||
|
||||
echo "Installing ${package_name}..." >&2
|
||||
"${package_root}/bin/ruby-package-install" "$destination"
|
||||
echo "Installed ${package_name} to ${destination}" >&2
|
||||
4
libexec/ruby-package-platform
Executable file
4
libexec/ruby-package-platform
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
echo "$(uname -m)-$(uname -s)" | tr '[A-Z] ' '[a-z]_'
|
||||
55
libexec/ruby-package-unpack
Executable file
55
libexec/ruby-package-unpack
Executable file
|
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
resolve_link() {
|
||||
$(type -p greadlink readlink | head -1) $1
|
||||
}
|
||||
|
||||
abs_dirname() {
|
||||
local cwd="$(pwd)"
|
||||
local path="$1"
|
||||
|
||||
while [ -n "$path" ]; do
|
||||
cd "${path%/*}" 2>/dev/null
|
||||
local name="${path##*/}"
|
||||
path="$(resolve_link "$name" || true)"
|
||||
done
|
||||
|
||||
pwd
|
||||
cd "$cwd"
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "usage: ruby-package unpack PACKAGE_FILE" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
package_file="$1"
|
||||
if [ -z "$package_file" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
package_path="$(abs_dirname "$package_file")/${package_file##*/}"
|
||||
if [ ! -f "$package_path" ]; then
|
||||
echo "error: file not found: $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
root="${TMPDIR}/ruby-package.$$"
|
||||
rm -fr "$root"
|
||||
mkdir -p "$root"
|
||||
|
||||
cd "$root"
|
||||
tar xzf "$package_path"
|
||||
|
||||
cd *
|
||||
package_root="$(pwd)"
|
||||
package_name="$(cat "$package_root"/metadata/package)"
|
||||
package_name_with_platform="${package_root##*/}"
|
||||
|
||||
if [ "${package_name}.$(ruby-package platform)" != "$package_name_with_platform" ]; then
|
||||
echo "error: invalid package format" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
echo "$package_root"
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# Usage: script/release
|
||||
#
|
||||
# - checks out the master branch
|
||||
# - changes version in `bin/ruby-build` to current date
|
||||
# - commits and tags the change
|
||||
# - pushes master & the new tag to GitHub
|
||||
# - creates a new Release on GitHub
|
||||
# - [automated] a GitHub Action will create a Homebrew PR for the new release
|
||||
|
||||
set -e
|
||||
|
||||
git fetch -q --tags origin master
|
||||
git checkout -q master
|
||||
git merge --ff-only '@{upstream}'
|
||||
|
||||
existing="$(git tag --points-at HEAD)"
|
||||
if [ -n "$existing" ]; then
|
||||
echo "Aborting: HEAD is already tagged as '${existing}'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
binfile="bin/ruby-build"
|
||||
new_version="$(date '+%Y%m%d')"
|
||||
|
||||
version_suffix=""
|
||||
while git show-ref --verify --quiet -- "refs/tags/v${new_version}${version_suffix}"; do
|
||||
version_suffix=".$(( ${version_suffix#.} + 1 ))"
|
||||
done
|
||||
|
||||
new_version="${new_version}${version_suffix}"
|
||||
version_tag="v${new_version}"
|
||||
previous_tag="$(git describe --tags HEAD --abbrev=0)"
|
||||
|
||||
if git diff --quiet "${previous_tag}..HEAD" -- bin share; then
|
||||
echo "Aborting: No features to release since '${previous_tag}'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sed -i.bak -E "s!^(RUBY_BUILD_VERSION=).+!\\1\"${new_version}\"!" "$binfile"
|
||||
rm -f "${binfile}.bak"
|
||||
make share/man/man1/ruby-build.1
|
||||
|
||||
git commit -m "ruby-build ${new_version}" -- "$binfile" share/man/man1/ruby-build.1
|
||||
|
||||
git tag "$version_tag"
|
||||
git push origin master "${version_tag}"
|
||||
|
||||
gh release create "$version_tag" --title "ruby-build ${new_version}" --generate-notes
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
bats ${CI:+--tap} test "$@"
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "usage: $0 VERSION OPENSSL_VERSION RELEASE_DIRECTORY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version="$1"
|
||||
openssl_version="$2"
|
||||
release_directory="$3"
|
||||
file="share/ruby-build/${version}"
|
||||
|
||||
basename="ruby-${version}.tar.gz"
|
||||
openssl_basename="openssl-${openssl_version}.tar.gz"
|
||||
major_minor_version=$(echo ${version} | cut -d '.' -f 1,2)
|
||||
url="https://cache.ruby-lang.org/pub/ruby/${major_minor_version}/${basename}"
|
||||
if command -v sha256sum >/dev/null; then
|
||||
sha256=$(sha256sum "$release_directory/$basename" | cut -d ' ' -f 1)
|
||||
elif command -v shasum >/dev/null; then
|
||||
sha256=$(shasum -a 256 "$release_directory/$basename" | cut -d ' ' -f 1)
|
||||
else
|
||||
echo "$0 requires sha256sum or shasum to be installed on the system."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
openssl_url="https://github.com/openssl/openssl/releases/download/openssl-${openssl_version}/openssl-${openssl_version}.tar.gz"
|
||||
if command -v sha256sum >/dev/null; then
|
||||
openssl_sha256=$(sha256sum "$release_directory/$openssl_basename" | cut -d ' ' -f 1)
|
||||
elif command -v shasum >/dev/null; then
|
||||
openssl_sha256=$(shasum -a 256 "$release_directory/$openssl_basename" | cut -d ' ' -f 1)
|
||||
else
|
||||
echo "$0 requires sha256sum or shasum to be installed on the system."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
major_version=$(echo ${version} | cut -d '.' -f 1)
|
||||
if [ "$major_version" -ge 4 ]; then
|
||||
needs_openssl="needs_openssl:1.1.1-3.x.x"
|
||||
else
|
||||
needs_openssl="needs_openssl:1.0.2-3.x.x"
|
||||
fi
|
||||
|
||||
cat > "$file" <<EOS
|
||||
install_package "openssl-${openssl_version}" "${openssl_url}#${openssl_sha256}" openssl --if ${needs_openssl}
|
||||
install_package "ruby-${version}" "${url}#${sha256}" enable_shared standard
|
||||
EOS
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# Adds "warn_unsupported" or "warn_eol" to CRuby definitions based on the
|
||||
# information from endoflife.date.
|
||||
|
||||
set -e
|
||||
|
||||
date_to_seconds() {
|
||||
# BSD date
|
||||
date -jf '%Y-%m-%d' -v 0H -v 0M -v 0S "$1" '+%s' 2>/dev/null ||
|
||||
# GNU date
|
||||
date --date "$1" '+%s'
|
||||
}
|
||||
|
||||
now_seconds="$(date '+%s')"
|
||||
|
||||
while read -r cycle eol_date; do
|
||||
eol_seconds="$(date_to_seconds "$eol_date")"
|
||||
days_to_eol=$(((eol_seconds - now_seconds) / 60 / 60 / 24))
|
||||
if [ $days_to_eol -lt 0 ]; then
|
||||
grep -L warn_eol share/ruby-build/"$cycle"[.-]* | grep -ve '-dev$' | \
|
||||
xargs sed -i.bak -E '/openssl/n; s/ warn_unsupported//; s/(.+)"/\1" warn_eol/'
|
||||
elif [ $days_to_eol -lt 180 ]; then
|
||||
grep -L warn_unsupported share/ruby-build/"$cycle"[.-]* | grep -ve '-dev$' | \
|
||||
xargs sed -i.bak -E '/openssl/n; s/(.+)"/\1" warn_unsupported/'
|
||||
fi
|
||||
done < <(
|
||||
curl -fsSL https://endoflife.date/api/ruby.json | jq -r '.[] | [.cycle,.eol] | @tsv'
|
||||
printf "%s\t%s\n" "jruby-9.0" "1970-01-01"
|
||||
printf "%s\t%s\n" "jruby-9.1" "1970-01-01"
|
||||
printf "%s\t%s\n" "jruby-9.2" "1970-01-01"
|
||||
printf "%s\t%s\n" "jruby-9.3" "2024-01-01"
|
||||
printf "%s\t%s\n" "jruby-9.4" "2026-05-01"
|
||||
)
|
||||
|
||||
num_updated="$(rm -fv share/ruby-build/*.bak | wc -l)"
|
||||
printf "definition files updated: %d\n" "$num_updated"
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "usage: $0 VERSION RELEASE_DIRECTORY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version="$1"
|
||||
release_directory="$2"
|
||||
file="share/ruby-build/jruby-${version}"
|
||||
|
||||
basename="jruby-dist-${version}-bin.tar.gz"
|
||||
url="https://repo1.maven.org/maven2/org/jruby/jruby-dist/${version}/${basename}"
|
||||
archive="$release_directory/$basename"
|
||||
[ -e "$archive" ] || wget -O "$archive" "$url"
|
||||
sha256=$(sha256sum "$archive" | cut -d ' ' -f 1)
|
||||
|
||||
min_java_version="8"
|
||||
if [ "${version%%.*}" -ge 10 ]; then
|
||||
min_java_version="21"
|
||||
fi
|
||||
|
||||
cat > "$file" <<EOS
|
||||
require_java ${min_java_version}
|
||||
install_package "jruby-${version}" "${url}#${sha256}" jruby
|
||||
EOS
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
require 'open-uri'
|
||||
require 'digest/sha2'
|
||||
require 'tempfile'
|
||||
|
||||
raise "Usage: #{$0} NEW_VERSION" unless ARGV.size == 1
|
||||
new_version = ARGV[0]
|
||||
|
||||
major_minor = new_version.split('.')[0..1].join('.')
|
||||
|
||||
url = "https://github.com/openssl/openssl/releases/download/openssl-#{new_version}/openssl-#{new_version}.tar.gz"
|
||||
sha = nil
|
||||
|
||||
Tempfile.create(['openssl', '.tar.gz']) do |tmpfile|
|
||||
URI.open(url) do |remote_file|
|
||||
IO.copy_stream(remote_file, tmpfile)
|
||||
end
|
||||
tmpfile.rewind
|
||||
|
||||
sha = Digest::SHA256.file(tmpfile.path).hexdigest
|
||||
end
|
||||
|
||||
Dir.glob('share/ruby-build/*') do |file|
|
||||
contents = File.read(file)
|
||||
|
||||
openssl_package = "\"openssl-#{major_minor}"
|
||||
|
||||
next unless contents.include? openssl_package
|
||||
|
||||
lines = contents.lines
|
||||
line = lines.find { |line| line.include? openssl_package }
|
||||
old_version = line[/"openssl-([\d.]+[a-z]?)"/, 1] or raise
|
||||
line.gsub!(old_version, new_version)
|
||||
line.sub!(/\.tar\.gz#(\h+)"/, ".tar.gz##{sha}\"")
|
||||
File.write(file, lines.join)
|
||||
end
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "usage: $0 VERSION RELEASE_DIRECTORY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version="$1"
|
||||
release_directory="$2"
|
||||
file="share/ruby-build/truffleruby-${version}"
|
||||
|
||||
add_platform() {
|
||||
platform="$1"
|
||||
basename="truffleruby-${version}-${platform}.tar.gz"
|
||||
url="https://github.com/truffleruby/truffleruby/releases/download/graal-${version}/${basename}"
|
||||
sha256=$(sha256sum "$release_directory/$basename" | cut -d ' ' -f 1)
|
||||
|
||||
cat >> "$file" <<EOS
|
||||
install_package "truffleruby-${version}" "${url}#${sha256}" truffleruby
|
||||
;;
|
||||
EOS
|
||||
}
|
||||
|
||||
cat > "$file" <<EOS
|
||||
platform="\$(uname -s)-\$(uname -m)"
|
||||
case \$platform in
|
||||
Linux-x86_64)
|
||||
EOS
|
||||
add_platform "linux-amd64"
|
||||
cat >> "$file" <<EOS
|
||||
Linux-aarch64)
|
||||
EOS
|
||||
add_platform "linux-aarch64"
|
||||
cat >> "$file" <<EOS
|
||||
Darwin-arm64)
|
||||
EOS
|
||||
add_platform "macos-aarch64"
|
||||
cat >> "$file" <<EOS
|
||||
*)
|
||||
colorize 1 "Unsupported platform: \$platform"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
EOS
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "usage: $0 VERSION RELEASE_DIRECTORY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version="$1"
|
||||
release_directory="$2"
|
||||
file="share/ruby-build/truffleruby+graalvm-${version}"
|
||||
|
||||
add_platform() {
|
||||
platform="$1"
|
||||
basename="truffleruby-jvm-${version}-${platform}.tar.gz"
|
||||
url="https://github.com/truffleruby/truffleruby/releases/download/graal-${version}/${basename}"
|
||||
sha256=$(sha256sum "$release_directory/$basename" | cut -d ' ' -f 1)
|
||||
|
||||
cat >> "$file" <<EOS
|
||||
install_package "truffleruby+graalvm-${version}" "${url}#${sha256}" truffleruby
|
||||
;;
|
||||
EOS
|
||||
}
|
||||
|
||||
cat > "$file" <<EOS
|
||||
platform="\$(uname -s)-\$(uname -m)"
|
||||
case \$platform in
|
||||
Linux-x86_64)
|
||||
EOS
|
||||
add_platform "linux-amd64"
|
||||
cat >> "$file" <<EOS
|
||||
Linux-aarch64)
|
||||
EOS
|
||||
add_platform "linux-aarch64"
|
||||
cat >> "$file" <<EOS
|
||||
Darwin-arm64)
|
||||
EOS
|
||||
add_platform "macos-aarch64"
|
||||
cat >> "$file" <<EOS
|
||||
*)
|
||||
colorize 1 "Unsupported platform: \$platform"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
EOS
|
||||
|
|
@ -1,399 +0,0 @@
|
|||
'\" t
|
||||
.\" Title: ruby-build
|
||||
.\" Author: Mislav Marohnić
|
||||
.\" Generator: Asciidoctor 2.0.26
|
||||
.\" Date: 2026-05-07
|
||||
.\" Manual: ruby-build Manual
|
||||
.\" Source: ruby-build 20260512
|
||||
.\" Language: English
|
||||
.\"
|
||||
.TH "RUBY\-BUILD" "1" "2026-05-07" "ruby\-build 20260512" "ruby\-build Manual"
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.ss \n[.ss] 0
|
||||
.nh
|
||||
.ad l
|
||||
.de URL
|
||||
\fI\\$2\fP <\\$1>\\$3
|
||||
..
|
||||
.als MTO URL
|
||||
.if \n[.g] \{\
|
||||
. mso www.tmac
|
||||
. am URL
|
||||
. ad l
|
||||
. .
|
||||
. am MTO
|
||||
. ad l
|
||||
. .
|
||||
. LINKSTYLE blue R < >
|
||||
.\}
|
||||
.SH "NAME"
|
||||
ruby-build \- Download, compile, and install a version of Ruby
|
||||
.SH "SYNOPSIS"
|
||||
.sp
|
||||
ruby\-build [\-dvpk] \fI<definition>\fP \fI<prefix>\fP [\-\- \fI<configure\-args>\fP.\|.\|.]
|
||||
.br
|
||||
ruby\-build {\-\-list|\-\-definitions}
|
||||
.br
|
||||
ruby\-build \-\-resolve \fI<version>\fP
|
||||
.br
|
||||
ruby\-build \-\-version
|
||||
.SH "DESCRIPTION"
|
||||
.sp
|
||||
ruby\-build downloads, compiles, and installs a Ruby version named by the
|
||||
\fIdefinition\fP argument into the location specified by \fIprefix\fP.
|
||||
.sp
|
||||
The \fIdefinition\fP argument can be a path to a file on disk, in which case
|
||||
it is sourced into ruby\-build as a bash script.
|
||||
.sp
|
||||
Optionally, extra Ruby \fIconfigure\-args\fP may be listed after "\-\-" and
|
||||
will get forwarded to the \f(CR./configure\fP invocation.
|
||||
.sp
|
||||
By default, all compile output is redirected to a log file at
|
||||
\f(CR$TMPDIR/ruby\-build.*.log\fP. Activate the verbose mode to skip the log file
|
||||
and print everything to standard streams.
|
||||
.SH "RUBY VERSIONS"
|
||||
.sp
|
||||
When listing "latest" Ruby versions, such as in \f(CR\-\-list\fP output,
|
||||
ruby\-build only knows of Ruby versions that are bundled with this project.
|
||||
That means that when a new Ruby version comes out, ruby\-build will not
|
||||
know about it immediately; you will have to upgrade ruby\-build before you
|
||||
can use it to install the new Ruby version.
|
||||
.SH "RUBY IMPLEMENTATIONS"
|
||||
.sp
|
||||
ruby\-build ships with definitions for the following Ruby implementations:
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
. sp -1
|
||||
. IP \(bu 2.3
|
||||
.\}
|
||||
CRuby, also known as "MRI": denoted by version numbers in form of "X.Y.Z".
|
||||
This is the main Ruby implementation that most people use.
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
. sp -1
|
||||
. IP \(bu 2.3
|
||||
.\}
|
||||
"jruby": High\-performance Ruby implementation with real threading built
|
||||
on top of the Java virtual machine (JVM).
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
. sp -1
|
||||
. IP \(bu 2.3
|
||||
.\}
|
||||
"mruby": Lightweight Ruby for microcontrollers.
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
. sp -1
|
||||
. IP \(bu 2.3
|
||||
.\}
|
||||
"picoruby": Alternative mruby implementation for one\-chip microcontrollers.
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
. sp -1
|
||||
. IP \(bu 2.3
|
||||
.\}
|
||||
"truffleruby": The Native standalone distribution of TruffleRuby, an
|
||||
implementation of Ruby on top of GraalVM\(cqs Truffle framework.
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
. sp -1
|
||||
. IP \(bu 2.3
|
||||
.\}
|
||||
"truffleruby+graalvm": The JVM standalone distribution of TruffleRuby.
|
||||
.RE
|
||||
.sp
|
||||
The \fIdefinition\fP argument may optionally start with "ruby\-", in which case
|
||||
it resolves to a CRuby that matches the version number that follows. The
|
||||
\fIdefinition\fP argument may also be a name of one of the alternative Ruby
|
||||
implementations, in which case the latest version of that implementation
|
||||
will be installed.
|
||||
.SH "OPTIONS"
|
||||
.sp
|
||||
\fB\-l, \-\-list\fP
|
||||
.RS 4
|
||||
List latest stable releases for each Ruby
|
||||
.RE
|
||||
.sp
|
||||
\fB\-\-definitions\fP
|
||||
.RS 4
|
||||
List all local definitions, including outdated ones
|
||||
.RE
|
||||
.sp
|
||||
\fB\-\-resolve\fP
|
||||
.RS 4
|
||||
Print the definition name of the latest stable Ruby version matching the \fIversion\fP argument
|
||||
.RE
|
||||
.sp
|
||||
\fB\-\-version\fP
|
||||
.RS 4
|
||||
Show version of ruby\-build
|
||||
.RE
|
||||
.sp
|
||||
\fB\-d, \-\-dir\fP
|
||||
.RS 4
|
||||
Install the Ruby in the \fIprefix/definition\fP destination instead of directly in \fIprefix\fP
|
||||
.RE
|
||||
.sp
|
||||
\fB\-v, \-\-verbose\fP
|
||||
.RS 4
|
||||
Verbose mode: forward all build output to stdout/stderr
|
||||
.RE
|
||||
.sp
|
||||
\fB\-p, \-\-patch\fP
|
||||
.RS 4
|
||||
Apply a patch from stdin before building
|
||||
.RE
|
||||
.sp
|
||||
\fB\-k, \-\-keep\fP
|
||||
.RS 4
|
||||
Do not remove source tree after installation
|
||||
.RE
|
||||
.sp
|
||||
\fB\-4, \-\-ipv4\fP
|
||||
.RS 4
|
||||
Resolve names to IPv4 addresses only
|
||||
.RE
|
||||
.sp
|
||||
\fB\-6, \-\-ipv6\fP
|
||||
.RS 4
|
||||
Resolve names to IPv6 addresses only
|
||||
.RE
|
||||
.SH "EXAMPLES"
|
||||
.sp
|
||||
Install a Ruby version while tweaking some configuration options:
|
||||
.sp
|
||||
.if n .RS 4
|
||||
.nf
|
||||
.fam C
|
||||
$ ruby\-build 3.4.9 /path/to/destination \-\- \-\-disable\-install\-doc \-\-with\-openssl\-dir=/opt/openssl
|
||||
.fam
|
||||
.fi
|
||||
.if n .RE
|
||||
.sp
|
||||
Install a Ruby version to \f(CR~/.rubies/ruby\-3.4.9\fP:
|
||||
.sp
|
||||
.if n .RS 4
|
||||
.nf
|
||||
.fam C
|
||||
$ ruby\-build \-\-dir ruby\-3.4.9 ~/.rubies
|
||||
.fam
|
||||
.fi
|
||||
.if n .RE
|
||||
.sp
|
||||
Install the latest Ruby 3.x version to \f(CR~/.rubies/ruby\-3.x.y\fP:
|
||||
.sp
|
||||
.if n .RS 4
|
||||
.nf
|
||||
.fam C
|
||||
$ ruby\-build \-\-dir ruby\-3 ~/.rubies
|
||||
.fam
|
||||
.fi
|
||||
.if n .RE
|
||||
.sp
|
||||
Install a Ruby version to \f(CR~/.rbenv/versions/3.3.11\fP:
|
||||
.sp
|
||||
.if n .RS 4
|
||||
.nf
|
||||
.fam C
|
||||
$ ruby\-build \-\-dir 3.3.11 ~/.rbenv/versions
|
||||
.fam
|
||||
.fi
|
||||
.if n .RE
|
||||
.sp
|
||||
Usage as rbenv plugin, accomplishes the same as the previous example:
|
||||
.sp
|
||||
.if n .RS 4
|
||||
.nf
|
||||
.fam C
|
||||
$ rbenv install 3.3.11
|
||||
.fam
|
||||
.fi
|
||||
.if n .RE
|
||||
.SH "ENVIRONMENT VARIABLES"
|
||||
.sp
|
||||
\fBTMPDIR\fP
|
||||
.RS 4
|
||||
The location to write temporary files on disk
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_BUILD_PATH\fP (default: a timestamped subdirectory of \fITMPDIR\fP)
|
||||
.RS 4
|
||||
The build location for downloading source files to and compiling
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_CACHE_PATH\fP (default: "~/.rbenv/cache" if invoked as rbenv plugin)
|
||||
.RS 4
|
||||
Where to cache downloaded package files
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_HTTP_CLIENT\fP (default: first tool found in PATH)
|
||||
.RS 4
|
||||
One of "aria2c", "curl", or "wget" to use for downloading
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_ARIA2_OPTS\fP
|
||||
.RS 4
|
||||
Additional options to pass to aria2c for downloading
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_CURL_OPTS\fP
|
||||
.RS 4
|
||||
Additional options to pass to curl for downloading
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_WGET_OPTS\fP
|
||||
.RS 4
|
||||
Additional options to pass to wget for downloading
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_MIRROR_URL\fP (default: a sponsored Amazon CloudFront mirror)
|
||||
.RS 4
|
||||
Custom mirror URL root to download packages from
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_MIRROR_PACKAGE_URL\fP
|
||||
.RS 4
|
||||
Custom complete mirror URL
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_SKIP_MIRROR\fP
|
||||
.RS 4
|
||||
Bypass the download mirror and fetch all package files from their original URLs
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_ROOT\fP (default: "share/ruby\-build" within ruby\-build install location)
|
||||
.RS 4
|
||||
Custom build definition directory
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_TARBALL_OVERRIDE\fP
|
||||
.RS 4
|
||||
Override the URL to fetch the ruby tarball from, optionally followed by "#<checksum>"
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_BUILD_DEFINITIONS\fP
|
||||
.RS 4
|
||||
Paths to search for build definitions in addition to \fIRUBY_BUILD_ROOT\fP
|
||||
.RE
|
||||
.sp
|
||||
\fBCC\fP
|
||||
.RS 4
|
||||
Path to the C compiler
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_CFLAGS\fP
|
||||
.RS 4
|
||||
Additional \f(CRCFLAGS\fP options to use for Ruby compilation
|
||||
.RE
|
||||
.sp
|
||||
\fBCONFIGURE_OPTS\fP
|
||||
.RS 4
|
||||
Additional "./configure" arguments
|
||||
.RE
|
||||
.sp
|
||||
\fBMAKE\fP (default: "make")
|
||||
.RS 4
|
||||
Custom make command (e.g., "gmake")
|
||||
.RE
|
||||
.sp
|
||||
\fBMAKE_OPTS\fP, \fBMAKEOPTS\fP
|
||||
.RS 4
|
||||
Additional arguments for "make"
|
||||
.RE
|
||||
.sp
|
||||
\fBMAKE_INSTALL_OPTS\fP
|
||||
.RS 4
|
||||
Additional arguments for "make install"
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_CONFIGURE_OPTS\fP
|
||||
.RS 4
|
||||
Additional "./configure" arguments that apply only to Ruby source
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_MAKE_OPTS\fP
|
||||
.RS 4
|
||||
Additional make arguments that apply only to Ruby source
|
||||
.RE
|
||||
.sp
|
||||
\fBRUBY_MAKE_INSTALL_OPTS\fP
|
||||
.RS 4
|
||||
Additional "make install" arguments that apply only to Ruby source
|
||||
.RE
|
||||
.sp
|
||||
\fBNO_COLOR\fP (default: allow colors when connected to terminal)
|
||||
.RS 4
|
||||
Disable ANSI colors in output
|
||||
.RE
|
||||
.sp
|
||||
\fBCLICOLOR_FORCE\fP
|
||||
.RS 4
|
||||
Use ANSI colors in output even when not connected to a terminal
|
||||
.RE
|
||||
.SH "NOTES"
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
. sp -1
|
||||
. IP \(bu 2.3
|
||||
.\}
|
||||
.URL "https://github.com/rbenv/ruby\-build#readme" "" ""
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
. sp -1
|
||||
. IP \(bu 2.3
|
||||
.\}
|
||||
.URL "https://github.com/rbenv/ruby\-build/wiki" "" ""
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
. sp -1
|
||||
. IP \(bu 2.3
|
||||
.\}
|
||||
.URL "https://github.com/rbenv/ruby\-build/discussions" "" ""
|
||||
.RE
|
||||
.SH "AUTHOR"
|
||||
.sp
|
||||
Mislav Marohnić
|
||||
|
|
@ -1,206 +0,0 @@
|
|||
= ruby-build(1)
|
||||
Mislav Marohnić
|
||||
:doctype: manpage
|
||||
:man manual: ruby-build Manual
|
||||
:man source: ruby-build {version}
|
||||
:man-linkstyle: pass:[blue R < >]
|
||||
|
||||
== Name
|
||||
|
||||
ruby-build - Download, compile, and install a version of Ruby
|
||||
|
||||
== Synopsis
|
||||
|
||||
ruby-build [-dvpk] _<definition>_ _<prefix>_ [-- _<configure-args>_...] +
|
||||
ruby-build {--list|--definitions} +
|
||||
ruby-build --resolve _<version>_ +
|
||||
ruby-build --version
|
||||
|
||||
== Description
|
||||
|
||||
ruby-build downloads, compiles, and installs a Ruby version named by the
|
||||
_definition_ argument into the location specified by _prefix_.
|
||||
|
||||
The _definition_ argument can be a path to a file on disk, in which case
|
||||
it is sourced into ruby-build as a bash script.
|
||||
|
||||
Optionally, extra Ruby _configure-args_ may be listed after "--" and
|
||||
will get forwarded to the `./configure` invocation.
|
||||
|
||||
By default, all compile output is redirected to a log file at
|
||||
`$TMPDIR/ruby-build.*.log`. Activate the verbose mode to skip the log file
|
||||
and print everything to standard streams.
|
||||
|
||||
== Ruby versions
|
||||
|
||||
When listing "latest" Ruby versions, such as in `--list` output,
|
||||
ruby-build only knows of Ruby versions that are bundled with this project.
|
||||
That means that when a new Ruby version comes out, ruby-build will not
|
||||
know about it immediately; you will have to upgrade ruby-build before you
|
||||
can use it to install the new Ruby version.
|
||||
|
||||
== Ruby implementations
|
||||
|
||||
ruby-build ships with definitions for the following Ruby implementations:
|
||||
|
||||
- CRuby, also known as "MRI": denoted by version numbers in form of "X.Y.Z".
|
||||
This is the main Ruby implementation that most people use.
|
||||
|
||||
- "jruby": High-performance Ruby implementation with real threading built
|
||||
on top of the Java virtual machine (JVM).
|
||||
|
||||
- "mruby": Lightweight Ruby for microcontrollers.
|
||||
|
||||
- "picoruby": Alternative mruby implementation for one-chip microcontrollers.
|
||||
|
||||
- "truffleruby": The Native standalone distribution of TruffleRuby, an
|
||||
implementation of Ruby on top of GraalVM's Truffle framework.
|
||||
|
||||
- "truffleruby+graalvm": The JVM standalone distribution of TruffleRuby.
|
||||
|
||||
The _definition_ argument may optionally start with "ruby-", in which case
|
||||
it resolves to a CRuby that matches the version number that follows. The
|
||||
_definition_ argument may also be a name of one of the alternative Ruby
|
||||
implementations, in which case the latest version of that implementation
|
||||
will be installed.
|
||||
|
||||
== Options
|
||||
|
||||
*-l, --list*::
|
||||
List latest stable releases for each Ruby
|
||||
|
||||
*--definitions*::
|
||||
List all local definitions, including outdated ones
|
||||
|
||||
*--resolve*::
|
||||
Print the definition name of the latest stable Ruby version matching the _version_ argument
|
||||
|
||||
*--version*::
|
||||
Show version of ruby-build
|
||||
|
||||
*-d, --dir*::
|
||||
Install the Ruby in the _prefix/definition_ destination instead of directly in _prefix_
|
||||
|
||||
*-v, --verbose*::
|
||||
Verbose mode: forward all build output to stdout/stderr
|
||||
|
||||
*-p, --patch*::
|
||||
Apply a patch from stdin before building
|
||||
|
||||
*-k, --keep*::
|
||||
Do not remove source tree after installation
|
||||
|
||||
*-4, --ipv4*::
|
||||
Resolve names to IPv4 addresses only
|
||||
|
||||
*-6, --ipv6*::
|
||||
Resolve names to IPv6 addresses only
|
||||
|
||||
== Examples
|
||||
|
||||
Install a Ruby version while tweaking some configuration options:
|
||||
----
|
||||
$ ruby-build 3.4.9 /path/to/destination -- --disable-install-doc --with-openssl-dir=/opt/openssl
|
||||
----
|
||||
|
||||
Install a Ruby version to `~/.rubies/ruby-3.4.9`:
|
||||
----
|
||||
$ ruby-build --dir ruby-3.4.9 ~/.rubies
|
||||
----
|
||||
|
||||
Install the latest Ruby 3.x version to `~/.rubies/ruby-3.x.y`:
|
||||
----
|
||||
$ ruby-build --dir ruby-3 ~/.rubies
|
||||
----
|
||||
|
||||
Install a Ruby version to `~/.rbenv/versions/3.3.11`:
|
||||
----
|
||||
$ ruby-build --dir 3.3.11 ~/.rbenv/versions
|
||||
----
|
||||
|
||||
Usage as rbenv plugin, accomplishes the same as the previous example:
|
||||
----
|
||||
$ rbenv install 3.3.11
|
||||
----
|
||||
|
||||
== Environment Variables
|
||||
|
||||
*TMPDIR*::
|
||||
The location to write temporary files on disk
|
||||
|
||||
*RUBY_BUILD_BUILD_PATH* (default: a timestamped subdirectory of _TMPDIR_)::
|
||||
The build location for downloading source files to and compiling
|
||||
|
||||
*RUBY_BUILD_CACHE_PATH* (default: "~/.rbenv/cache" if invoked as rbenv plugin)::
|
||||
Where to cache downloaded package files
|
||||
|
||||
*RUBY_BUILD_HTTP_CLIENT* (default: first tool found in PATH)::
|
||||
One of "aria2c", "curl", or "wget" to use for downloading
|
||||
|
||||
*RUBY_BUILD_ARIA2_OPTS*::
|
||||
Additional options to pass to aria2c for downloading
|
||||
|
||||
*RUBY_BUILD_CURL_OPTS*::
|
||||
Additional options to pass to curl for downloading
|
||||
|
||||
*RUBY_BUILD_WGET_OPTS*::
|
||||
Additional options to pass to wget for downloading
|
||||
|
||||
*RUBY_BUILD_MIRROR_URL* (default: a sponsored Amazon CloudFront mirror)::
|
||||
Custom mirror URL root to download packages from
|
||||
|
||||
*RUBY_BUILD_MIRROR_PACKAGE_URL*::
|
||||
Custom complete mirror URL
|
||||
|
||||
*RUBY_BUILD_SKIP_MIRROR*::
|
||||
Bypass the download mirror and fetch all package files from their original URLs
|
||||
|
||||
*RUBY_BUILD_ROOT* (default: "share/ruby-build" within ruby-build install location)::
|
||||
Custom build definition directory
|
||||
|
||||
*RUBY_BUILD_TARBALL_OVERRIDE*::
|
||||
Override the URL to fetch the ruby tarball from, optionally followed by "#<checksum>"
|
||||
|
||||
*RUBY_BUILD_DEFINITIONS*::
|
||||
Paths to search for build definitions in addition to _RUBY_BUILD_ROOT_
|
||||
|
||||
*CC*::
|
||||
Path to the C compiler
|
||||
|
||||
*RUBY_CFLAGS*::
|
||||
Additional `CFLAGS` options to use for Ruby compilation
|
||||
|
||||
*CONFIGURE_OPTS*::
|
||||
Additional "./configure" arguments
|
||||
|
||||
*MAKE* (default: "make")::
|
||||
Custom make command (e.g., "gmake")
|
||||
|
||||
*MAKE_OPTS*, *MAKEOPTS*::
|
||||
Additional arguments for "make"
|
||||
|
||||
*MAKE_INSTALL_OPTS*::
|
||||
Additional arguments for "make install"
|
||||
|
||||
*RUBY_CONFIGURE_OPTS*::
|
||||
Additional "./configure" arguments that apply only to Ruby source
|
||||
|
||||
*RUBY_MAKE_OPTS*::
|
||||
Additional make arguments that apply only to Ruby source
|
||||
|
||||
*RUBY_MAKE_INSTALL_OPTS*::
|
||||
Additional "make install" arguments that apply only to Ruby source
|
||||
|
||||
*NO_COLOR* (default: allow colors when connected to terminal)::
|
||||
Disable ANSI colors in output
|
||||
|
||||
*CLICOLOR_FORCE*::
|
||||
Use ANSI colors in output even when not connected to a terminal
|
||||
|
||||
== Notes
|
||||
|
||||
* https://github.com/rbenv/ruby-build#readme
|
||||
|
||||
* https://github.com/rbenv/ruby-build/wiki
|
||||
|
||||
* https://github.com/rbenv/ruby-build/discussions
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.5-p113" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p113.tar.bz2#216600f9ad07648c501766a25069009c5c543010821da2ad916dd2ca808efd01" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.5-p114" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p114.tar.bz2#c503ae8eb47db72f78fb7a79fe1874ffef40a7094f7e803bacbf994a924244d9" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.5-p115" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p115.tar.bz2#3b5b799d6445b4ec8bc8b2944c6797dbd031b22e1756c9ae8b08c1f5d6cdc398" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.5-p231" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p231.tar.bz2#b31a8db0a3b538c28bca1c9b08a07eb55a39547fdaad00c045f073851019639c" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.5-p52" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-p52.tar.bz2#17e4bde8e6fc93866774e66c556fe581104f5cdf162a07430a9e976e46915500" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.bz2#0fc6ad0b31d8ec3997db2a56a2ac1c235283a3607abb876300fc711b3f8e3dd7" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p110" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p110.tar.bz2#88a8a63dae9219fa38faa6c308dbfc9ac9e9c15f6d8f6848c452b9c920183169" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p111" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.bz2#85c694678313818a5083bcfd66ae389fc053b506d93b5ad46f3764981c120fbb" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p114" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.bz2#4ac0d0271324c54525210f775e5fcc9a37e3d8a10b96d68cdfeeb361c6f64a63" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p230" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p230.tar.bz2#603708301fc3fd7ef1c47bb4a24d7799c26e28db08d69cda240adcbdbff514d7" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p286" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p286.tar.bz2#d800552900e1157bbeaae39a4c253683b2444820a5d1ba0a207a13cc469168b7" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p287" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.bz2#ac15a1cb78c50ec9cc7e831616a143586bdd566bc865c6b769a0c47b3b3936ce" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p36" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p36.tar.bz2#a9b9715235580e1ba9248aeef5f9a8d329824b04d1b0af2a30ab74d3123c801c" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p368" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p368.tar.bz2#1bd398a125040261f8e9e74289277c82063aae174ada9f300d2bea0a42ccdcc1" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p369" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p369.tar.bz2#fb6974ab8a0de52511e846eacf113432b5227a867e3c9741d65775f162e13715" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p383" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p383.tar.bz2#c39dd7e211cb7245d08d9a7a3d4fe0c7b9f796a4bed9f92fed500ad58bb53d1a" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p388" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p388.tar.bz2#8536b18413f2475698fa275b356daff6ceab5232bc503496f4afbee64e8b4abc" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p398" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p398.tar.bz2#9890c5eb899f19d5bca7b9b04bba597d14ec6627e992ee376143147c19e3990d" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.6-p399" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p399.tar.bz2#20ca08aeefa21ca2581a9791f8f9ace3addc92bd978cf36f2f95c109085a50a7" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,2 +1,3 @@
|
|||
install_package "ruby-1.8.6-p420" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p420.tar.bz2#5ed3e6b9ebcb51baf59b8263788ec9ec8a65fbb82286d952dd3eb66e22d9a09f" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
use_gcc42_on_lion
|
||||
install_package "ruby-1.8.6-p420" "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p420.tar.gz"
|
||||
install_package "rubygems-1.3.7" "http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz" ruby
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.bz2#65f2a862ba5e88bac7a78cff15bcb88d7534e741b51a1ffb79a0136c7041359a" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p160" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.bz2#e524a086212d2142c03eb6b82cd602adcac9dcf8bf60049e89aa4ca69864984d" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p17" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p17.tar.bz2#f205c586764ffbd944b4ec6439bd08286e3e7b27bc9448e74949e76c63f6016b" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p173" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p173.tar.bz2#7cec49bc4afb82188ca4bdb5a0400ec7ede6bf0937af9dd6acaca4e54b8aa760" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p174" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.bz2#203978b6db1cc77a79ff03d141d162f6f17d86c3574f76de9eae9d0c8cb920bc" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p22" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.bz2#477968408e27d067ef56f552d7fc2a9e6f5cae2d1a72f17cd838ebf5e0d30149" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p248" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p248.tar.bz2#3d238c4cf0988797d33169ab05829f1a483194e7cacae4232f3a0e2cc01b6bfc" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +1,3 @@
|
|||
install_package "ruby-1.8.7-p249" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.bz2#8b89448fc79df6862660e9f77e884f06c76da28f078d8edd2f17567a615f3af5" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
use_gcc42_on_lion
|
||||
install_package "ruby-1.8.7-p249" "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz"
|
||||
install_package "rubygems-1.6.2" "http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz" ruby
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p299" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.bz2#3d8a1e4204f1fb69c9e9ffd637c7f7661a062fc2246c559f25fda5312cfd65d8" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p301" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p301.tar.bz2#6ddd929722d177240c52e9fafa637dae4d7f8a30825faabb33b1c5391b004029" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p302" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.bz2#3537cc81cc2378a2bc319cd16c4237ddee14a2839cfd1515b27dce108d061a68" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p330" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.tar.bz2#486c73b023b564c07e062e2e61114e81de970913b04fac6798d0fbe8b7723790" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +1,3 @@
|
|||
install_package "ruby-1.8.7-p334" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.bz2#3e7f1a15fb2c205ac9eb0da804983b83bf8c0ffeb2f146d1eb9e0579ea2507da" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
use_gcc42_on_lion
|
||||
install_package "ruby-1.8.7-p334" "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p334.tar.gz"
|
||||
install_package "rubygems-1.6.2" "http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz" ruby
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
install_package "ruby-1.8.7-p352" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.bz2#9df4e9108387f7d24a6ab8950984d0c0f8cdbc1dad63194e744f1a176d1c5576" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
use_gcc42_on_lion
|
||||
install_package "ruby-1.8.7-p352" "http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p352.tar.gz"
|
||||
install_package "rubygems-1.6.2" "http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz" ruby
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p357" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p357.tar.bz2#5c64b63a597b4cb545887364e1fd1e0601a7aeb545e576e74a6d8e88a2765a37" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p358" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p358.tar.bz2#309ccd427e47ef41a70f96462bd3c2ef2e7911ce1b22432ab502f5bc6e949c1b" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p370" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p370.tar.bz2#6359b03a1c8ba16630a96fcb5f972c7af15bd33b752e324cd87964224ab1fe31" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p371" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p371.tar.bz2#2dd0e463cd82039beb75c9b9f4ee20bef5f5b5ff68527008e5aee61cfb3b55e1" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p373" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p373.tar.bz2#720029cb528a2d5a132bbff7f47413f0b731ecc558f68f613d319fa9442afcb5" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p374" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.bz2#b4e34703137f7bfb8761c4ea474f7438d6ccf440b3d35f39cc5e4d4e239c07e3" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p71" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p71.tar.bz2#ce74802744b9dfcd77bdd365a1543d050a56d9b366ed5e7a9bf2df25028fd411" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-p72" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.bz2#a8f8a28e286dd76747d8e97ea5cfe7a315eb896906ab8c8606d687d9f6f6146e" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-preview1" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-preview1.tar.bz2#e432ab1ab9b4570c0b7fe5c0c2730de0fda4c49a47811ea3a9170a311cf110b9" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-preview2" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-preview2.tar.bz2#d02c1d22bff5c8365aa4adb25387950c0b58206a18cb18afcc4f2bd9401997e5" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-preview3" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-preview3.tar.bz2#a73649f8c595cae34dc74e0d6c8b74998cc708d26d7d7300b16254d876dc7fe0" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
install_package "ruby-1.8.7-preview4" "https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-preview4.tar.bz2#9f81d584a5b1bda92d933c48a336edd0ce6818eaa3a4e95cab59a73c85a7b285" warn_eol auto_tcltk standard
|
||||
install_package "rubygems-1.6.2" "https://rubygems.org/rubygems/rubygems-1.6.2.tgz#cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.0-0" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2#7995fdb2879cbb67b1ae4b5bbdf5460f70221598086f4e48e15fa5f48f2866e3" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.0-1" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-1.tar.bz2#88427424d6249c7544ddc53b31d871f1a6dce1dbded402cacc6306feb8d97f3b" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.0-2" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-2.tar.bz2#913d2bfd03e4285f61e3d343925ab8286ebfc5f7f4a7c861de7a160219cd1351" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.0-3" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-3.tar.bz2#d5ca832db445e3251113c4027f2528d17e32ed9508d2dd507c469e546ad180db" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.0-4" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-4.tar.bz2#09a91a60fba308a45ab8d3e691ec5ab279b36b646e75ad68d1d45679bdc4cbce" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.0-5" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-5.tar.bz2#6641148785a8bd3b352c2f990e5b20c1bd244f61275150139671b9b84610d996" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-p0" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2#de7d33aeabdba123404c21230142299ac1de88c944c9f3215b816e824dd33321" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-p129" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p129.tar.bz2#cb730f035aec0e3ac104d23d27a79aa9625fdeb115dae2295de65355f449ce27" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-p243" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.bz2#39c9850841c0dd5d368f96b854f97c19b21eb28a02200f8b4e151f608092e687" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-p376" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.bz2#79164e647e23bb7c705195e0075ce6020c30dd5ec4f8c8a12a100fe0eb0d6783" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-p378" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.bz2#649e623f77190990d990089a819bc4ee60e21816f682ec37cee98d43adb46e51" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
install_package "yaml-0.1.4" "http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz"
|
||||
install_package "ruby-1.9.1-p378" "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz"
|
||||
install_package "rubygems-1.3.5" "http://production.cf.rubygems.org/rubygems/rubygems-1.3.5.tgz" ruby
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-p429" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p429.tar.bz2#e0b9471d77354628a8041068f45734eb2d99f5b5df08fe5a76d785d989a47bfb" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-p430" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p430.tar.bz2#8d5cc11d819e476fb651db783f714cc4100922f47447f7acdce87ed769cf9d97" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-p431" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p431.tar.bz2#81a46c947cd0c3ab99bc727e1465dab334432df7fbbfd0acfc08cf7111eb0c6c" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-preview1" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview1.tar.bz2#dc39000537d7c7528ef26af8e1c3a6215b30b6c579c615eaec7013513410456a" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-preview2" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-preview2.tar.bz2#2c419dc325c6a75fb7b961496c0dd54f2729e6e01730589c4fb06e34ddd7a7cc" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-rc1" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-rc1.tar.bz2#35acfb6b8d9dd9159ef308ac763c629092cda2e8c9f41254e72a7b9fa454c27f" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install_package "yaml-0.1.6" "http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz#7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749" --if needs_yaml
|
||||
install_package "ruby-1.9.1-rc2" "https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-rc2.tar.bz2#acb5061123fa7170597e713ef773e21ddd9dd167f27aaae2c5440b5ec12df2ec" warn_eol standard
|
||||
install_package "rubygems-1.3.7" "https://rubygems.org/rubygems/rubygems-1.3.7.tgz#388b90ae6273f655507b10c8ba6bee9ea72e7d49c3e610025531cb8c3ba67c9d" ruby
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue