I’ve seen a lot of interest in the create_home mode of AutoUpgrade. It allows you to easily provision new Oracle homes and the feedback has been very positive.
A few customers reported an error during installation of an Oracle home on Oracle Linux 9.
Errors in database [create_home_1]
Stage [OH_PATCHING]
Operation [STOPPED]
Status [ERROR]
Info [Exception: PATCH111
Err message: AutoUpgradePatchingException [OPatch failed to install ...]
Digging into the referenced log file revealed:
[Jun 25, 2025 10:48:51 AM] [WARNING]OUI-67200:Make failed to invoke "/usr/bin/make -f ins_rdbms.mk javavm_refresh ORACLE_HOME=/u01/app/oracle/product/dbhome_1927 OPATCH_SESSION=apply"....'Can't locate File/Copy.pm in @INC (you may need to install the File::Copy module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /u01/app/oracle/product/dbhome_1927/javavm/install/update_javavm_binaries.pl line 64.
BEGIN failed--compilation aborted at /u01/app/oracle/product/dbhome_1927/javavm/install/update_javavm_binaries.pl line 64.
make: *** [ins_rdbms.mk:573: javavm_refresh] Error 2
The Workaround
You can avoid the problem by installing Perl before you start AutoUpgrade:
dnf -y install perl-core
Big shoutout to Martin Berger for providing a workaround.
Is My Server Affected
Use this command to test whether your server is affected:
perl -e 'use File::Copy;'
If it returns without any error or output, everything is fine. If you get an error, you must install Perl before proceeding:
perl -e 'use File::Copy;'
Can't locate File/Copy.pm in @INC (you may need to install the File::Copy module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Why Does It Happen
-
AutoUpgrade starts by installing the Oracle home and in some cases also applies the Release Update using the
-applyRUcommand line parameter. -
Next, it installs additional patches using OPatch. Some patches, like the OJVM bundle patch, requires a compilation using
make. This process fails if there’s no usable Perl installation. -
There are several MOS notes on this specific issues advising to set the
PERL5LIBenvironment variable (Patching fails during relink , with error code 102 :: Fatal error: Command failed for target `javavm_refresh’ (Doc ID 2002334.1)). -
To solve an unrelated issue, AutoUpgrade doesn’t always set
PERL5LIBwhen calling OPatch and this leads to this error during the compilation. -
We’re trying to find a smart way to handle this (without re-introducing the other issue).
To summarize, you get this error when:
- Your operating system doesn’t have a normal Perl installation. You might have the
perlexecutable, but not the normal modules. - You install the OJVM bundle patch.
The Rabbit Hole
I learned something new about Perl today. Do you dare walking down that rabbit hole with me? I’ll make it short.
-
The error from
makementions the missing Perl module, File::Copy:/usr/bin/make -f ins_rdbms.mk javavm_refresh ORACLE_HOME=/u01/app/oracle/product/dbhome_1927 OPATCH_SESSION=apply"....'Can't locate File/Copy.pm in @INC (you may need to install the File::Copy module) -
A Perl module can be loaded from disk. Perl automatically attempts to find the file in the following locations:
perl -e 'print "@INC\n"' /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 -
So, I can check these directories for the Perl module. To find the File::Copy module, I need to check in the
Filesubdirectory for the fileCopy.pm:ll /usr/local/lib64/perl5/5.32/File/Copy.pm ll /usr/local/share/perl5/5.32/File/Copy.pm ll /usr/lib64/perl5/vendor_perl/File/Copy.pm ll /usr/share/perl5/vendor_perl/File/Copy.pm ll /usr/lib64/perl5/File/Copy.pm ll /usr/share/perl5/File/Copy.pm ls: cannot access '/usr/local/lib64/perl5/5.32/File/Copy.pm': No such file or directory ls: cannot access '/usr/local/share/perl5/5.32/File/Copy.pm': No such file or directory ls: cannot access '/usr/lib64/perl5/vendor_perl/File/Copy.pm': No such file or directory ls: cannot access '/usr/share/perl5/vendor_perl/File/Copy.pm': No such file or directory ls: cannot access '/usr/lib64/perl5/File/Copy.pm': No such file or directory ls: cannot access '/usr/share/perl5/File/Copy.pm': No such file or directory -
The file is not found in any of the directories, so Perl will fail to load the module.
-
Had the file been found in just one location, all would be good.
Happy patching!



