summaryrefslogtreecommitdiff
path: root/javainstaller2
diff options
context:
space:
mode:
Diffstat (limited to 'javainstaller2')
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java18
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java196
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java21
3 files changed, 174 insertions, 61 deletions
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java
index aefd78e480b7..66598a7ca7cb 100755
--- a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallData.java
@@ -75,6 +75,8 @@ public class InstallData
static private boolean databaseQueried = false;
static private boolean useRtl = false;
static private boolean installedProductMinorSet = false;
+ static private boolean isDebianSystem = false;
+ static private boolean debianInvestigated = false;
static private String installType; /* custom or typical installation */
static private String osType; /* Linux, SunOS, ... */
static private String installDir = null;
@@ -649,6 +651,22 @@ public class InstallData
installedProductMinorSet = value;
}
+ public boolean debianInvestigated() {
+ return debianInvestigated;
+ }
+
+ public void setDebianInvestigated(boolean value) {
+ debianInvestigated = value;
+ }
+
+ public boolean isDebianSystem() {
+ return isDebianSystem;
+ }
+
+ public void setIsDebianSystem(boolean value) {
+ isDebianSystem = value;
+ }
+
public boolean databaseQueried() {
return databaseQueried;
}
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java
index fa1ce919245c..74f436f8c375 100755
--- a/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/Installer/LinuxInstaller.java
@@ -190,6 +190,22 @@ public class LinuxInstaller extends Installer {
if ( sofficeLink.exists() ) { useForce = true; }
}
+ // On Debian based systems, rpms can be installed with the switch --force-debian, if a rpm
+ // is installed.
+
+ String forceDebianString = "";
+ String nodepsString = "";
+
+ if ( ! data.debianInvestigated() ) {
+ helper.investigateDebian(data);
+ data.setDebianInvestigated(true);
+ }
+
+ if ( data.isDebianSystem() ) {
+ forceDebianString = "--force-debian";
+ nodepsString = "--nodeps";
+ }
+
String rpmCommand = "";
String[] rpmCommandArray;
String databasePath = null;
@@ -212,107 +228,123 @@ public class LinuxInstaller extends Installer {
if (useForce) {
if (useLocalDatabase) {
if ( relocations != null ) {
- rpmCommand = "rpm --upgrade --ignoresize --force -vh " +
+ rpmCommand = "rpm --upgrade --ignoresize --force " + forceDebianString + " " + nodepsString + " -vh " +
"--relocate " + relocations + " " + databaseString +
" " + databasePath + " " + packageName;
- rpmCommandArray = new String[10];
+ rpmCommandArray = new String[12];
rpmCommandArray[0] = "rpm";
rpmCommandArray[1] = "--upgrade";
rpmCommandArray[2] = "--ignoresize";
rpmCommandArray[3] = "--force";
- rpmCommandArray[4] = "-vh";
- rpmCommandArray[5] = "--relocate";
- rpmCommandArray[6] = relocations;
- rpmCommandArray[7] = databaseString;
- rpmCommandArray[8] = databasePath;
- rpmCommandArray[9] = packageName;
+ rpmCommandArray[4] = forceDebianString;
+ rpmCommandArray[5] = nodepsString;
+ rpmCommandArray[6] = "-vh";
+ rpmCommandArray[7] = "--relocate";
+ rpmCommandArray[8] = relocations;
+ rpmCommandArray[9] = databaseString;
+ rpmCommandArray[10] = databasePath;
+ rpmCommandArray[11] = packageName;
} else {
- rpmCommand = "rpm --upgrade --ignoresize --force -vh " +
+ rpmCommand = "rpm --upgrade --ignoresize --force " + forceDebianString + " " + nodepsString + " -vh " +
databaseString + " " + databasePath + " " + packageName;
- rpmCommandArray = new String[8];
+ rpmCommandArray = new String[10];
rpmCommandArray[0] = "rpm";
rpmCommandArray[1] = "--upgrade";
rpmCommandArray[2] = "--ignoresize";
rpmCommandArray[3] = "--force";
- rpmCommandArray[4] = "-vh";
- rpmCommandArray[5] = databaseString;
- rpmCommandArray[6] = databasePath;
- rpmCommandArray[7] = packageName;
+ rpmCommandArray[4] = forceDebianString;
+ rpmCommandArray[5] = nodepsString;
+ rpmCommandArray[6] = "-vh";
+ rpmCommandArray[7] = databaseString;
+ rpmCommandArray[8] = databasePath;
+ rpmCommandArray[9] = packageName;
}
} else {
if ( relocations != null )
{
- rpmCommand = "rpm --upgrade --ignoresize --force -vh " +
+ rpmCommand = "rpm --upgrade --ignoresize --force " + forceDebianString + " " + nodepsString + " -vh " +
"--relocate " + relocations + " " + packageName;
- rpmCommandArray = new String[8];
+ rpmCommandArray = new String[10];
rpmCommandArray[0] = "rpm";
rpmCommandArray[1] = "--upgrade";
rpmCommandArray[2] = "--ignoresize";
rpmCommandArray[3] = "--force";
- rpmCommandArray[4] = "-vh";
- rpmCommandArray[5] = "--relocate";
- rpmCommandArray[6] = relocations;
- rpmCommandArray[7] = packageName;
+ rpmCommandArray[4] = forceDebianString;
+ rpmCommandArray[5] = nodepsString;
+ rpmCommandArray[6] = "-vh";
+ rpmCommandArray[7] = "--relocate";
+ rpmCommandArray[8] = relocations;
+ rpmCommandArray[9] = packageName;
} else {
- rpmCommand = "rpm --upgrade --ignoresize --force -vh " + packageName;
- rpmCommandArray = new String[6];
+ rpmCommand = "rpm --upgrade --ignoresize --force " + forceDebianString + " " + nodepsString + " -vh " + packageName;
+ rpmCommandArray = new String[8];
rpmCommandArray[0] = "rpm";
rpmCommandArray[1] = "--upgrade";
rpmCommandArray[2] = "--ignoresize";
rpmCommandArray[3] = "--force";
- rpmCommandArray[4] = "-vh";
- rpmCommandArray[5] = packageName;
+ rpmCommandArray[4] = forceDebianString;
+ rpmCommandArray[5] = nodepsString;
+ rpmCommandArray[6] = "-vh";
+ rpmCommandArray[7] = packageName;
}
}
} else {
if (useLocalDatabase) {
if ( relocations != null ) {
- rpmCommand = "rpm --upgrade --ignoresize -vh " +
+ rpmCommand = "rpm --upgrade --ignoresize " + forceDebianString + " " + nodepsString + " -vh " +
"--relocate " + relocations + " " + databaseString +
" " + databasePath + " " + packageName;
- rpmCommandArray = new String[9];
+ rpmCommandArray = new String[11];
rpmCommandArray[0] = "rpm";
rpmCommandArray[1] = "--upgrade";
rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "-vh";
- rpmCommandArray[4] = "--relocate";
- rpmCommandArray[5] = relocations;
- rpmCommandArray[6] = databaseString;
- rpmCommandArray[7] = databasePath;
- rpmCommandArray[8] = packageName;
+ rpmCommandArray[3] = forceDebianString;
+ rpmCommandArray[4] = nodepsString;
+ rpmCommandArray[5] = "-vh";
+ rpmCommandArray[6] = "--relocate";
+ rpmCommandArray[7] = relocations;
+ rpmCommandArray[8] = databaseString;
+ rpmCommandArray[9] = databasePath;
+ rpmCommandArray[10] = packageName;
} else {
- rpmCommand = "rpm --upgrade --ignoresize -vh " +
+ rpmCommand = "rpm --upgrade --ignoresize " + forceDebianString + " " + nodepsString + " -vh " +
databaseString + " " + databasePath + " " + packageName;
- rpmCommandArray = new String[7];
+ rpmCommandArray = new String[9];
rpmCommandArray[0] = "rpm";
rpmCommandArray[1] = "--upgrade";
rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "-vh";
- rpmCommandArray[4] = databaseString;
- rpmCommandArray[5] = databasePath;
- rpmCommandArray[6] = packageName;
+ rpmCommandArray[3] = forceDebianString;
+ rpmCommandArray[4] = nodepsString;
+ rpmCommandArray[5] = "-vh";
+ rpmCommandArray[6] = databaseString;
+ rpmCommandArray[7] = databasePath;
+ rpmCommandArray[8] = packageName;
}
} else {
if ( relocations != null )
{
- rpmCommand = "rpm --upgrade --ignoresize -vh " +
+ rpmCommand = "rpm --upgrade --ignoresize " + forceDebianString + " " + nodepsString + " -vh " +
"--relocate " + relocations + " " + packageName;
- rpmCommandArray = new String[7];
+ rpmCommandArray = new String[9];
rpmCommandArray[0] = "rpm";
rpmCommandArray[1] = "--upgrade";
rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "-vh";
- rpmCommandArray[4] = "--relocate";
- rpmCommandArray[5] = relocations;
- rpmCommandArray[6] = packageName;
+ rpmCommandArray[3] = forceDebianString;
+ rpmCommandArray[4] = nodepsString;
+ rpmCommandArray[5] = "-vh";
+ rpmCommandArray[6] = "--relocate";
+ rpmCommandArray[7] = relocations;
+ rpmCommandArray[8] = packageName;
} else {
- rpmCommand = "rpm --upgrade --ignoresize -vh " + packageName;
- rpmCommandArray = new String[5];
+ rpmCommand = "rpm --upgrade --ignoresize " + forceDebianString + " " + nodepsString + " -vh " + packageName;
+ rpmCommandArray = new String[7];
rpmCommandArray[0] = "rpm";
rpmCommandArray[1] = "--upgrade";
rpmCommandArray[2] = "--ignoresize";
- rpmCommandArray[3] = "-vh";
- rpmCommandArray[4] = packageName;
+ rpmCommandArray[3] = forceDebianString;
+ rpmCommandArray[4] = nodepsString;
+ rpmCommandArray[5] = "-vh";
+ rpmCommandArray[6] = packageName;
}
}
}
@@ -383,20 +415,62 @@ public class LinuxInstaller extends Installer {
useLocalDatabase = true;
}
- if (useLocalDatabase) {
- rpmCommand = "rpm -ev" + " " + databaseString + " " + databasePath + " " + packageName;
- rpmCommandArray = new String[5];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "-ev";
- rpmCommandArray[2] = databaseString;
- rpmCommandArray[3] = databasePath;
- rpmCommandArray[4] = packageName;
+ // On Debian based systems, rpms can be installed with the switch --force-debian, if a rpm
+ // is installed.
+
+ String forceDebianString = "";
+ String nodepsString = "";
+
+ if ( ! data.debianInvestigated() ) {
+ helper.investigateDebian(data);
+ data.setDebianInvestigated(true);
+ }
+
+ if ( data.isDebianSystem() ) {
+ forceDebianString = "--force-debian";
+ nodepsString = "--nodeps";
+ }
+
+ // Code duplication for isDebianSystem is necessary, because there is no valid position
+ // for forceDebianString, if it is empty. This is no problem in installPackage.
+
+ if ( data.isDebianSystem() ) {
+
+ if (useLocalDatabase) {
+ rpmCommand = "rpm " + forceDebianString + " " + nodepsString + " -ev" + " " + databaseString + " " + databasePath + " " + packageName;
+ rpmCommandArray = new String[7];
+ rpmCommandArray[0] = "rpm";
+ rpmCommandArray[1] = forceDebianString;
+ rpmCommandArray[2] = nodepsString;
+ rpmCommandArray[3] = "-ev";
+ rpmCommandArray[4] = databaseString;
+ rpmCommandArray[5] = databasePath;
+ rpmCommandArray[6] = packageName;
+ } else {
+ rpmCommand = "rpm " + forceDebianString + " " + nodepsString + " -ev" + " " + packageName;
+ rpmCommandArray = new String[5];
+ rpmCommandArray[0] = "rpm";
+ rpmCommandArray[1] = forceDebianString;
+ rpmCommandArray[2] = nodepsString;
+ rpmCommandArray[3] = "-ev";
+ rpmCommandArray[4] = packageName;
+ }
} else {
- rpmCommand = "rpm -ev" + " " + packageName;
- rpmCommandArray = new String[3];
- rpmCommandArray[0] = "rpm";
- rpmCommandArray[1] = "-ev";
- rpmCommandArray[2] = packageName;
+ if (useLocalDatabase) {
+ rpmCommand = "rpm -ev" + " " + databaseString + " " + databasePath + " " + packageName;
+ rpmCommandArray = new String[5];
+ rpmCommandArray[0] = "rpm";
+ rpmCommandArray[1] = "-ev";
+ rpmCommandArray[2] = databaseString;
+ rpmCommandArray[3] = databasePath;
+ rpmCommandArray[4] = packageName;
+ } else {
+ rpmCommand = "rpm -ev" + " " + packageName;
+ rpmCommandArray = new String[3];
+ rpmCommandArray[0] = "rpm";
+ rpmCommandArray[1] = "-ev";
+ rpmCommandArray[2] = packageName;
+ }
}
Vector returnVector = new Vector();
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java
index 1640ae706a46..ebf915c6274a 100755
--- a/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/InstallerHelper/LinuxHelper.java
@@ -381,6 +381,27 @@ import java.util.Vector;public class LinuxHelper {
return databasePath;
}
+ public void investigateDebian(InstallData data) {
+
+ // String rpmQuery = "rpm --help;
+ String[] rpmQueryArray = new String[2];
+ rpmQueryArray[0] = "rpm";
+ rpmQueryArray[1] = "--help";
+
+ Vector returnVector = new Vector();
+ Vector returnErrorVector = new Vector();
+ int returnValue = ExecuteProcess.executeProcessReturnVector(rpmQueryArray, returnVector, returnErrorVector);
+
+ // Checking if the return vector contains the string "force-debian"
+
+ for (int i = 0; i < returnVector.size(); i++) {
+ String line = (String) returnVector.get(i);
+ if ( line.indexOf("force-debian") > -1 ) {
+ data.setIsDebianSystem(true);
+ }
+ }
+ }
+
public void getLinuxFileInfo(PackageDescription packageData) {
// analyzing a string like "openoffice-core01-2.0.3-159" as "name-version-release"
InstallData data = InstallData.getInstance();