title: How can I do a yum install in a linux command line from a jar file?
body: <p>I want to be able to execute a jar file in a linux terminal that will run a series of commands to yum install several programs on a server. The goal is to automate some of the install processes because we do so many installs for testing. I have the following code: </p>
  
  <pre><code>public class test 
  {
      public static void main(String[] args)
      {
          Runtime rt = Runtime.getRuntime();
          String cmd;
  
          cmd = "/bin/sh -c yum install -y rpm-build";
          rt.exec(cmd);
      }
  }
  </code></pre>
  
  <p>When I run it, nothing happens. If I just run "yum install -y rpm-build" it works fine, but not if I run the jar to do it. What am I doing wrong?</p>
  
  <p>Error stream from code/comment below:</p>
  
  <pre><code>    root@netBoot labStats]# java test 
  Loaded plugins: fastestmirror
  Usage: yum [options] COMMAND
  
  List of Commands:
  
  check          Check for problems in the rpmdb
  check-update   Check for available package updates
  clean          Remove cached data
  deplist        List a package's dependencies
  distribution-synchronization Synchronize installed packages to the latest available versions
  downgrade      downgrade a package
  erase          Remove a package or packages from your system
  groupinfo      Display details about a package group
  groupinstall   Install the packages in a group on your system
  grouplist      List available package groups
  groupremove    Remove the packages in a group from your system
  help           Display a helpful usage message
  history        Display, or use, the transaction history
  info           Display details about a package or group of packages
  install        Install a package or packages on your system
  list           List a package or groups of packages
  load-transaction load a saved transaction from filename
  makecache      Generate the metadata cache
  provides       Find what package provides the given value
  reinstall      reinstall a package
  repolist       Display the configured software repositories
  resolvedep     Determine which package provides the given dependency
  search         Search package details for the given string
  shell          Run an interactive yum shell
  update         Update a package or packages on your system
  upgrade        Update packages taking obsoletes into account
  version        Display a version for the machine and/or available repos.
  
  
  Options:
    -h, --help            show this help message and exit
    -t, --tolerant        be tolerant of errors
    -C, --cacheonly       run entirely from system cache, don't update cache
    -c [config file], --config=[config file]
                          config file location
    -R [minutes], --randomwait=[minutes]
                          maximum command wait time
    -d [debug level], --debuglevel=[debug level]
                          debugging output level
    --showduplicates      show duplicates, in repos, in list/search commands
    -e [error level], --errorlevel=[error level]
                          error output level
    --rpmverbosity=[debug level name]
                          debugging output level for rpm
    -q, --quiet           quiet operation
    -v, --verbose         verbose operation
    -y, --assumeyes       answer yes for all questions
    --version             show Yum version and exit
    --installroot=[path]  set install root
    --enablerepo=[repo]   enable one or more repositories (wildcards allowed)
    --disablerepo=[repo]  disable one or more repositories (wildcards allowed)
    -x [package], --exclude=[package]
                          exclude package(s) by name or glob
    --disableexcludes=[repo]
                          disable exclude from main, for a repo or for
                          everything
    --obsoletes           enable obsoletes processing during updates
    --noplugins           disable Yum plugins
    --nogpgcheck          disable gpg signature checking
    --disableplugin=[plugin]
                          disable plugins by name
    --enableplugin=[plugin]
                          enable plugins by name
    --skip-broken         skip packages with depsolving problems
    --color=COLOR         control whether color is used
    --releasever=RELEASEVER
                          set value of $releasever in yum config and repo files
    --setopt=SETOPTS      set arbitrary config and repo options
  
    Plugin Options:
  ------ Std Err -------
  Failed
  </code></pre>
  
  <p>Finally got it working thanks to JtheRocker. Here is the working code in case someone else has the same issue.</p>
  
  <pre><code>import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  
  
  
  public class test 
  {
      public static void main(String[] args) throws IOException, InterruptedException
      {
          Runtime rt = Runtime.getRuntime();
          String cmd[] = new String[] {"yum", "install", "-y", "rpm-build"};
          Process ps = rt.exec(cmd);
  
          BufferedReader readerStd = new BufferedReader(new InputStreamReader(ps.getInputStream()));  
  
          BufferedReader readerErr = new BufferedReader(new InputStreamReader(ps.getInputStream()));  
  
          String line = null;  
          while ((line = readerStd.readLine()) != null) {  
              System.out.println(line);  
          }  
          System.out.println("------ Std Err -------");
          while ((line = readerErr.readLine()) != null) {  
              System.out.println(line);  
          }
  
          if (ps.waitFor()==0) {
              System.out.println("success");
          } else {
              System.out.println("Failed");
          } 
      }
  }
  </code></pre>