innobead / huber

Huber 📦, Package Install Manager for GitHub repos
Apache License 2.0
189 stars 17 forks source link

Support for musl based distro and non-bash shell #49

Open zoritle opened 2 years ago

zoritle commented 2 years ago

Describe the bug

Unable to run on musl based distro and the installation script unable setup path for non-bash shell

To Reproduce

Follow the instruction on musl based distro

Expected behavior

Working properly.

Environment

❯ ldd =huber
        /lib64/ld-linux-x86-64.so.2 (0x7f2888827000)
Error loading shared library libarchive.so.13: No such file or directory (needed by /root/.huber/bin/huber)
        libz.so.1 => /lib/libz.so.1 (0x7f2888244000)
        libssl.so.1.1 => /lib/libssl.so.1.1 (0x7f28881c3000)
        libcrypto.so.1.1 => /lib/libcrypto.so.1.1 (0x7f2887f42000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x7f2887f28000)
        libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f2888827000)
        libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f2888827000)
        libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7f2888827000)
        libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f2888827000)
Error relocating /root/.huber/bin/huber: __vsnprintf_chk: symbol not found
Error relocating /root/.huber/bin/huber: __fprintf_chk: symbol not found
Error relocating /root/.huber/bin/huber: __strncpy_chk: symbol not found
Error relocating /root/.huber/bin/huber: __memcpy_chk: symbol not found
Error relocating /root/.huber/bin/huber: __snprintf_chk: symbol not found
Error relocating /root/.huber/bin/huber: archive_entry_hardlink: symbol not found
Error relocating /root/.huber/bin/huber: archive_write_close: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_free: symbol not found
Error relocating /root/.huber/bin/huber: __res_init: symbol not found
Error relocating /root/.huber/bin/huber: archive_write_disk_set_standard_lookup: symbol not found
Error relocating /root/.huber/bin/huber: archive_write_disk_set_options: symbol not found
Error relocating /root/.huber/bin/huber: archive_write_header: symbol not found
Error relocating /root/.huber/bin/huber: archive_set_error: symbol not found
Error relocating /root/.huber/bin/huber: archive_write_data_block: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_support_format_all: symbol not found
Error relocating /root/.huber/bin/huber: archive_errno: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_support_filter_all: symbol not found
Error relocating /root/.huber/bin/huber: archive_error_string: symbol not found
Error relocating /root/.huber/bin/huber: archive_entry_set_hardlink: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_next_header: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_support_format_raw: symbol not found
Error relocating /root/.huber/bin/huber: archive_entry_set_pathname: symbol not found
Error relocating /root/.huber/bin/huber: archive_write_finish_entry: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_data_block: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_set_seek_callback: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_close: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_open: symbol not found
Error relocating /root/.huber/bin/huber: archive_write_disk_new: symbol not found
Error relocating /root/.huber/bin/huber: archive_write_free: symbol not found
Error relocating /root/.huber/bin/huber: archive_entry_pathname: symbol not found
Error relocating /root/.huber/bin/huber: archive_read_new: symbol not found
Error relocating /root/.huber/bin/huber: archive_entry_free: symbol not found

Additional context

I would like to use huber as a replacement for brew on musl based, embedded system for installing some modern cli tools. huber can provide a static linked, musl build for these systems. Also there're many non-bash environment, from busybox ash to modern shell like zsh and fish, the installations script should handle these case or just do nothing but remind user to do so.

Btw another question, is it better to put all the package manifests into a separate repo, thus user don't need to pull all the source code to install package.