abl 调整为 abl_portable
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
PORTABLE_ROOT=$(realpath "$(dirname "${BASH_SOURCE[0]}")/../..")
|
||||||
ABL_TARGET_LD_SO_PATH=/lib64/ld-linux-x86-64.so.2
|
ABL_TARGET_LD_SO_PATH=/lib64/ld-linux-x86-64.so.2
|
||||||
ABL_DIR_PREFIX=lib/x86_64-linux-gnu
|
ABL_DIR_PREFIX=lib/x86_64-linux-gnu
|
||||||
# some content, such as ABL_DIR_PREFIX, ABL_TARGET_LD_SO_PATH, is generated when building the package
|
# some content, such as ABL_DIR_PREFIX, ABL_TARGET_LD_SO_PATH, is generated when building the package
|
||||||
@@ -20,13 +21,18 @@ fi
|
|||||||
|
|
||||||
if [ "$LD_LIBRARY_PATH" = "" ]
|
if [ "$LD_LIBRARY_PATH" = "" ]
|
||||||
then
|
then
|
||||||
ABL_LIBRARY_PATH="/usr/${ABL_DIR_PREFIX}/additional-base-lib/"
|
ABL_LIBRARY_PATH="$PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/;$PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/others/"
|
||||||
else
|
else
|
||||||
ABL_LIBRARY_PATH="$LD_LIBRARY_PATH;/usr/${ABL_DIR_PREFIX}/additional-base-lib"
|
ABL_LIBRARY_PATH="$LD_LIBRARY_PATH;$PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib;$PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/others/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unset LD_LIBRARY_PATH
|
unset LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
# Resolve the command to an absolute path if it's a file in the current directory
|
||||||
|
if [ -f "$1" ] && [[ "$1" != /* ]]; then
|
||||||
|
set -- "$(realpath "$1")" "${@:2}"
|
||||||
|
fi
|
||||||
|
|
||||||
ABL_LD_SO_PATH=`readlink -e $ABL_TARGET_LD_SO_PATH`
|
ABL_LD_SO_PATH=`readlink -e $ABL_TARGET_LD_SO_PATH`
|
||||||
ABL_LIBC_SO_PATH=`readlink -e /${ABL_DIR_PREFIX}/libc.so.6`
|
ABL_LIBC_SO_PATH=`readlink -e /${ABL_DIR_PREFIX}/libc.so.6`
|
||||||
|
|
||||||
@@ -40,9 +46,9 @@ ABL_MAX_USER_NS=`cat /proc/sys/user/max_user_namespaces`
|
|||||||
ablrun_normal() {
|
ablrun_normal() {
|
||||||
exec bwrap \
|
exec bwrap \
|
||||||
--dev-bind / / \
|
--dev-bind / / \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/"$ABL_TARGET_LD_SO_PATH" "$ABL_LD_SO_PATH" \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/"$ABL_TARGET_LD_SO_PATH" "$ABL_LD_SO_PATH" \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/libc.so.6 "$ABL_LIBC_SO_PATH" \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/libc.so.6 "$ABL_LIBC_SO_PATH" \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/ldd /usr/bin/ldd \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/ldd /usr/bin/ldd \
|
||||||
--setenv LD_LIBRARY_PATH "$ABL_LIBRARY_PATH" \
|
--setenv LD_LIBRARY_PATH "$ABL_LIBRARY_PATH" \
|
||||||
--cap-add CAP_SYS_ADMIN \
|
--cap-add CAP_SYS_ADMIN \
|
||||||
-- "$@"
|
-- "$@"
|
||||||
@@ -52,9 +58,9 @@ ablrun_normal() {
|
|||||||
ablrun_setuid() {
|
ablrun_setuid() {
|
||||||
exec bwrap --dev-bind / / bwrap \
|
exec bwrap --dev-bind / / bwrap \
|
||||||
--dev-bind / / \
|
--dev-bind / / \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/"$ABL_TARGET_LD_SO_PATH" "$ABL_LD_SO_PATH" \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/"$ABL_TARGET_LD_SO_PATH" "$ABL_LD_SO_PATH" \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/libc.so.6 "$ABL_LIBC_SO_PATH" \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/libc.so.6 "$ABL_LIBC_SO_PATH" \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/ldd /usr/bin/ldd \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/ldd /usr/bin/ldd \
|
||||||
--setenv LD_LIBRARY_PATH "$ABL_LIBRARY_PATH" \
|
--setenv LD_LIBRARY_PATH "$ABL_LIBRARY_PATH" \
|
||||||
--cap-add CAP_SYS_ADMIN \
|
--cap-add CAP_SYS_ADMIN \
|
||||||
-- "$@"
|
-- "$@"
|
||||||
@@ -66,9 +72,9 @@ ablrun_setuid() {
|
|||||||
ablrun_nocap() {
|
ablrun_nocap() {
|
||||||
exec bwrap \
|
exec bwrap \
|
||||||
--dev-bind / / \
|
--dev-bind / / \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/"$ABL_TARGET_LD_SO_PATH" "$ABL_LD_SO_PATH" \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/"$ABL_TARGET_LD_SO_PATH" "$ABL_LD_SO_PATH" \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/libc.so.6 "$ABL_LIBC_SO_PATH" \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/libc.so.6 "$ABL_LIBC_SO_PATH" \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/ldd /usr/bin/ldd \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/ldd /usr/bin/ldd \
|
||||||
--setenv LD_LIBRARY_PATH "$ABL_LIBRARY_PATH" \
|
--setenv LD_LIBRARY_PATH "$ABL_LIBRARY_PATH" \
|
||||||
"$@"
|
"$@"
|
||||||
# For some system like CentOS/Red Hat Enterprise Linux 7 or Debian Jessie, for some reasons,
|
# For some system like CentOS/Red Hat Enterprise Linux 7 or Debian Jessie, for some reasons,
|
||||||
@@ -82,17 +88,15 @@ ablrun_nocap() {
|
|||||||
# but you will know there will be some applications, especially those use it own sandbox
|
# but you will know there will be some applications, especially those use it own sandbox
|
||||||
# inside (for example, those based on electron) can not run.
|
# inside (for example, those based on electron) can not run.
|
||||||
|
|
||||||
# For appimages, I designed a special method to make them run, see it below.
|
|
||||||
|
|
||||||
# This method also use for root user.
|
# This method also use for root user.
|
||||||
}
|
}
|
||||||
|
|
||||||
ablrun_nocap_noreplace() {
|
ablrun_nocap_noreplace() {
|
||||||
bwrap \
|
bwrap \
|
||||||
--dev-bind / / \
|
--dev-bind / / \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/"$ABL_TARGET_LD_SO_PATH" "$ABL_LD_SO_PATH" \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/"$ABL_TARGET_LD_SO_PATH" "$ABL_LD_SO_PATH" \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/libc.so.6 "$ABL_LIBC_SO_PATH" \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/libc.so.6 "$ABL_LIBC_SO_PATH" \
|
||||||
--bind /usr/${ABL_DIR_PREFIX}/additional-base-lib/ldd /usr/bin/ldd \
|
--bind $PORTABLE_ROOT/usr/${ABL_DIR_PREFIX}/additional-base-lib/ldd /usr/bin/ldd \
|
||||||
--setenv LD_LIBRARY_PATH "$ABL_LIBRARY_PATH" \
|
--setenv LD_LIBRARY_PATH "$ABL_LIBRARY_PATH" \
|
||||||
"$@"
|
"$@"
|
||||||
}
|
}
|
||||||
@@ -123,7 +127,7 @@ then
|
|||||||
ABL_FILETYPE=`xdg-mime query filetype "$ABL_FILENAME"`
|
ABL_FILETYPE=`xdg-mime query filetype "$ABL_FILENAME"`
|
||||||
if [ "$ABL_FILETYPE" = "application/vnd.appimage" ] || [ "$ABL_FILETYPE" = "application/x-iso9660-appimage" ]
|
if [ "$ABL_FILETYPE" = "application/vnd.appimage" ] || [ "$ABL_FILETYPE" = "application/x-iso9660-appimage" ]
|
||||||
then
|
then
|
||||||
ABLIMAGE_PARAMETERS=("$@")
|
ABLIMAGE_PARAMETERS=($@)
|
||||||
coproc "$1" --appimage-mount
|
coproc "$1" --appimage-mount
|
||||||
ABLIMAGE_PID=$!
|
ABLIMAGE_PID=$!
|
||||||
|
|
||||||
@@ -154,4 +158,3 @@ fi
|
|||||||
|
|
||||||
# Fallback
|
# Fallback
|
||||||
ablrun_nocap "$@"
|
ablrun_nocap "$@"
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user