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
|
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):
- python3-lief —
|
print_tool_info "python3-lief" 1 |
- jadx —
- dex2jar —
|
print_tool_info "dex2jar" 1 |
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
- 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.
- 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
- 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.
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
a1dacfb, tag v2.0.1-interactor, also present on master):
emba/installer/IP61_unblob.sh
Line 51 in a1dacfb
emba/installer/I17_apk_checks.sh
Line 23 in a1dacfb
emba/installer/I17_apk_checks.sh
Line 24 in a1dacfb
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
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
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.