# linux-GUI-app-install **Repository Path**: li_dg/linux-gui-app-install ## Basic Information - **Project Name**: linux-GUI-app-install - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-04 - **Last Updated**: 2026-08-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux GUI App Install 一个面向 Linux 桌面用户的便携应用压缩包安装器。它可以检查并解压 `.tar.gz`、`.tgz` 和 `.zip` 应用包,识别主启动程序与图标,将程序安装到当前用户目录,并创建桌面及应用菜单快捷方式。 无需 root 权限,不会修改系统目录。 ## 功能 - 图形化选择压缩包、主启动程序和应用图标。 - 自动识别压缩包中声明的图标,手动选择时直接打开解压目录。 - 检查 Linux ELF 类型、CPU 架构及脚本解释器。 - 拒绝源码包、Windows 程序、架构不兼容程序及没有有效入口的压缩包。 - 安全检查路径穿越、设备文件及越界符号链接。 - 安装到 `~/.local/opt/<应用名称>`。 - 在 `~/.local/share/applications` 和桌面创建快捷方式。 - 外部图标会复制到受管理的安装目录,避免原文件被移动后失效。 - 支持按桌面应用名称卸载,并同时清理程序目录和快捷方式。 - 只卸载带有 `app-install` 管理标记的应用,不处理系统程序或其他工具安装的程序。 ## 系统要求 - Linux 桌面系统 - Python 3.10 或更高版本 - GTK 3、PyGObject 和 GdkPixbuf Debian、Ubuntu、Deepin 可安装以下依赖: ```bash sudo apt install python3 python3-gi gir1.2-gtk-3.0 ``` Fedora: ```bash sudo dnf install python3 python3-gobject gtk3 ``` Arch Linux: ```bash sudo pacman -S python python-gobject gtk3 ``` ## 安装 app-install 克隆项目后运行: ```bash git clone git@gitee.com:li_dg/linux-gui-app-install.git cd linux-gui-app-install ./install.sh ``` 安装脚本会创建: ```text ~/.local/lib/linux-gui-app-install/app_install.py ~/.local/bin/app-install -> ../lib/linux-gui-app-install/app_install.py ``` 软链接使用相对路径,项目代码也不会写死某个用户的主目录,因此可以在不同用户的 Linux 系统上安装。 如果 `~/.local/bin/app-install` 已存在且不属于本项目,安装脚本会停止,不会覆盖原文件。 如果终端找不到 `app-install`,请将 `~/.local/bin` 加入 `PATH`。 自动化测试或自定义安装位置时,可以通过 `APP_INSTALL_PREFIX` 修改安装前缀;普通用户无需设置: ```bash APP_INSTALL_PREFIX=/path/to/prefix ./install.sh ``` ## 使用方法 打开图形界面: ```bash app-install ``` 直接打开指定压缩包: ```bash app-install /path/to/application.tar.gz ``` 应用名包含空格时,引号可加可不加: ```bash app-install uninstall My Application 1.0 app-install uninstall "My Application 1.0" ``` 应用名没有空格时: ```bash app-install uninstall firefox ``` 卸载成功后会删除: - `~/.local/opt` 下对应的受管理程序目录; - `~/.local/share/applications` 下对应的应用菜单项; - 桌面上的对应快捷方式。 程序自身产生的用户配置和数据如果位于其他目录,不会被删除。 ## 支持范围 本工具用于安装已经编译完成、解压后即可运行的 Linux 便携应用,例如带有 ELF 主程序、`AppRun` 或有效启动脚本的发布包。 以下内容不会安装: - 只有源码、需要 CMake/Make/Cargo/npm 等构建的开发包; - `.deb`、`.rpm`、Flatpak、Snap 等系统包; - Windows PE 或 macOS 应用; - 与当前 CPU 架构不匹配的 Linux 程序; - 没有有效主启动程序的普通资料压缩包。 静态检查能够判断格式、架构和启动入口,但不能保证程序的所有动态库依赖都已安装。若程序启动后提示缺少共享库,需要按该程序的官方说明安装依赖。 ## 安全说明 - 解压前检查绝对路径、`..` 路径穿越、设备文件和越界链接。 - 无效包在完整校验结束前不会覆盖已有安装。 - 卸载目标必须位于 `~/.local/opt`,并包含 `.app-install/managed` 标记。 - 安装器不会执行压缩包中的程序来判断是否可用,只进行静态检查。 压缩包中的程序仍然属于第三方代码。请只安装来源可信的发布包。 ## 移除安装器 ```bash ./uninstall-installer.sh ``` 该命令只移除 `app-install` 安装器,不会删除已经安装的应用。应用应使用 `app-install uninstall <应用名称>` 单独卸载。 ## 测试 ```bash python3 -m unittest discover -s tests -v bash -n install.sh uninstall-installer.sh ``` ## 项目结构 ```text app_install.py 主程序与图形界面 install.sh 当前用户安装脚本 uninstall-installer.sh 安装器移除脚本 tests/ 核心识别和卸载测试 ``` 英文说明见 [README.en.md](README.en.md)。