Skip to content

Commit df925dd

Browse files
authored
moved package manager detection into environment probe (#196)
* moved package manager detection into environment probe * add DNF and microDNF to rebase template * temporary change to install useradd and groupadd to the 8-slim image until the Linux team adds it back
1 parent fbb4779 commit df925dd

File tree

7 files changed

+61
-30
lines changed

7 files changed

+61
-30
lines changed

imagetool/src/main/java/com/oracle/weblogic/imagetool/cli/menu/CommonOptions.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -351,16 +351,17 @@ public void copyOptionsFromImage(String fromImage, String tmpDir)
351351
logger.info("IMG-0000", existingJavaHome);
352352
}
353353

354-
String osProperty = baseImageProperties.getProperty("ID", "ol");
355-
PackageManagerType pkgMgr = PackageManagerType.fromOperatingSystem(osProperty);
356-
logger.fine("fromImage is {0}, using package manager {1}", osProperty, pkgMgr);
354+
String pkgMgrProp = baseImageProperties.getProperty("PACKAGE_MANAGER", "YUM");
355+
356+
PackageManagerType pkgMgr = PackageManagerType.valueOf(pkgMgrProp);
357+
logger.fine("fromImage package manager {0}", pkgMgr);
357358
if (packageManager != PackageManagerType.OS_DEFAULT && pkgMgr != packageManager) {
358359
logger.info("IMG-0079", pkgMgr, packageManager);
359360
pkgMgr = packageManager;
360361
}
361362
dockerfileOptions.setPackageInstaller(pkgMgr);
362363
} else if (packageManager == PackageManagerType.OS_DEFAULT) {
363-
// Default OS is Oracle Linux, so default package manager is YUM
364+
// Default OS is Oracle Linux 7-slim, so default package manager is YUM
364365
dockerfileOptions.setPackageInstaller(PackageManagerType.YUM);
365366
} else {
366367
dockerfileOptions.setPackageInstaller(packageManager);

imagetool/src/main/java/com/oracle/weblogic/imagetool/cli/menu/PackageManagerType.java

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,10 @@ public enum PackageManagerType {
77
OS_DEFAULT,
88
NONE,
99
YUM,
10+
DNF,
11+
MICRODNF,
1012
APTGET,
1113
APK,
1214
ZYPPER;
1315

14-
/**
15-
* Returns the package manager that should be used to install software on a given Linux OS.
16-
* Defaults to YUM. Known OS's include: ubuntu, debian, opensuse, centos, ol (Oracle Linux), and rhel.
17-
*
18-
* @param osID identifier for the OS, like ubuntu, debian, rhel, ol, ...
19-
* @return the package manager
20-
*/
21-
public static PackageManagerType fromOperatingSystem(String osID) {
22-
if (osID == null) {
23-
return YUM;
24-
}
25-
26-
osID = osID.replaceAll("[\"]", "");
27-
switch (osID) {
28-
case "ubuntu":
29-
case "debian":
30-
return APTGET;
31-
case "opensuse":
32-
return ZYPPER;
33-
case "centos":
34-
case "ol":
35-
case "rhel":
36-
default:
37-
return YUM;
38-
}
39-
}
4016
}

imagetool/src/main/java/com/oracle/weblogic/imagetool/util/DockerfileOptions.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,16 @@ public boolean useYum() {
257257
return pkgMgr == PackageManagerType.YUM;
258258
}
259259

260+
@SuppressWarnings("unused")
261+
public boolean useMicroDnf() {
262+
return pkgMgr == PackageManagerType.MICRODNF;
263+
}
264+
265+
@SuppressWarnings("unused")
266+
public boolean useDnf() {
267+
return pkgMgr == PackageManagerType.DNF;
268+
}
269+
260270
@SuppressWarnings("unused")
261271
public boolean useAptGet() {
262272
return pkgMgr == PackageManagerType.APTGET;

imagetool/src/main/resources/docker-files/Create_Image.mustache

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ RUN yum -y --downloaddir={{{tempDir}}} install gzip tar unzip libaio \
1414
&& rm -rf /var/cache/yum/* \
1515
&& rm -rf {{{tempDir}}}
1616
{{/useYum}}
17+
{{#useDnf}}
18+
RUN dnf -y install gzip tar unzip libaio \
19+
&& dnf clean all
20+
{{/useDnf}}
21+
{{#useMicroDnf}}
22+
RUN microdnf install gzip tar unzip libaio shadow-utils \
23+
&& microdnf clean all
24+
{{/useMicroDnf}}
1725
{{#useAptGet}}
1826
RUN apt-get -y update \
1927
&& apt-get -y upgrade \

imagetool/src/main/resources/docker-files/Rebase_Image.mustache

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ LABEL com.oracle.weblogic.imagetool.buildid="{{buildId}}"
3636
&& rm -rf /var/cache/yum/* \
3737
&& rm -rf {{{tempDir}}}
3838
{{/useYum}}
39+
{{#useDnf}}
40+
RUN dnf -y install gzip tar unzip libaio \
41+
&& dnf clean all
42+
{{/useDnf}}
43+
{{#useMicroDnf}}
44+
RUN microdnf install gzip tar unzip libaio shadow-utils \
45+
&& microdnf clean all
46+
{{/useMicroDnf}}
3947
{{#useAptGet}}
4048
RUN apt-get -y update \
4149
&& apt-get -y upgrade \

imagetool/src/main/resources/probe-env/test-create-env.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@ if [[ -f /etc/os-release ]]; then
1010
cat /etc/os-release | grep -oE '^VERSION_ID=[\"]?[[:digit:]\.]+[\"]?'
1111
fi
1212

13+
if command -v dnf &> /dev/null; then
14+
echo PACKAGE_MANAGER=DNF
15+
elif command -v yum &> /dev/null; then
16+
echo PACKAGE_MANAGER=YUM
17+
elif command -v microdnf &> /dev/null; then
18+
echo PACKAGE_MANAGER=MICRODNF
19+
elif command -v apt-get &> /dev/null; then
20+
echo PACKAGE_MANAGER=APTGET
21+
elif command -v apk &> /dev/null; then
22+
echo PACKAGE_MANAGER=APK
23+
elif command -v zypper &> /dev/null; then
24+
echo PACKAGE_MANAGER=ZYPPER
25+
fi
26+
1327
if [[ -n "$JAVA_HOME" ]]; then
1428
echo JAVA_HOME="$JAVA_HOME"
1529
fi

imagetool/src/main/resources/probe-env/test-update-env.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@ if [[ -f /etc/os-release ]]; then
1010
cat /etc/os-release | grep -oE '^VERSION_ID=[\"]?[[:digit:]\.]+[\"]?'
1111
fi
1212

13+
if command -v dnf &> /dev/null; then
14+
echo PACKAGE_MANAGER=DNF
15+
elif command -v yum &> /dev/null; then
16+
echo PACKAGE_MANAGER=YUM
17+
elif command -v microdnf &> /dev/null; then
18+
echo PACKAGE_MANAGER=MICRODNF
19+
elif command -v apt-get &> /dev/null; then
20+
echo PACKAGE_MANAGER=APTGET
21+
elif command -v apk &> /dev/null; then
22+
echo PACKAGE_MANAGER=APK
23+
elif command -v zypper &> /dev/null; then
24+
echo PACKAGE_MANAGER=ZYPPER
25+
fi
26+
1327
if [[ -n "$JAVA_HOME" ]]; then
1428
echo JAVA_HOME="$JAVA_HOME"
1529
echo JAVA_PATH="$(readlink -f $JAVA_HOME)"

0 commit comments

Comments
 (0)