deb-packs/charles/package.sh

149 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
origin_app_name="charles-proxy5"
app_name="charles"
tmp_dir="/tmp/${app_name}_tmp"
version="5.0.1"
release="v${version}"
replace_name="charles-nj"
patch="Architecture: amd64"
_type="amd64"
_desc=', 内置java-11 runtime'
if [ "$1" == "nj" ]; then
_type="all"
app_name+="-nj"
replace_name="charles"
_desc=""
patch="""Architecture: all
Depends: java11-runtime"""
fi
deb_url="https://www.charlesproxy.com/packages/apt/pool/main/c/charles-proxy/${origin_app_name}_${version}_${_type}.deb"
# 创建临时目录, 用于下载官方包
if [ -d $tmp_dir ]; then
rm -rf $tmp_dir
fi
if [ -d "./unpack" ]; then
sudo rm -rf ./unpack
fi
if [ -f "./${app_name}_${version}.deb" ]; then
rm "./${app_name}_${version}.deb"
fi
mkdir $tmp_dir
# 创建临时待打包目录
echo "创建待打包目录..."
mkdir -p "./unpack/DEBIAN"
mkdir -p "./unpack/usr"
source_dir="${tmp_dir}/${app_name}"
echo "下载官方原包..."
# wget $deb_url -O "${tmp_dir}/${app_name}.deb"
cp ~/Downloads/${origin_app_name}_${version}_${_type}.deb "${tmp_dir}/${app_name}.deb"
echo "下载完成, 解包中..."
dpkg-deb -R "${tmp_dir}/${app_name}.deb" "${tmp_dir}/${app_name}"
echo "解包完成, 复制到待打包目录..."
mv "${source_dir}/usr" "./unpack/"
rm -rf $tmp_dir
echo "复制完成, 创建可执行文件及程序桌面入口文件..."
echo """
#!/bin/bash -e
######################################################################
# Charles Proxy startup script
#
# Find Charles lib directory
CHARLES_LIB="/usr/lib/${origin_app_name}"
GDK_SCALE=1
java_bin=java
if [ -d "\$CHARLES_LIB/jdk" ]; then
export JAVA_HOME="\$CHARLES_LIB/jdk"
java_bin="\$CHARLES_LIB/jdk/bin/java"
fi
# HiDPI
if [ -x /usr/bin/gsettings ]; then
GDK_SCALE=\$(/usr/bin/gsettings get org.gnome.desktop.interface scaling-factor | awk '{print \$2}')
export GDK_SCALE
fi
# Launch Charles
\$java_bin \\
-XX:+UseZGC \\
-Xmx1024M \\
-Dcharles.config="~/.charles.config" \\
-Djava.library.path=\"\$CHARLES_LIB\" \\
--add-opens java.base/sun.security.ssl=com.charlesproxy \\
--add-opens java.desktop/java.awt.event=com.charlesproxy \\
--add-opens java.base/java.io=com.charlesproxy \\
--add-modules com.jthemedetector,com.formdev.flatlaf \\
--module-path \"\$CHARLES_LIB\" \\
-m com.charlesproxy \\
\$*
""" > ./unpack/usr/bin/charles
chmod +x ./unpack/usr/bin/charles
rm ./unpack/usr/bin/charles5
sed -i -e 's/charles5/charles/; s/com-charlesproxy-main-MainWithClassLoader/Charles/' ./unpack/usr/share/applications/${origin_app_name}.desktop
echo "文件复制完成..."
echo '计算文件md5中...'
cd ./unpack
find usr/ -type f | xargs -I {} md5sum {} > DEBIAN/md5sums
IFS=$'\t' read -ra size <<< "$(du -d 0)"
echo """
Package: ${app_name}
Version: ${version}
${patch}
Maintainer: Yutent <yutent.io@gmail.com>
Section: non-free/develop
Breaks: ${replace_name}
Replaces: ${replace_name}
Priority: optional
Installed-Size: ${size[0]}
Homepage: https://www.charlesproxy.com/
Description: 一个网络抓包调试工具${_desc}
Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a
developer to view all of the HTTP and SSL / HTTPS traffic between their
machine and the Internet. This includes requests, responses and the HTTP
headers (which contain the cookies and caching information).
""" > DEBIAN/control
echo '计算文件md5完成, 打包中...'
cd ../
sudo chown -R root:root unpack
dpkg-deb -b ./unpack "./${app_name}_${version}.deb"
sudo rm -rf ./unpack
echo "打包完成 :)"
一些 开源&闭源 应用的重新打包
Shell 100%