meefik / linuxdeploy

Install and run GNU/Linux on Android
https://meefik.github.io/linuxdeploy
GNU General Public License v3.0
5.25k stars 680 forks source link

Fedora core 23 and 24 install issues (+ fixes). #646

Closed dbgithub1 closed 7 years ago

dbgithub1 commented 7 years ago

On my AML based TV box with linuxdeploy-2.0.0-215 (& busybox.v1.25.1-meefik), installation is not possible due to multiple package 'skip' issues:

Retrieving packages list ... done Retrieving base packages: filesystem ... skip audit-libs ... skip ...

core/emulator : do_install && do_configure Updating a packages database ... chroot: can't execute '/bin/rpm': No such file or directory fail

This occurs for fc23 and fc24 on armhfp and aarch64 and the problem seems to be on line 86 of /data/data/ru.meefik.linuxdeploy/env/include/bootstrap/fedora/deploy.sh

replace pkg_url=$(grep -m1 -e "^./${package}-[0-9r][0-9.-].${pkg_arch}.rpm$" "${pkg_list}") with pkg_url=$(grep -m1 -e "^./${package}-[0-9][0-9.-]..rpm$" "${pkg_list}")

This still does not fix all issues (lz4 ... skip) so replace lz4 with lz4-r131 in local basic_packages=" on line 54 (bodge and not a true fix because package lz4 name suffix seems to vary over revisions).

Dave.

srakitnican commented 7 years ago

Same issue with CentOS and Fedora installs. Installer downloads repodata, but bunch of fails on packages. I am running Linux Deploy on smartphone with Android 4.2.2. Both armhfp and aarch64 gives me same errors.

Mentioned line:86 workaround does not work for me to pass fails, however following slightly adjusted one does.

pkg_url=$(grep -m1 -e "^.*/${package}-[0-9r][0-9\.\-].*\.rpm$" "${pkg_list}")

Sample from ${CHROOT_DIR}/tmp/packages.list

Packages/4/4ti2-libs-1.6.3-11.fc24.armv7hl.rpm Packages/6/64tass-1.51.727-3.fc24.armv7hl.rpm Packages/7/7kaa-2.14.5-12.fc24.armv7hl.rpm Packages/7/7kaa-data-2.14.5-12.fc24.noarch.rpm Packages/7/7kaa-music-2.14.5-12.fc24.noarch.rpm Packages/9/99soft-oss-parent-10-6.fc24.noarch.rpm Packages/9/9pfs-1.0.9-6.fc24.noarch.rpm Packages/9/9wm-1.3.5-2.fc24.armv7hl.rpm Packages/a/AGReader-1.2-15.fc24.armv7hl.rpm Packages/a/APLpy-1.0-4.fc24.noarch.rpm

Didn't manage to see yet if this is the same case with CentOS. Will report back with my findings.

EDIT: CentOS uses pretty much the same script I guess it is the same issue. Seems toolbox's (/system/bin/toolbox) version of grep does not support "\(armv7hl\|noarch\)" style expressions. Or it does but currently that doesn't work. For example:

# echo Packages/3/389-ds-base-devel-1.3.5.4-1.fc24.armv7hl.rpm | grep -e "\(armv7hl\|noarch\)"
#
srakitnican commented 7 years ago

This still does not fix all issues (lz4 ... skip) so replace lz4 with lz4-r131 in local basic_packages=" on line 54 (bodge and not a true fix because package lz4 name suffix seems to vary over revisions).

This is wrong assumption, -r131 part is not package name [1], it is version string by which I see it is supported by regular expression. Name of package is always the same (lz4).

[1] http://pkgs.fedoraproject.org/cgit/rpms/lz4.git/commit/lz4.spec?h=f24&id=4533d5fe5cc68fb6cd8eda7c8f1fd462e2ab64ef

So, your "fixed" regular expression "^./${package}-[0-9][0-9.-]..rpm$" is actually omitting r131 style versioning.

srakitnican commented 7 years ago

However, following seems to work:

# cat /sdcard/list.txt
Packages/4/4ti2-libs-1.6.3-11.fc24.armv7hl.rpm
Packages/6/64tass-1.51.727-3.fc24.armv7hl.rpm
Packages/7/7kaa-2.14.5-12.fc24.armv7hl.rpm
Packages/7/7kaa-data-2.14.5-12.fc24.noarch.rpm
Packages/7/7kaa-music-2.14.5-12.fc24.noarch.rpm
Packages/9/99soft-oss-parent-10-6.fc24.noarch.rpm
Packages/9/9pfs-1.0.9-6.fc24.noarch.rpm
Packages/9/9wm-1.3.5-2.fc24.armv7hl.rpm
Packages/a/AGReader-1.2-15.fc24.armv7hl.rpm
Packages/a/APLpy-1.0-4.fc24.noarch.rpm
# cat /sdcard/list.txt | grep -m1 -E "^.*/7kaa-[0-9r][0-9.-].*(armv7hl|noarch)\.rpm$"
Packages/7/7kaa-2.14.5-12.fc24.armv7hl.rpm
# cat /sdcard/list.txt | /data/data/ru.meefik.busybox/files/bin/grep -m1 -E "^.*/7kaa-[0-9r][0-9.-].*(armv7hl|noarch)\.rpm$"
Packages/7/7kaa-2.14.5-12.fc24.armv7hl.rpm
qidizi commented 7 years ago
grep -m 1 --ignore-case -E -e "^[a-z0-9\/]*\/zlib\-[0-9r][0-9\.\-].*?\.(armv7hl|noarch)\.rpm$" packages.list
Packages/z/zlib-1.2.8-10.fc24.armv7hl.rpm
qidizi commented 7 years ago

xiao mi 4

fedora 24

   i386) pkg_arch="\(i686\|noarch\)" ;;
    x86_64) pkg_arch="\(x86_64\|noarch\)" ;;

    armhfp) pkg_arch="(armv7hl|noarch)" ;;

msg -n "${package} ...  \/${package}-.+\.${pkg_arch}\.rpm "
        pkg_url=$(grep -m1 -i -E -e "\/${package}-.+\.${pkg_arch}\.rpm" "${pkg_list}")