Class: LinuxInstaller
- Inherits:
-
Object
- Object
- LinuxInstaller
- Defined in:
- lib/rad/linux_installer.rb
Class Method Summary collapse
- .check_or_install_arduino ⇒ Object
- .check_or_install_package(package_name) ⇒ Object
- .check_or_nag_package(package_name, custom_msg = nil) ⇒ Object
- .check_or_remove_package(package_name) ⇒ Object
- .check_or_warn_for_usb_driver ⇒ Object
-
.install! ⇒ Object
this is the thing we actually run to make something happen.
Class Method Details
.check_or_install_arduino ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/rad/linux_installer.rb', line 93 def self.check_or_install_arduino if File.exist?("/usr/local/arduino-0015") puts "arduino software previously installed at /usr/local/arduino-0015 !" else puts "installing arduino software..." %x{cd /usr/local/; wget http://arduino.googlecode.com/files/arduino-0015-linux.tgz} %x{tar -C /usr/local -xzf /usr/local/arduino-0015-linux.tgz} %x{ln -s /usr/local/arduino-0015/arduino ~/Desktop/arduino} # gotta patch it so it can run from command line or anywhere arduino_file = File.open("/usr/local/arduino-0015/arduino") {|f| f.read} new_doc = arduino_file.split("\n") new_doc[1] = "cd /usr/local/arduino-0015" File.open("/usr/local/arduino-0015/arduino", "w") {|f| f.puts new_doc } %x{mkdir -p /usr/local/arduino-0015/hardware/tools/avr/bin} # there is a difference from what the makefile expects to where it is %x{ln -s /usr/bin/avr-gcc /usr/local/arduino-0015/hardware/tools/avr/bin/avr-gcc} %x{ln -s /usr/bin/avr-g++ /usr/local/arduino-0015/hardware/tools/avr/bin/avr-g++} %x{ln -s /usr/bin/avr-ar /usr/local/arduino-0015/hardware/tools/avr/bin/avr-ar} %x{ln -s /usr/bin/avr-objcopy /usr/local/arduino-0015/hardware/tools/avr/bin/avr-objcopy} %x{ln -s /usr/local/arduino-0015/hardware/tools/avrdude /usr/local/arduino-0015/hardware/tools/avr/bin/avrdude} %x{ln -s /usr/local/arduino-0015/hardware/tools/avrdude.conf /usr/local/arduino-0015/hardware/tools/avr/etc/avrdude.conf} puts puts "************************************************************************" puts "** please add /usr/local/arduino-0015 to your path! **" puts "** you will also need to run sudo update-alternatives --config java **" puts "** to choose java-1.50-sun as the default java **" puts "************************************************************************" puts end end |
.check_or_install_package(package_name) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/rad/linux_installer.rb', line 41 def self.check_or_install_package(package_name) package = %x{dpkg --get-selections | grep #{package_name}} if package.include?("\tinstall") puts "#{package_name} installed!" else puts "installing #{package_name}..." %x{apt-get install -y #{package_name}} end end |
.check_or_nag_package(package_name, custom_msg = nil) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/rad/linux_installer.rb', line 51 def self.check_or_nag_package(package_name, custom_msg = nil) package = %x{dpkg --get-selections | grep #{package_name}} if package.include?("\tinstall") puts "#{package_name} installed!" else puts "you will need to manually install #{package_name}! use the command below." if custom_msg puts custom_msg else puts "sudo apt-get install #{package_name}" end exit end end |
.check_or_remove_package(package_name) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/rad/linux_installer.rb', line 66 def self.check_or_remove_package(package_name) package = %x{dpkg --get-selections | grep #{package_name}} #an easier way to check for installed packages? if package.include?("\tinstall") puts "removing #{package_name}..." %x{apt-get remove -y #{package_name}} else puts "#{package_name} previously uninstalled!" end end |
.check_or_warn_for_usb_driver ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/rad/linux_installer.rb', line 78 def self.check_or_warn_for_usb_driver # check if usb device recognized by system puts "Please plug in your arduino to your usb port... [hit enter to continue]" STDIN.gets # we patiently wait usb = %x{dmesg | tail | grep "FTDI USB Serial" | grep -c "now attached"} if usb.to_i == 0 # maybe we can be nice here and offer to download and install the driver package puts "the system is not recognizing your usb-serial driver, please re-install" exit end end |
.install! ⇒ Object
this is the thing we actually run to make something happen
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/rad/linux_installer.rb', line 4 def self.install! puts "Welcome to the RAD Linux Installer!" puts "-----------------------------------" puts "Let's begin." puts check_or_warn_for_usb_driver # of course we need rubygems # maybe just rely on the user installing rubygems, because the ubuntu one sux #check_or_install_package("rubygems") #%x{gem update --system} # we need java to make this ship float check_or_nag_package("sun-java5-jre") # remove a package that interferes with the arduino usb/serial driver check_or_remove_package("brltty") # install pre-requisites check_or_install_package("binutils-avr") check_or_install_package("gcc-avr") check_or_install_package("avr-libc") check_or_install_package("unzip") check_or_install_package("wget") # remove a probably out of date avrdude check_or_remove_package("avrdude") # install pre-requisites for avrdude if we wanted to build from source # nah, it comes with the arduino binary #check_or_install_package("gcc") #check_or_install_package("bison") #check_or_install_package("flex") check_or_install_arduino end |