# post_install: 在软件包安装后执行 post_install() { update-desktop-database /usr/share/applications echo "Checking for 'smart' user..." if ! id -u smart &>/dev/null; then echo "WARNING: User 'smart' does not exist. Please create the 'smart' user for SmartTMS to function correctly." echo "You can create it with: sudo useradd -m smart" else # 处理 .bashrc if [ -f "/home/smart/.bashrc" ]; then mv "/home/smart/.bashrc_tms-config" "/home/smart/.bashrc" chown smart:smart "/home/smart/.bashrc" echo "Copied ~/.bashrc_tms-config to /home/smart/.bashrc." else # 如果 .bashrc 不存在,则直接复制我们的模板 cp "/home/smart/.bashrc_tms-config" "/home/smart/.bashrc" chown smart:smart "/home/smart/.bashrc" echo "Copied ~/.bashrc_tms-config to /home/smart/.bashrc." fi fi echo "cp desktop" cp -f '/usr/share/applications/barco-communicator.desktop' /home/smart/Desktop cp -f '/usr/share/applications/barco-commander.desktop' /home/smart/Desktop cp -f '/usr/share/applications/dcc2.desktop' /home/smart/Desktop cp -f '/usr/share/applications/dcc.desktop' /home/smart/Desktop cp -f '/usr/share/applications/tmsrestart.desktop' /home/smart/Desktop cp -f '/usr/share/applications/dcpomatic2.desktop' /home/smart/Desktop cp -f '/usr/share/applications/org.remmina.Remmina.desktop' /home/smart/Desktop cp -f '/usr/share/applications/tms.desktop' /home/smart/Desktop cp -f '/usr/share/applications/sunlogin.desktop' /home/smart/Desktop cp -f '/usr/share/applications/com.teamviewer.TeamViewer.desktop' /home/smart/Desktop cp -f '/usr/share/applications/todesk.desktop' /home/smart/Desktop cp -f '/usr/share/applications/uzipkdm.desktop' /home/smart/Desktop cp -f '/usr/share/applications/usb-disk-repair.desktop' /home/smart/Desktop ln -s /media/kdm /home/smart/Desktop/密钥 ln -s /media/cinema /home/smart/Desktop/片库 chown smart:smart /home/smart/Desktop/* FILE_ffmpeg="/usr/bin/ffmpeg" FILE_HOME_ffmpeg="/home/smart/ffmpeg" SHOULD_EXECUTE_FIX_BLOCK=false # 默认不执行修复 # 检查 ffmpeg 文件是否存在 if [ ! -f "$FILE_ffmpeg" ]; then echo "警告: $FILE_ffmpeg 不存在,取消 ffmpeg 修复。" # SHOULD_EXECUTE_FIX_BLOCK 保持为 false elif [ ! -f "$FILE_HOME_ffmpeg" ]; then echo "警告: $FILE_HOME_ffmpeg 不存在,取消 ffmpeg 修复。" # SHOULD_EXECUTE_FIX_BLOCK 保持为 false else # 两个 ffmpeg 文件都存在,进行 SHA256 校验 echo "两个 ffmpeg 文件都存在,正在计算 SHA256 校验和..." HASH_USR=$(sha256sum "$FILE_ffmpeg" | awk '{print $1}') HASH_HOME=$(sha256sum "$FILE_HOME_ffmpeg" | awk '{print $1}') echo "$FILE_ffmpeg 的 SHA256: $HASH_USR" echo "$FILE_HOME_ffmpeg 的 SHA256: $HASH_HOME" if [ "$HASH_USR" != "$HASH_HOME" ]; then echo "两个 ffmpeg 文件内容不一致 (SHA256 不匹配),将执行修复逻辑。" SHOULD_EXECUTE_FIX_BLOCK=true # 设置为 true,表示需要修复 else echo "两个 ffmpeg 文件内容一致 (SHA256 匹配),无需操作。" # SHOULD_EXECUTE_FIX_BLOCK 保持为 false fi fi # 根据 SHOULD_EXECUTE_FIX_BLOCK 的值决定是否执行 ffmpeg 修复 if [ "$SHOULD_EXECUTE_FIX_BLOCK" = true ]; then echo "--- 开始执行 ffmpeg 修复逻辑 ---" if [ -f "$FILE_ffmpeg.bin" ]; then # 使用变量 $FILE_ffmpeg.bin echo "警告: $FILE_ffmpeg.bin 已存在,备份为 ${FILE_ffmpeg}.bin.b。" mv "$FILE_ffmpeg.bin" "${FILE_ffmpeg}.bin.b" fi echo "fix ffmpeg: 备份原文件并替换。" mv "$FILE_ffmpeg" "$FILE_ffmpeg.bin" mv "$FILE_HOME_ffmpeg" "$FILE_ffmpeg" chmod 755 "$FILE_ffmpeg" echo "--- ffmpeg 修复逻辑执行完毕 ---" else # 如果不执行修复(文件缺失或内容一致),则清理 /home/smart/ffmpeg echo "ffmpeg 修复未执行(原因:文件缺失或内容一致),清理 $FILE_HOME_ffmpeg (如果存在)。" rm -f "$FILE_HOME_ffmpeg" fi FILE_USR="/usr/bin/dcpomatic2_create" FILE_HOME="/home/smart/dcpomatic2_create" FILE_USR_ORIGINAL="/usr/bin/dcpomatic2_create_original" # 定义原始文件备份路径变量 SHOULD_EXECUTE_FIX_BLOCK_DCP=false # 为 dcpomatic2_create 使用独立的变量 # 检查 dcpomatic2_create 文件是否存在 if [ ! -f "$FILE_USR" ]; then echo "警告: $FILE_USR 不存在,取消 dcpomatic2_create 修复。" # SHOULD_EXECUTE_FIX_BLOCK_DCP 保持为 false elif [ ! -f "$FILE_HOME" ]; then echo "警告: $FILE_HOME 不存在,取消 dcpomatic2_create 修复。" # SHOULD_EXECUTE_FIX_BLOCK_DCP 保持为 false else # 两个 dcpomatic2_create 文件都存在,进行 SHA256 校验 echo "两个 dcpomatic2_create 文件都存在,正在计算 SHA256 校验和..." HASH_USR=$(sha256sum "$FILE_USR" | awk '{print $1}') HASH_HOME=$(sha256sum "$FILE_HOME" | awk '{print $1}') echo "$FILE_USR 的 SHA256: $HASH_USR" echo "$FILE_HOME 的 SHA256: $HASH_HOME" if [ "$HASH_USR" != "$HASH_HOME" ]; then echo "两个 dcpomatic2_create 文件内容不一致 (SHA256 不匹配),将执行修复逻辑。" SHOULD_EXECUTE_FIX_BLOCK_DCP=true # 设置为 true,表示需要修复 else echo "两个 dcpomatic2_create 文件内容一致 (SHA256 匹配),无需操作。" # SHOULD_EXECUTE_FIX_BLOCK_DCP 保持为 false fi fi # 根据 SHOULD_EXECUTE_FIX_BLOCK_DCP 的值决定是否执行 dcpomatic2_create 修复 if [ "$SHOULD_EXECUTE_FIX_BLOCK_DCP" = true ]; then echo "--- 开始执行 dcpomatic2_create 修复逻辑 ---" if [ -f "$FILE_USR_ORIGINAL" ]; then echo "警告: $FILE_USR_ORIGINAL 已存在,备份为 ${FILE_USR_ORIGINAL}_b。" mv "$FILE_USR_ORIGINAL" "${FILE_USR_ORIGINAL}_b" fi echo "fix dcpomatic2_create: 备份原文件并替换。" mv "$FILE_USR" "$FILE_USR_ORIGINAL" mv "$FILE_HOME" "$FILE_USR" chmod 755 "$FILE_USR" echo "--- dcpomatic2_create 修复逻辑执行完毕 ---" else # 如果不执行修复(文件缺失或内容一致),则清理 /home/smart/dcpomatic2_create echo "dcpomatic2_create 修复未执行(原因:文件缺失或内容一致),清理 $FILE_HOME (如果存在)。" rm -f "$FILE_HOME" fi }