Frederic
MARIE-JOSEPH

Install Oracle-XE on incus/debian13

Install Oracle-XE on incus/debian13

TL;DR

wget https://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe_10.2.0.1-1.1_i386.deb
dpkg --add-architecture "i386"
apt-get update
apt install libc:i386
wget http://http.us.debian.org/debian/pool/main/liba/libaio/libaio1_0.3.113-4_i386.deb
apt install ./libaio1_0.3.113-4_i386.deb
/etc/init.d/oracle-xe configure

Intro

I had to install on some local incus instance an oracle db server. Just to test a storage procedure behavior with a Springboot(c) backend. I remembered had already done that years ago on a local debian box to test my vscode plugin but didn’t figure out the details anymore. So I’ve searched and find out the (great) post of Todd Trichler on oracle.com/articles and I immediatly recognized the one I’d followed at hte time to succeed in. So I mark it now as personal reference.

My first attempt to install a db oracle Free (sic - it still seems weird to place oracle and free in the same sentence) lead me to this two websites:

  1. 26ai free 26ai
  2. eXpress Edition XE

The first is still distributed at this time under rpm packages for redhat/CentOS, oralinux or suze.

For a quick test, the express edition appeared perfect.

Download packages

So I downloaded the package:

root@ora:~# wget https://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb
--2025-12-09 12:13:07--  https://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb
Resolving oss.oracle.com (oss.oracle.com)... 138.1.117.31
Connecting to oss.oracle.com (oss.oracle.com)|138.1.117.31|:443... connected.
HTTP request sent, awaiting response... 200 OK
Syntax error in Set-Cookie: HttpOnly;Secure at position 9.
Length: 262441286 (250M) [application/vnd.debian.binary-package]
Saving to: ‘oracle-xe-universal_10.2.0.1-1.1_i386.deb’

oracle-xe-universal_10.2.0.1-1.1_i386.deb   100%[========================================================================================>] 250.28M  11.2MB/s    in 23s     

2025-12-09 12:13:31 (10.7 MB/s) - ‘oracle-xe-universal_10.2.0.1-1.1_i386.deb’ saved [262441286/262441286]

and I temped a first try.

root@ora:~# apt install ./oracle-xe-universal_10.2.0.1-1.1_i386.deb 
Note, selecting 'oracle-xe-universal:i386' instead of './oracle-xe-universal_10.2.0.1-1.1_i386.deb'
Solving dependencies... Error!
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

Unsatisfied dependencies:
 oracle-xe-universal:i386 : Depends: libc6:i386 (>= 2.3.2) but it is not installable
                            Depends: libaio:i386 (>= 0.3.96) but it is not installable or
                                     libaio1:i386 (>= 0.3.96) but it is not installable
Error: Unable to correct problems, you have held broken packages.
Error: The following information from --solver 3.0 may provide additional context:
   Unable to satisfy dependencies. Reached two conflicting decisions:
   1. oracle-xe-universal:i386=10.2.0.1-1.1 is selected for install
   2. oracle-xe-universal:i386 Depends libc6:i386 (>= 2.3.2)
      but none of the choices are installable:
      [no choices]

Needed libraries

So I’ve first just gone with a search for that libraries:

root@ora:~# apt search ^libc6.i386
libc6-i386/stable 2.41-12 amd64
  GNU C Library: 32-bit shared libraries for AMD64

libc6-i386-amd64-cross/stable 2.41-11cross1 all
  GNU C Library: 32-bit shared libraries for AMD64 (for cross-compiling)

libc6-i386-cross/stable 2.41-11cross1 all
  GNU C Library: Shared libraries (for cross-compiling)

libc6-i386-x32-cross/stable 2.41-11cross1 all
  GNU C Library: 32-bit shared libraries for AMD64 (for cross-compiling)

and install them, But Still the same error. Oops effectively I didn’t notice in my hurry the i386 mention that mean I have to to activate the multiarch option. As described here in the wiki multi arch.

Switch to multiarch

dpkg --add-architecture "i386"
apt-get update
apt install -y libc6:i386

I didnt get result for libai:i386 so I downloaded the package directly

wget http://http.us.debian.org/debian/pool/main/liba/libaio/libaio1_0.3.113-4_i386.deb
--2025-12-09 12:30:01--  http://http.us.debian.org/debian/pool/main/liba/libaio/libaio1_0.3.113-4_i386.deb
Resolving http.us.debian.org (http.us.debian.org)... 208.80.154.139, 64.50.233.100, 64.50.236.52, ...
Connecting to http.us.debian.org (http.us.debian.org)|208.80.154.139|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13504 (13K) [application/vnd.debian.binary-package]
Saving to: ‘libaio1_0.3.113-4_i386.deb’

