Skip to content

Ubuntu 24.04 (Noble) missing packages python3-lief, jadx and dex2jar #1966

Description

@superuser5

Is your feature request related to a problem? Please describe.

While the Noble is not supported yet. The installer.sh -D aborts on Ubuntu 24.04 (Noble) because three print_tool_info calls reference packages dropped from Noble's archive. The helper

emba/installer/helpers.sh

Lines 49 to 122 in a1dacfb

print_tool_info() {
echo -e "\\n""${ORANGE}""${BOLD}""${1:-}""${NC}"
local lPKG_NAME="$1"
# If we are on RHEL and the 4th argument is provided, use it as the package name
if [[ "${RHEL_OS}" -eq 1 ]] && [[ -n "${4:-}" ]]; then
lPKG_NAME="$4"
fi
local lTOOL_INFO=""
local lIS_INSTALLED=0
if [[ "${RHEL_OS}" -eq 1 ]]; then
lTOOL_INFO="$(dnf info "${lPKG_NAME}" 2>/dev/null)"
else
lTOOL_INFO="$(apt show "${lPKG_NAME}" 2>/dev/null)"
fi
if [[ -n "${lTOOL_INFO}" ]]; then
local lDESC=""
lDESC="$(echo "${lTOOL_INFO}" | grep -E "^Description[[:space:]]*:" | head -n 1 || true)"
if [[ -n "${lDESC}" ]]; then
echo -e "${lDESC}"
fi
local lSIZE=""
if [[ "${RHEL_OS}" -eq 1 ]]; then
lSIZE=$(echo "${lTOOL_INFO}" | grep -E "^Size[[:space:]]*:" | cut -d: -f2 | head -n 1 || true)
else
lSIZE=$(echo "${lTOOL_INFO}" | grep "Download-Size" | cut -d: -f2 || true)
fi
if [[ -n "${lSIZE}" ]]; then
echo -e "Download-Size:${lSIZE}"
fi
local lCOMMAND_=""
if [[ -n ${3+x} ]]; then
lCOMMAND_="${3:-}"
else
lCOMMAND_="${lPKG_NAME}"
fi
if (command -v "${lCOMMAND_}" >/dev/null); then
lIS_INSTALLED=1
elif [[ "${RHEL_OS}" -eq 1 ]]; then
if rpm -q "${lPKG_NAME}" &>/dev/null; then lIS_INSTALLED=1; fi
else
if (dpkg -s "${lPKG_NAME}" 2>/dev/null | grep -q "Status: install ok installed"); then lIS_INSTALLED=1; fi
fi
if [[ "${lIS_INSTALLED}" -eq 1 ]]; then
local lUPDATE_AVAILABLE=0
if [[ "${RHEL_OS}" -eq 1 ]]; then
dnf check-update "${lPKG_NAME}" &>/dev/null
[[ $? -eq 100 ]] && lUPDATE_AVAILABLE=1
else
local lUPDATE=0
lUPDATE=$(LANG=en apt-cache policy "${lPKG_NAME}" | grep -i install | cut -d: -f2 | tr -d "^[:blank:]" | uniq | wc -l)
[[ "${lUPDATE}" -ne 1 ]] && lUPDATE_AVAILABLE=1
fi
if [[ "${lUPDATE_AVAILABLE}" -eq 1 ]]; then
echo -e "${ORANGE}""${1:-}"" will be updated.""${NC}"
INSTALL_APP_LIST+=("${lPKG_NAME}")
else
echo -e "${GREEN}""${1:-}"" won't be updated.""${NC}"
fi
else
echo -e "${ORANGE}""${1:-}"" will be newly installed.""${NC}"
INSTALL_APP_LIST+=("${lPKG_NAME}")
fi
else
echo -e "${RED}""${1:-}"" is not available in repositories - installation can't proceed.""${NC}"
exit 1
runs apt show, gets empty output, and exit 1s. Affected lines (pinned to commit
a1dacfb, tag v2.0.1-interactor, also present on master):

Noble has been Ubuntu's current LTS since April 2024; Jammy's standard support ends April 2027. Downstream consumers building EMBA container images on the current LTS need this path to work.

Describe the solution you'd like

  1. python3-lief — delete the line. Every consumer in the same file is already commented out upstream, so it's an orphaned dependency on every distro.
  2. jadx / dex2jar — either gate behind an UBUNTU_VERSION check, or install from the official GitHub releases. Both ship prebuilt archives:

jadx — resolve latest release via /releases/latest redirect

RUN set -eux; \
JADX_TAG=$(basename "$(curl -fsSL -o /dev/null -w '%{url_effective}' \
https://github.com/skylot/jadx/releases/latest)"); \
curl -fsSL "https://github.com/skylot/jadx/releases/download/${JADX_TAG}/jadx-${JADX_TAG#v}.zip" -o /tmp/jadx.zip; \
unzip -q /tmp/jadx.zip -d /opt/jadx; \
ln -s /opt/jadx/bin/jadx /usr/local/bin/jadx; \
rm /tmp/jadx.zip

dex2jar — pinned (last release 2023-10, no churn)

ARG DEX2JAR_VERSION=2.4
RUN set -eux; \
curl -fsSL "https://github.com/pxb1988/dex2jar/releases/download/v${DEX2JAR_VERSION}/dex-tools-v${DEX2JAR_VERSION}.zip" -o /tmp/d2j.zip; \
unzip -q /tmp/d2j.zip -d /tmp/d2j; \
mv "/tmp/d2j/dex-tools-v${DEX2JAR_VERSION}" /opt/dex2jar; \
chmod +x /opt/dex2jar/*.sh; \
ln -s /opt/dex2jar/d2j-dex2jar.sh /usr/local/bin/d2j-dex2jar; \
rm -rf /tmp/d2j.zip /tmp/d2j

  1. Both require a JRE at runtime, which EMBA's installer already pulls in.

Describe alternatives you've considered

Priority issue

Are you already a Sponsor? — N

Additional context

Reproducer on a clean host:
docker run --rm -it ubuntu:24.04 bash
apt-get update && apt-get install -y git sudo curl ca-certificates cpio unzip p7zip-full build-essential python3 python3-pip python3-dev
git clone --depth 1 --branch v2.0.1-interactor https://github.com/e-m-b-a/emba /emba
cd /emba && bash ./installer.sh -D

Aborts at print_tool_info "python3-lief"; subsequent runs abort at jadx, then dex2jar.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions