优化lib挂载方式

This commit is contained in:
2023-07-11 20:58:17 +08:00
parent 27cd65a48f
commit e175a80e57
3 changed files with 95 additions and 63 deletions

View File

@@ -4,62 +4,19 @@ if [[ ! -d "$CURRENT_DIR/usr" ]]; then
zenity --info --text=未安装运行库,无法运行 --no-wrap
exit
fi
command=""
if [[ -d "$CURRENT_DIR/usr/lib/i386-linux-gnu" ]]; then
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/i386-linux-gnu\" /usr/lib/i386-linux-gnu "
if [[ ! -d /usr/lib/i386-linux-gnu ]] && ; then
pkexec mkdir -p /usr/lib/i386-linux-gnu
fi
if [[ ! -d "$CURRENT_DIR/usr/lib64" ]]; then
bwrap --dev-bind / / \
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
--ro-bind "$CURRENT_DIR/usr" /usr \
--ro-bind /usr/share /usr/share \
--ro-bind /usr/bin /usr/bin \
--ro-bind /usr/sbin /usr/sbin \
-- "$@"
exit
fi
if [[ -d "$CURRENT_DIR/usr/lib/x86_64-linux-gnu" ]]; then
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/x86_64-linux-gnu\" /usr/lib/x86_64-linux-gnu "
if [[ ! -d /usr/lib/x86_64-linux-gnu/ ]]; then
pkexec mkdir -p /usr/lib/x86_64-linux-gnu/
fi
if [[ ! -f /lib64 ]] && [[ ! -d /lib64 ]] && [[ ! -L /lib64 ]]; then
pkexec ln -s /usr/lib64 /lib64
fi
if [[ -d "$CURRENT_DIR/usr/lib/arm-linux-gnueabihf" ]]; then
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/arm-linux-gnueabihf\" /usr/lib/arm-linux-gnueabihf "
if [[ ! -d /usr/lib/arm-linux-gnueabihf/ ]]; then
pkexec mkdir -p /usr/lib/arm-linux-gnueabihf/
fi
fi
if [[ -d "$CURRENT_DIR/usr/lib/aarch64-linux-gnu" ]]; then
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/aarch64-linux-gnu\" /usr/lib/aarch64-linux-gnu "
if [[ ! -d /usr/lib/aarch64-linux-gnu/ ]]; then
pkexec mkdir -p /usr/lib/aarch64-linux-gnu/
fi
fi
if [[ -d "$CURRENT_DIR/usr/lib64" ]]; then
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib64\" /lib64 "
if [[ ! -d /lib64 ]]; then
pkexec ln -s /usr/lib64 /lib64
fi
fi
if [[ -f "$CURRENT_DIR/usr/lib/ld-linux-aarch64.so.1" ]]; then
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/ld-linux-aarch64.so.1\" /usr/lib/ld-linux-aarch64.so.1 "
if [[ ! -f /usr/lib/ld-linux-aarch64.so.1 ]] && [[ ! -L /usr/lib/ld-linux-aarch64.so.1 ]]; then
pkexec bash /usr/lib/ld-linux-aarch64.so.1
fi
fi
if [[ -f "$CURRENT_DIR/usr/lib/ld-linux-armhf.so.3" ]]; then
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/ld-linux-armhf.so.3\" ld-linux-armhf.so.3 "
if [[ ! -f /usr/lib/ld-linux-armhf.so.3 ]]; then
pkexec touch /usr/lib/ld-linux-armhf.so.3
fi
fi
if [[ -f "$CURRENT_DIR/usr/lib/ld-linux.so.2" ]]; then
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib/ld-linux.so.2\" ld-linux.so.2 "
if [[ ! -f /usr/lib/ld-linux.so.2 ]]; then
pkexec touch /usr/lib/ld-linux.so.2
fi
fi
if [[ -f "$CURRENT_DIR/usr/lib64/ld-linux-x86-64.so.2" ]]; then
command=" $command --ro-bind \"$CURRENT_DIR/usr/lib64/ld-linux-x86-64.so.2\" ld-linux-x86-64.so.2 "
if [[ ! -f /usr/lib64/ld-linux-x86-64.so.2 ]]; then
pkexec touch /usr/lib64/ld-linux-x86-64.so.2
fi
fi
bwrap --dev-bind / / \
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
--ro-bind "$CURRENT_DIR/usr/lib64" /lib \
@@ -67,4 +24,4 @@ bwrap --dev-bind / / \
--ro-bind /usr/share /usr/share \
--ro-bind /usr/bin /usr/bin \
--ro-bind /usr/sbin /usr/sbin \
-- "${@:2}"
-- "$@"

