diff --git a/make-deb.sh b/make-deb.sh
new file mode 100755
index 0000000..bef5b82
--- /dev/null
+++ b/make-deb.sh
@@ -0,0 +1,105 @@
+#!/bin/bash
+
+LIBC6_DOWNLOAD_URL=http://ftp.cn.debian.org/debian/pool/main/g/glibc/libc6_2.36-9+deb12u1_amd64.deb
+LIBC_BIN_DOWNLOAD_URL=http://ftp.cn.debian.org/debian/pool/main/g/glibc/libc-bin_2.36-9+deb12u1_amd64.deb
+LIBSTDCxx6_DOWNLOAD_URL=http://ftp.cn.debian.org/debian/pool/main/g/gcc-12/libstdc++6_12.2.0-14_amd64.deb
+
+ABL_VERSION=7
+
+check(){
+    if [ "$1" != 0 ]
+    then
+        echo "Error"
+        exit
+    fi
+}
+
+
+echo "download packages:"
+mkdir ./downloads
+echo "download libc6"
+wget "$LIBC6_DOWNLOAD_URL" -c -O ./downloads/libc6.deb
+check $?
+echo "download libc_bin"
+wget "$LIBC_BIN_DOWNLOAD_URL" -c -O ./downloads/libc-bin.deb
+check $?
+echo "download libstdc++6"
+wget "$LIBSTDCxx6_DOWNLOAD_URL" -c -O ./downloads/libstdc++6.deb
+check $?
+
+echo "extract packages:"
+dpkg -x ./downloads/libc6.deb ./downloads/libc6
+dpkg -e ./downloads/libc6.deb ./downloads/libc6/DEBIAN
+dpkg -x ./downloads/libc-bin.deb ./downloads/libc-bin
+dpkg -e ./downloads/libc-bin.deb ./downloads/libc-bin/DEBIAN
+dpkg -x ./downloads/libstdc++6.deb ./downloads/libstdc++6
+dpkg -e ./downloads/libstdc++6.deb ./downloads/libstdc++6/DEBIAN
+
+echo "check packages:"
+LIBC6_VERSION=`cat ./downloads/libc6/DEBIAN/control | grep "^Version: .*"`
+LIBC6_VERSION=${LIBC6_VERSION:9}
+LIBC_BIN_VERSION=`cat ./downloads/libc-bin/DEBIAN/control | grep "^Version: .*"`
+LIBC_BIN_VERSION=${LIBC_BIN_VERSION:9}
+LIBSTDCxx6_VERSION=`cat ./downloads/libstdc++6/DEBIAN/control | grep "^Version: .*"`
+LIBSTDCxx6_VERSION=${LIBSTDCxx6_VERSION:9}
+
+LIBC6_ARCH=`cat ./downloads/libc6/DEBIAN/control | grep "^Architecture: .*"`
+LIBC6_ARCH=${LIBC6_ARCH:14}
+LIBC_BIN_ARCH=`cat ./downloads/libc-bin/DEBIAN/control | grep "^Architecture: .*"`
+LIBC_BIN_ARCH=${LIBC_BIN_ARCH:14}
+LIBSTDCxx6_ARCH=`cat ./downloads/libstdc++6/DEBIAN/control | grep "^Architecture: .*"`
+LIBSTDCxx6_ARCH=${LIBSTDCxx6_ARCH:14}
+
+echo "check arch libc6==libc_bin $LIBC6_ARCH==$LIBC_BIN_ARCH"
+[ "$LIBC6_ARCH" = "$LIBC_BIN_ARCH" ]
+check $?
+echo "check arch libc6==libstdc++6 $LIBC6_ARCH==$LIBSTDCxx6_ARCH"
+[ "$LIBC6_ARCH" = "$LIBSTDCxx6_ARCH" ]
+check $?
+echo "check version libc6==lib_bin $LIBC6_VERSION==$LIBC_BIN_VERSION"
+check $?
+
+
+GLIBC_VERSION=$LIBC6_VERSION
+DEBIAN_DEB_ARCH=$LIBC6_ARCH
+DEBIAN_MULTIARCH=`dpkg-architecture -A "$DEBIAN_DEB_ARCH" | grep "^DEB_TARGET_MULTIARCH=.*"`
+DEBIAN_MULTIARCH=${DEBIAN_MULTIARCH:21}
+LD_SO_LOCATION=`patchelf --print-interpreter "./downloads/libc6/lib/${DEBIAN_MULTIARCH}/libc.so.6"`
+LIBC_SO_LOCATION="/lib/$DEBIAN_MULTIARCH/libc.so.6"
+echo "$GLIBC_VERSION,$DEBIAN_DEB_ARCH,$DEBIAN_MULTIARCH,$LD_SO_LOCATION,$LIBC_SO_LOCATION"
+
+mkdir ./deb-contents
+mkdir ./deb-contents/DEBIAN
+mkdir ./deb-contents/usr
+mkdir ./deb-contents/usr/bin
+mkdir ./deb-contents/usr/lib
+mkdir "./deb-contents/usr/lib/$DEBIAN_MULTIARCH"
+
+echo "Package: additional-base-lib" >> ./deb-contents/DEBIAN/control
+echo "Version: $GLIBC_VERSION-$ABL_VERSION" >> ./deb-contents/DEBIAN/control
+echo "Section: utils" >> ./deb-contents/DEBIAN/control
+echo "Priority: optional" >> ./deb-contents/DEBIAN/control
+echo "Architecture: $DEBIAN_DEB_ARCH" >> ./deb-contents/DEBIAN/control
+echo "Maintainer: CongTianKong (gitee.com/CongTianKong)" >> ./deb-contents/DEBIAN/control
+echo "Depends: bubblewrap, bash, coreutils, shared-mime-info, xdg-utils" >> ./deb-contents/DEBIAN/control
+echo "Description: A script to run programs with newer libc." >> ./deb-contents/DEBIAN/control
+echo " package built with make-deb.sh." >> ./deb-contents/DEBIAN/control
+
+echo >> ./deb-contents/DEBIAN/control
+
+cp ./scripts/ablrun ./deb-contents/usr/bin/ablrun
+cp ./scripts/ablrun-appimage ./deb-contents/usr/bin/ablrun-appimage
+echo "#!/bin/bash" > ./deb-contents/usr/bin/ablrun-normal
+echo "ABL_TARGET_LD_SO_PATH=$LD_SO_LOCATION" >> ./deb-contents/usr/bin/ablrun-normal
+echo "ABL_ARCH_DIR=$DEBIAN_MULTIARCH" >> ./deb-contents/usr/bin/ablrun-normal
+cat ./scripts/ablrun-normal.1 >> ./deb-contents/usr/bin/ablrun-normal
+chmod a+x ./deb-contents/usr/bin/*
+
+cp -r "./downloads/libc6/lib/${DEBIAN_MULTIARCH}/" "./deb-contents/usr/lib/${DEBIAN_MULTIARCH}/additional-base-lib"
+mkdir --parents "./deb-contents/usr/lib/${DEBIAN_MULTIARCH}/additional-base-lib/$LD_SO_LOCATION"
+rm -d "./deb-contents/usr/lib/${DEBIAN_MULTIARCH}/additional-base-lib/$LD_SO_LOCATION"
+cp ./downloads/libc6/`readlink "./downloads/libc6/$LD_SO_LOCATION"` "./deb-contents/usr/lib/${DEBIAN_MULTIARCH}/additional-base-lib/$LD_SO_LOCATION"
+cp "./downloads/libc-bin/usr/bin/ldd" "./deb-contents/usr/lib/${DEBIAN_MULTIARCH}/additional-base-lib/ldd"
+cp `readlink -e ./downloads/libstdc++6/usr/lib/${DEBIAN_MULTIARCH}/libstdc++.so.6` "./deb-contents/usr/lib/${DEBIAN_MULTIARCH}/additional-base-lib/libstdc++.so.6"
+
+dpkg -b ./deb-contents "./additional-base-lib_${GLIBC_VERSION}-${ABL_VERSION}_${DEBIAN_DEB_ARCH}.deb"
\ No newline at end of file
diff --git a/scripts/ablrun b/scripts/ablrun
new file mode 100755
index 0000000..ac22ba3
--- /dev/null
+++ b/scripts/ablrun
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+if [ "$*" = "" ]
+then
+    echo "usage: $0 [command [arguments ...]]"
+    echo "    The script is part of additional-base-lib. The package provides a"
+    echo "    simple way to solve the compatible problem between application and"
+    echo "    glibc, powered by bubblewrap."
+    echo "    All the library files, which distributed with additional-base-lib,"
+    echo "    are taken from debian bookworm. The script itself create by enforcee"
+    echo "    from deepin forum <https://bbs.deepin.org/>. There's no lisence"
+    echo "    nor copyright restriction with The script. Feel free to deal with."
+    echo
+    echo "    This script auto-detects normal executable and appimage, and then"
+    echo "    uses specified script to run either. If you experienced issues,"
+    echo "    you may want to use them directly."
+    echo "    for appimage, you need ablrun-appimage."
+    echo "    for normal executable, you need ablrun-normal."
+    exit
+fi
+
+if [ `whoami` = "root" ]
+then
+    exec ablrun-normal "$@"
+fi
+
+if [ -e "$1" ]
+then
+    ABL_FILENAME="$1"
+else
+    ABL_FILENAME=`which $1`
+    if [ "$?" != "0" ]
+    then
+        echo "File not exists."
+        exit 1
+    fi
+fi
+
+ABL_FILETYPE=`xdg-mime query filetype "$ABL_FILENAME"`
+if [ "$ABL_FILETYPE" != "application/vnd.appimage" ]
+then
+    if [ "$ABL_FILETYPE" != "application/x-iso9660-appimage" ]
+    then
+        exec ablrun-normal "$@"
+    fi
+fi
+
+exec ablrun-appimage "$@"
diff --git a/scripts/ablrun-appimage b/scripts/ablrun-appimage
new file mode 100755
index 0000000..89a613a
--- /dev/null
+++ b/scripts/ablrun-appimage
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+if [ "$*" = "" ]
+then
+    echo "usage: $0 [appimage-file [arguments ...]]"
+    echo "    This is helper script to run appimages for additional-base-lib."
+    echo
+    echo "    You have to ensure input file IS an appimage, for this script"
+    echo "    does not check. If you input other files, It will become"
+    echo "    unpredictable."
+    exit
+fi
+
+ABLIMAGE_PARAMETERS=("$@")
+
+coproc "$1" --appimage-mount
+
+ABLIMAGE_PID=$!
+
+cleanup() {
+    kill $ABLIMAGE_PID
+    exit
+}
+trap cleanup SIGHUP
+trap cleanup SIGINT
+trap cleanup SIGTERM
+
+if [ ! -e /proc/$! ]
+then
+    echo "Child process failed."
+    exit 1
+fi
+
+read -u ${COPROC[0]} ABLIMAGE_DIR
+
+ablrun-normal "$ABLIMAGE_DIR/AppRun" ${ABLIMAGE_PARAMETERS[@]:1}
+
+cleanup
diff --git a/scripts/ablrun-normal.1 b/scripts/ablrun-normal.1
new file mode 100755
index 0000000..50d3ae4
--- /dev/null
+++ b/scripts/ablrun-normal.1
@@ -0,0 +1,37 @@
+#some contents is generated when build package
+
+if [ "$*" = "" ]
+then
+    echo "usage: $0 [command [arguments ...]]"
+    echo "    The script is part of additional-base-lib. The package provides a"
+    echo "    simple way to solve the compatible problem between application and"
+    echo "    glibc, powered by bubblewrap."
+    echo "    All the library files, which distributed with additional-base-lib,"
+    echo "    are taken from debian bookworm. The script itself create by enforcee"
+    echo "    from deepin forum <https://bbs.deepin.org/>. There's no lisence"
+    echo "    nor copyright restriction with The script. Feel free to deal with."
+    echo
+    echo "    If you're going to run appimage with additional-base-lib, you may"
+    echo "    need ablrun-appimage."
+    echo "    There is a simpler script to handle both normal executable and"
+    echo "    appimage, called ablrun. usage: ablrun [command [arguments ...]]"
+    exit
+fi
+
+ABL_LD_SO_PATH=`readlink -e $ABL_TARGET_LD_SO_PATH`
+ABL_LIBC_SO_PATH=`readlink -e /lib/${ABL_ARCH_DIR}/libc.so.6`
+
+if [ "$LD_LIBRARY_PATH" = "" ]
+then
+    ABL_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu/additional-base-lib/"
+else
+    ABL_LIBRARY_PATH="$LD_LIBRARY_PATH;/usr/lib/x86_64-linux-gnu/additional-base-lib"
+fi
+
+exec bwrap \
+--dev-bind / / \
+--bind /usr/lib/${ABL_ARCH_DIR}/additional-base-lib/"$ABL_TARGET_LD_SO_PATH" "$ABL_LD_SO_PATH" \
+--bind /usr/lib/${ABL_ARCH_DIR}/additional-base-lib/libc.so.6 "$ABL_LIBC_SO_PATH" \
+--bind /usr/lib/${ABL_ARCH_DIR}/additional-base-lib/ldd /usr/bin/ldd \
+--setenv LD_LIBRARY_PATH "$ABL_LIBRARY_PATH" \
+-- "$@"