libaio1_0.3.113-4_i386.deb                  100%[========================================================================================>]  13.19K  --.-KB/s    in 0.001s  

2025-12-09 12:30:01 (12.1 MB/s) - ‘libaio1_0.3.113-4_i386.deb’ saved [13504/13504]

root@ora:~# apt install ./libaio1_0.3.113-4_i386.deb 
Note, selecting 'libaio1:i386' instead of './libaio1_0.3.113-4_i386.deb'
Installing:
  libaio1:i386

Summary:
  Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
  Download size: 0 B / 13.5 kB
  Space needed: 37.9 kB / 205 GB available

Get:1 /root/libaio1_0.3.113-4_i386.deb libaio1 i386 0.3.113-4 [13.5 kB]
Selecting previously unselected package libaio1:i386.
(Reading database ... 12898 files and directories currently installed.)
Preparing to unpack .../libaio1_0.3.113-4_i386.deb ...
Unpacking libaio1:i386 (0.3.113-4) ...
Setting up libaio1:i386 (0.3.113-4) ...
Processing triggers for libc-bin (2.41-12) ...
Notice: Download is performed unsandboxed as root as file '/root/libaio1_0.3.113-4_i386.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

Install oracle-xe

Then the installation just works.

apt install ./oracle-xe_10.2.0.1-1.1_i386.deb
Note, selecting 'oracle-xe:i386' instead of './oracle-xe_10.2.0.1-1.1_i386.deb'
Installing:
  oracle-xe:i386

Summary:
  Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
  Download size: 0 B / 221 MB
  Space needed: 405 MB / 204 GB available

Get:1 /root/oracle-xe_10.2.0.1-1.1_i386.deb oracle-xe i386 10.2.0.1-1.1 [221 MB]
Selecting previously unselected package oracle-xe:i386.
(Reading database ... 28060 files and directories currently installed.)
Preparing to unpack .../oracle-xe_10.2.0.1-1.1_i386.deb ...
This system does not meet the minimum requirements for swap space.  Based on 
the amount of physical memory available on the system, Oracle Database 10g 
Express Edition requires 1024 MB of swap space. This system has 0 MB 
of swap space.  Configure more swap space on the system and retry the installation.
/var/lib/dpkg/tmp.ci/preinst: 167: [: Illegal number: 18446744073692774399
/var/lib/dpkg/tmp.ci/preinst: 179: [: Illegal number: 18446744073692774399
Unpacking oracle-xe:i386 (10.2.0.1-1.1) ...
Setting up oracle-xe:i386 (10.2.0.1-1.1) ...
Executing Post-install steps...

-e You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.

Configure it

and to configure, we have to answer few questions. I have to search which config file I have to set to avoid this step. It will be useful for my ansible role.

/etc/init.d/oracle-xe configure

Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express 
Edition.  The following questions will determine whether the database should 
be starting upon system boot, the ports it will use, and the passwords that 
will be used for database accounts.  Press <Enter> to accept the defaults. 
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of 
different passwords for each database account.  This can be done after 
initial configuration:
Confirm the password:

Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:

Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8080/apex"

Notes

ssh with X-Forwarding

So to connect remotely to your http://127.0.0.1:8080/apex

On the remote server:

then on your local desktop

ssh -XC ora@10.233.67.184
The authenticity of host '10.233.67.184 (10.233.67.184)' can't be established.
ED25519 key fingerprint is SHA256:+Ii6d979mV+S7RYsqjfYVTdHpd9ADR4iL3IQKMTe89s.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.233.67.184' (ED25519) to the list of known hosts.
ora@10.233.67.184's password: 
Linux ora 6.12.57+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.57-1 (2025-11-05) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
/usr/bin/xauth:  file /home/ora/.Xauthority does not exist
$ ls -al ~/.Xauthority
-rw------- 1 ora ora   49 Dec  9 12:51 .Xauthority
$ xauth list
ora/unix:10  MIT-MAGIC-COOKIE-1  56fcc66d04ab701f835cc10c2c45d496
xauth add ora/unix:10  MIT-MAGIC-COOKIE-1  56fcc66d04ab701f835cc10c2c45d496

to avoid error message about libpci and libEGL

install libs: apt install libpci-dev; apt install libEGL