View File

@@ -4,24 +4,81 @@ if [[ ! -d "$CURRENT_DIR/usr" ]]; then
zenity --info --text=未安装运行库,无法运行 --no-wrap
exit
fi
systemNeedCommand=""
for libr in `ls /usr/lib`
do
if [[ -f /usr/lib/$libr/libc.so.6 ]]; then
if [[ ! -f "$CURRENT_DIR/usr/lib/$libr/libc.so.6" ]]; then
echo $libr
systemNeedCommand="$systemNeedCommand --ro-bind /usr/lib/$libr/ /usr/lib/$libr/ "
mkdir -p "$CURRENT_DIR/usr/lib/$libr"
fi
fi
done
for libr in `ls /usr/lib/ld*.so*`
do
if [[ -f $libr ]]; then
if [[ ! -f "$CURRENT_DIR/$libr" ]]; then
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
touch "$CURRENT_DIR/$libr"
else
if [[ ! -s "$CURRENT_DIR/$libr" ]]; then
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
fi
fi
fi
done
if [[ -L /usr/lib64 ]] && [[ ! -d "$CURRENT_DIR/usr/lib64" ]]; then
mkdir -p "$CURRENT_DIR/usr/lib64"
fi
for libr in `ls /usr/lib64/ld*.so*`
do
if [[ -f $libr ]]; then
if [[ ! -f "$CURRENT_DIR/$libr" ]]; then
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
touch "$CURRENT_DIR/$libr"
else
if [[ ! -s "$CURRENT_DIR/$libr" ]]; then
systemNeedCommand="$systemNeedCommand --ro-bind $libr $libr "
fi
fi
fi
done
if [[ ! -d "$CURRENT_DIR/usr/lib/locale" ]]; then
systemNeedCommand="$systemNeedCommand --ro-bind /usr/lib/locale /usr/lib/locale "
fi
echo $systemNeedCommand
if [[ ! -d "$CURRENT_DIR/usr/lib64" ]]; then
bwrap --dev-bind / / \
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
--ro-bind "$CURRENT_DIR/usr" /usr \
--bind "$CURRENT_DIR/usr/lib" /lib \
--bind "$CURRENT_DIR/usr" /usr \
--ro-bind /usr/share /usr/share \
--ro-bind /usr/bin /usr/bin \
--ro-bind /usr/sbin /usr/sbin \
$systemNeedCommand \
-- "$@"
exit
fi
if [[ ! -f /lib64 ]] && [[ ! -d /lib64 ]] && [[ ! -L /lib64 ]]; then
pkexec mkdir /lib64 -p
pkexec ln -s /usr/lib64 /lib64
fi
if [[ -L /lib64 ]] || [[ -d /lib64 ]] || [[ -f /lib64 ]];then
bwrap --dev-bind / / \
--bind "$CURRENT_DIR/usr/lib" /lib \
--bind "$CURRENT_DIR/usr/lib64" /lib \
--bind "$CURRENT_DIR/usr" /usr \
--ro-bind /usr/share /usr/share \
--ro-bind /usr/bin /usr/bin \
--ro-bind /usr/sbin /usr/sbin \
$systemNeedCommand \
-- "$@"
exit
fi
bwrap --dev-bind / / \
--ro-bind "$CURRENT_DIR/usr/lib" /lib \
--ro-bind "$CURRENT_DIR/usr/lib64" /lib \
--ro-bind "$CURRENT_DIR/usr" /usr \
--bind "$CURRENT_DIR/usr/lib" /lib \
--bind "$CURRENT_DIR/usr" /usr \
--ro-bind /usr/share /usr/share \
--ro-bind /usr/bin /usr/bin \
--ro-bind /usr/sbin /usr/sbin \
$systemNeedCommand \
-- "$@"