1

サーバーにいくつかのプログラムをyumインストールする一連のコマンドを実行するLinuxターミナルでjarファイルを実行できるようにしたいと考えています。目標は、テストのために非常に多くのインストールを行うため、インストール プロセスの一部を自動化することです。次のコードがあります。

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);
    }
}

実行しても何も起こりません。「yum install -y rpm-build」を実行するだけでは問題なく動作しますが、jar を実行して実行するとうまくいきません。私は何を間違っていますか?

以下のコード/コメントからのエラー ストリーム:

    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

JtheRocker のおかげで、ようやく機能するようになりました。他の誰かが同じ問題を抱えている場合の作業コードを次に示します。

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");
        } 
    }
}
4

1 に答える 1

2

これを試して :

public class test 
{
    public static void main(String[] args)
    {
        Runtime rt = Runtime.getRuntime();
        String cmd[] = new String[] {"yum",  "-y", "install", "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");
        } 
    }
}
于 2013-07-08T19:03:09.403 に答える