ruby-build เป็นเครื่องมือบรรทัดคำสั่งที่ช่วยลดความยุ่งยากในการติดตั้ง Ruby เวอร์ชันใด ๆ จากแหล่งที่มาบนระบบที่คล้าย Unix
พร้อมใช้งานเป็นปลั๊กอินสำหรับ rbenv เป็นคำสั่ง rbenv install
หรือเป็นโปรแกรมสแตนด์อโลนเป็นคำสั่ง ruby-build
brew install ruby-build
อัปเกรดด้วย:
brew upgrade ruby-build
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
อัปเกรดด้วย:
git -C " $( rbenv root ) " /plugins/ruby-build pull
ขั้นแรก ดาวน์โหลด tarball จากhttps://github.com/rbenv/ruby-build/releases/latest แล้ว:
tar -xzf ruby-build- * .tar.gz
PREFIX=/usr/local ./ruby-build- * /install.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.2.2 ~ /.rubies/ruby-3.2.2 # installs Ruby 3.2.2
$ ruby-build -d ruby-3.2.2 ~ /.rubies # alternate form for the previous example
# As an rbenv plugin
$ rbenv install 3.2.2 # installs Ruby 3.2.2 to ~/.rbenv/versions/3.2.2
คำเตือน
ruby-build ส่วนใหญ่ไม่ได้ตรวจสอบว่ามีการพึ่งพาระบบก่อนที่จะดาวน์โหลดและพยายามคอมไพล์ Ruby จากแหล่งที่มา โปรดตรวจสอบให้แน่ใจว่าไลบรารีที่จำเป็นทั้งหมด เช่น เครื่องมือสร้างและส่วนหัวการพัฒนามีอยู่ในระบบของคุณอยู่แล้ว
โดยพื้นฐานแล้ว สิ่งที่ ruby-build ทำเมื่อติดตั้งเวอร์ชัน Ruby คือ:
./configure --prefix=/path/to/destination
ในซอร์สโค้ดmake install
เพื่อคอมไพล์ Ruby;Ruby-build ทำหน้าที่มากกว่าที่กล่าวมาข้างต้นเล็กน้อย ทั้งนี้ขึ้นอยู่กับบริบท ตัวอย่างเช่น จะพยายามเชื่อมโยง Ruby กับเวอร์ชัน OpenSSL ที่เหมาะสม แม้ว่านั่นจะหมายถึงการดาวน์โหลดและคอมไพล์ OpenSSL ก็ตาม มันจะค้นพบและเชื่อมโยงไปยังอินสแตนซ์ที่ติดตั้ง Homebrew ของไลบรารีบางตัว เช่น libyaml และ readline เป็นต้น
หากต้องการติดตั้งเวอร์ชันของ Ruby ที่ Ruby-build ไม่รู้จัก คุณสามารถระบุพาธไปยังไฟล์คำจำกัดความของบิลด์ที่กำหนดเองแทนหมายเลขเวอร์ชัน Ruby ได้
ตรวจสอบข้อกำหนดการสร้างเริ่มต้นเป็นตัวอย่างเกี่ยวกับวิธีการเขียนไฟล์ข้อกำหนด
กระบวนการสร้างอาจถูกกำหนดค่าผ่านตัวแปรสภาพแวดล้อมต่อไปนี้:
ตัวแปร | การทำงาน |
---|---|
TMPDIR | ตำแหน่งที่จัดเก็บไฟล์ชั่วคราว |
RUBY_BUILD_BUILD_PATH | แหล่งที่มาถูกดาวน์โหลดและสร้าง (ค่าเริ่มต้น: ไดเร็กทอรีย่อยที่ประทับเวลาของ TMPDIR ) |
RUBY_BUILD_CACHE_PATH | ตำแหน่งที่จะแคชไฟล์แพ็คเกจที่ดาวน์โหลด (ค่าเริ่มต้น: ~/.rbenv/cache หากเรียกใช้เป็นปลั๊กอิน rbenv) |
RUBY_BUILD_HTTP_CLIENT | หนึ่งใน aria2c , curl หรือ wget เพื่อใช้ในการดาวน์โหลด (ค่าเริ่มต้น: รายการแรกที่พบใน PATH) |
RUBY_BUILD_ARIA2_OPTS | ตัวเลือกเพิ่มเติมเพื่อส่งผ่านไปยัง aria2c เพื่อดาวน์โหลด |
RUBY_BUILD_CURL_OPTS | ตัวเลือกเพิ่มเติมเพื่อส่งต่อไปยัง curl เพื่อดาวน์โหลด |
RUBY_BUILD_WGET_OPTS | ตัวเลือกเพิ่มเติมที่จะส่งผ่านไปยัง wget สำหรับการดาวน์โหลด |
RUBY_BUILD_MIRROR_URL | รูท URL มิเรอร์ที่กำหนดเอง |
RUBY_BUILD_MIRROR_PACKAGE_URL | URL มิเรอร์ที่สมบูรณ์ที่กำหนดเอง (เช่น http://mirror.example.com/package-1.0.0.tar.gz) |
RUBY_BUILD_SKIP_MIRROR | ข้ามมิเรอร์การดาวน์โหลดและดึงไฟล์แพ็คเกจทั้งหมดจาก URL ดั้งเดิม |
RUBY_BUILD_TARBALL_OVERRIDE | แทนที่ URL เพื่อดึงข้อมูล Ruby tarball ตามด้วย #checksum หรือไม่ก็ได้ |
RUBY_BUILD_DEFINITIONS | รายการพาธที่คั่นด้วยโคลอนเพื่อค้นหาไฟล์คำจำกัดความของบิลด์ |
RUBY_BUILD_ROOT | คำนำหน้าพาธเพื่อค้นหาไฟล์คำจำกัดความของบิลด์ เลิกใช้แล้ว: ใช้ RUBY_BUILD_DEFINITIONS |
RUBY_BUILD_VENDOR_OPENSSL | สร้างและผู้จำหน่าย openssl แม้ว่าระบบ openssl จะเข้ากันได้ก็ตาม |
CC | เส้นทางไปยังคอมไพเลอร์ C |
RUBY_CFLAGS | ตัวเลือก CFLAGS เพิ่มเติม ( เช่น เพื่อแทนที่ -O3 ) |
CONFIGURE_OPTS | ตัวเลือก . ./configure เพิ่มเติม |
MAKE | คำสั่ง make แบบกำหนดเอง ( เช่น gmake ) |
MAKE_OPTS / MAKEOPTS | ตัวเลือก make เพิ่มเติม |
MAKE_INSTALL_OPTS | make install เพิ่มเติม |
RUBY_CONFIGURE_OPTS | ตัวเลือก ./configure เพิ่มเติม (ใช้กับแหล่ง Ruby เท่านั้น) |
RUBY_MAKE_OPTS | ตัวเลือก make เพิ่มเติม (ใช้กับแหล่ง Ruby เท่านั้น) |
RUBY_MAKE_INSTALL_OPTS | make install เพิ่มเติม (ใช้กับแหล่ง Ruby เท่านั้น) |
NO_COLOR | ปิดใช้งานสี ANSI ในเอาต์พุต ค่าเริ่มต้นคือการใช้สีสำหรับเอาต์พุตที่เชื่อมต่อกับเทอร์มินัล |
CLICOLOR_FORCE | ใช้สี ANSI ในเอาต์พุตแม้ว่าจะไม่ได้เชื่อมต่อกับเทอร์มินัลก็ตาม |
ทั้งคำสั่ง rbenv install
และ ruby-build
รองรับแฟล็ก -p/--patch
เพื่อใช้แพตช์กับซอร์สโค้ด Ruby ก่อนที่จะสร้าง แพตช์ถูกอ่านจากอินพุตมาตรฐาน:
# 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
ไฟล์คำจำกัดความ Ruby ทั้งหมดที่มาพร้อมกับ Ruby-build จะมีการตรวจสอบแพ็คเกจ ซึ่งหมายความว่าแพ็คเกจที่ดาวน์โหลดจากภายนอกทั้งหมดจะถูกตรวจสอบความสมบูรณ์โดยอัตโนมัติหลังจากการดึงข้อมูล
ดูส่วนถัดไปสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการเขียนเช็คซัม
เพื่อเร่งความเร็วการดาวน์โหลด Ruby-build จะดึงไฟล์แพ็คเกจจากมิเรอร์ที่โฮสต์บน Amazon CloudFront เพื่อให้ได้รับประโยชน์จากสิ่งนี้ แพ็คเกจจะต้องระบุผลรวมตรวจสอบ:
# example:
install_package " ruby-2.6.5 " " https://ruby-lang.org/ruby-2.6.5.tgz# "
ruby-build จะพยายามดึงแพ็คเกจนี้จาก $RUBY_BUILD_MIRROR_URL/
ก่อน (หมายเหตุ: นี่คือ URL ที่สมบูรณ์) โดยที่
คือเช็คซัมสำหรับไฟล์ ระบบจะกลับไปดาวน์โหลดแพ็คเกจจากตำแหน่งเดิมหาก:
RUBY_BUILD_SKIP_MIRROR
ถูกเปิดใช้งาน คุณสามารถระบุมิเรอร์ที่กำหนดเองได้โดยการตั้งค่า RUBY_BUILD_MIRROR_URL
หากไซต์มิเรอร์ไม่สอดคล้องกับรูปแบบ URL ข้างต้น คุณสามารถระบุ URL ที่สมบูรณ์ได้โดยการตั้งค่า RUBY_BUILD_MIRROR_PACKAGE_URL
มีพฤติกรรมเหมือนกับ RUBY_BUILD_MIRROR_URL
ยกเว้นว่าเป็น URL ที่สมบูรณ์
มิเรอร์การดาวน์โหลด Ruby-build เริ่มต้นได้รับการสนับสนุนโดย Basecamp
ทั้งการติดตั้ง ruby-build
และ rbenv install
ยอมรับแฟล็ก -k
หรือ --keep
ซึ่งบอกให้ ruby-build เก็บซอร์สที่ดาวน์โหลดไว้หลังการติดตั้ง สิ่งนี้มีประโยชน์หากคุณต้องการใช้ gdb
และ memprof
กับ Ruby
ซอร์สโค้ดจะถูกเก็บไว้ในแผนผังไดเร็กทอรีคู่ขนาน ~/.rbenv/sources
เมื่อใช้ --keep
กับคำสั่ง rbenv install
คุณควรระบุตำแหน่งของซอร์สโค้ดด้วยตัวแปรสภาพแวดล้อม RUBY_BUILD_BUILD_PATH
เมื่อใช้ --keep
กับ ruby-build
โปรดดูวิกิ Ruby-build สำหรับวิธีแก้ไขปัญหาทั่วไป
หากคุณไม่พบคำตอบในวิกิ ให้เปิดปัญหาในตัวติดตามปัญหา อย่าลืมรวมบันทึกบิลด์แบบเต็มสำหรับความล้มเหลวของบิลด์