# PythonLinuxPackageManger **Repository Path**: liumou_site/plpm ## Basic Information - **Project Name**: PythonLinuxPackageManger - **Description**: 专注于Python在Linux环境下的包管理,提供高效、便捷的安装、更新和卸载工具,简化开发流程。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-28 - **Last Updated**: 2025-10-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # plpm_liumou_Stable
![PyPI Version](https://img.shields.io/pypi/v/plpm_liumou_Stable.svg) ![PyPI Downloads](https://img.shields.io/pypi/dm/plpm_liumou_Stable.svg) ![Python Version](https://img.shields.io/badge/python-3.5+-blue.svg) ![License](https://img.shields.io/badge/license-MIT-green.svg) ![Platform](https://img.shields.io/badge/platform-linux-lightgrey.svg) **plpm_liumou_Stable** - 分离的Linux包管理接口 一个为Linux系统提供分离包管理接口的Python库,分别支持在线和离线包管理器。 [English](#english) | [中文](#中文)
## 🌟 特性 - 🚀 **分离架构**: 提供独立的在线和离线包管理器接口 - 🔍 **自动检测**: 自动识别当前系统的在线和离线包管理器 - 💻 **Python 3.5+ 兼容**: 支持Python 3.5及更高版本 - 📦 **在线包管理**: 支持apt、yum、dnf、apk等在线包管理器,支持更新和升级操作 - 📁 **离线包管理**: 支持dpkg、rpm等离线包管理器,专注于本地包管理 - 🛡️ **错误处理**: 完善的错误处理和异常管理 - 🧪 **完整测试**: 全面的单元测试覆盖 ## 📊 项目统计
| 统计项 | 数据 | |--------|------| | **PyPI 项目** | [plpm_liumou_Stable](https://pypi.org/project/plpm_liumou_Stable) | | **Gitee 项目** | [liumou_site/plpm](https://gitee.com/liumou_site/plpm) | | **最新版本** | [![PyPI Version](https://img.shields.io/pypi/v/plpm_liumou_Stable.svg)](https://pypi.org/project/plpm_liumou_Stable) | | **下载量** | [![PyPI Downloads](https://img.shields.io/pypi/dm/plpm_liumou_Stable.svg)](https://pypi.org/project/plpm_liumou_Stable) | | **Python 版本** | 3.5+ | | **许可证** | MIT | | **平台** | Linux | | **作者邮箱** | liumou.site@qq.com |
## 📦 安装 ### 从PyPI安装 ```bash pip install plpm_liumou_Stable ``` #### 使用国内镜像加速(推荐) 使用清华大学镜像源加速下载: ```bash pip install plpm_liumou_Stable -i https://pypi.tuna.tsinghua.edu.cn/simple/ ``` ### 升级到最新版本 当有新版本发布时,可以使用以下命令升级到最新版本: ```bash pip install --upgrade plpm_liumou_Stable ``` #### 使用国内镜像升级 ```bash pip install --upgrade plpm_liumou_Stable -i https://pypi.tuna.tsinghua.edu.cn/simple/ ``` ### 卸载包 如果需要卸载plpm_liumou_Stable包,可以使用以下命令: ```bash pip uninstall plpm_liumou_Stable ``` ## 🚀 快速开始 ### 基本使用 #### 使用在线包管理器 ```python from plpm import OnlinePackageManager # 创建在线包管理器实例(自动检测系统在线包管理器) manager = OnlinePackageManager() # 检查是否有可用的在线包管理器 if manager.is_manager_available(): print(f"检测到在线包管理器: {manager.get_manager_name()}") # 更新包列表 manager.update() # 搜索包 packages = manager.search("python") print(f"找到 {len(packages)} 个相关包") # 列出已安装的包 installed = manager.list_installed() print(f"已安装 {len(installed)} 个包") # 检查特定包是否已安装 if manager.installed("python3"): print("python3 已安装") else: print("python3 未安装") # 系统升级 manager.upgrade() else: print("未检测到可用的在线包管理器") ``` #### 使用离线包管理器 ```python from plpm import OfflinePackageManager # 创建离线包管理器实例(自动检测系统离线包管理器) manager = OfflinePackageManager() # 检查是否有可用的离线包管理器 if manager.is_manager_available(): print(f"检测到离线包管理器: {manager.get_manager_name()}") # 搜索包 packages = manager.search("python") print(f"找到 {len(packages)} 个相关包") # 列出已安装的包 installed = manager.list_installed() print(f"已安装 {len(installed)} 个包") # 检查特定包是否已安装 if manager.installed("python3"): print("python3 已安装") else: print("python3 未安装") # 注意:离线包管理器不支持update和upgrade操作 print("离线包管理器不支持系统更新和升级操作") else: print("未检测到可用的离线包管理器") ``` ### 使用特定包管理器 ```python from plpm import get_package_manager # 获取特定的包管理器 apt_manager = get_package_manager(manager_name='apt') if apt_manager and apt_manager.is_available(): # 安装包 apt_manager.install(['curl', 'wget']) # 获取包信息 info = apt_manager.info('python3') print(info) ``` ### 列出可用的包管理器 ```python from plpm import list_available_managers # 列出系统中可用的包管理器 available = list_available_managers() print(f"可用的包管理器: {available}") ``` ## 📚 API 参考 ### OnlinePackageManager 类 专门管理在线包管理器(apt、yum、dnf、apk),支持软件安装、更新、升级等操作。 #### 构造函数 ```python OnlinePackageManager(sudo=False, preferred_manager=None) ``` - `sudo`: 是否使用sudo执行特权操作(默认False) - `preferred_manager`: 优先使用的在线包管理器名称('apt', 'yum', 'dnf', 'apk') #### 主要方法 | 方法 | 描述 | 返回值 | |------|------|--------| | `install(packages)` | 安装包 | bool | | `remove(packages)` | 移除包 | bool | | `update()` | 更新包列表 | bool | | `upgrade(packages=None)` | 升级包 | bool | | `search(pattern)` | 搜索包 | list | | `info(package)` | 获取包信息 | dict | | `list_installed()` | 列出已安装的包 | list | | `installed(package)` | 检查指定包是否已安装 | bool | | `clean_cache()` | 清理包缓存 | bool | | `autoremove()` | 自动移除不需要的包 | bool | ### OfflinePackageManager 类 专门管理离线包管理器(dpkg、rpm),支持软件安装、移除、查询等操作。 #### 构造函数 ```python OfflinePackageManager(sudo=False, preferred_manager=None) ``` - `sudo`: 是否使用sudo执行特权操作(默认False) - `preferred_manager`: 优先使用的离线包管理器名称('dpkg', 'rpm') #### 主要方法 | 方法 | 描述 | 返回值 | |------|------|--------| | `install(packages)` | 安装包 | bool | | `remove(packages)` | 移除包 | bool | | `search(pattern)` | 搜索包 | list | | `info(package)` | 获取包信息 | dict | | `list_installed()` | 列出已安装的包 | list | | `installed(package)` | 检查指定包是否已安装 | bool | | `verify(package)` | 验证包完整性 | bool | | `install_from_file(file_path)` | 从本地文件安装包 | bool | **注意**: 离线包管理器不支持 `update()` 和 `upgrade()` 方法,因为这些操作需要网络连接。 ### 工具函数 - `get_package_manager(sudo=False, manager_name=None)`: 获取特定包管理器实例 - `list_available_managers()`: 列出可用的包管理器 - `detect_online_package_manager()`: 自动检测在线包管理器 - `detect_offline_package_manager()`: 自动检测离线包管理器 ## 🛠️ 支持的包管理器 ### 在线包管理器 | 管理器 | 系统 | 命令 | 特点 | |--------|------|------|------| | **AptManager** | Debian/Ubuntu | apt-get, apt-cache | 依赖关系处理优秀,用户友好 | | **YumManager** | CentOS/RHEL | yum | 企业级稳定,自动依赖解决 | | **DnfManager** | Fedora | dnf | YUM现代化替代,性能更好 | | **ApkManager** | Alpine Linux | apk | 轻量级,适合容器环境 | ### 离线包管理器 | 管理器 | 系统 | 命令 | 特点 | |--------|------|------|------| | **DpkgManager** | Debian/Ubuntu | dpkg | 底层包管理,不处理依赖 | | **RpmManager** | Red Hat | rpm | 底层包管理,企业级标准 | ### 其他常见Linux包管理器 | 管理器 | 系统 | 类型 | 特点 | |--------|------|------|------| | **Pacman** | Arch Linux/Manjaro | 在线 | 简单高效,滚动更新 | | **Zypper** | openSUSE/SUSE | 在线 | 企业级功能,稳定可靠 | | **Portage** | Gentoo Linux | 源码编译 | 高度定制,性能优化 | | **Snap** | 跨发行版 | 容器化 | 沙盒安全,应用隔离 | | **Flatpak** | 跨发行版 | 容器化 | 现代应用分发标准 | | **Homebrew** | Linux/macOS | 用户级 | 无需root权限 | ### 包管理器分类总结 | 分类 | 包管理器 | 主要用途 | |------|----------|----------| | **传统在线包管理** | APT, YUM, DNF, APK | 系统级软件安装和更新 | | **底层包管理** | DPKG, RPM | 基础包安装和查询 | | **滚动更新** | Pacman | 最新软件体验 | | **企业级** | Zypper | 商业环境支持 | | **源码编译** | Portage | 高度定制化 | | **现代应用分发** | Snap, Flatpak | 跨发行版应用 | | **用户级管理** | Homebrew | 开发工具管理 | ## 💡 示例 ### 批量安装软件包 ```python from plpm import UnifiedPackageManager manager = UnifiedPackageManager() if manager.is_manager_available(): # 批量安装开发工具 packages = ['git', 'vim', 'curl', 'wget'] if manager.install(packages): print("软件包安装成功") else: print("软件包安装失败") ``` ### 系统维护任务 ```python from plpm import UnifiedPackageManager manager = UnifiedPackageManager(sudo=True) if manager.is_manager_available(): # 更新系统 manager.update() manager.upgrade() # 清理缓存 manager.clean_cache() print("系统维护完成") ``` ### 包信息查询 ```python from plpm import UnifiedPackageManager manager = UnifiedPackageManager() if manager.is_manager_available(): # 搜索Python相关包 python_packages = manager.search("python") for pkg in python_packages[:5]: # 显示前5个结果 info = manager.info(pkg['name']) print(f"包名: {pkg['name']}") print(f"版本: {pkg.get('version', 'N/A')}") print(f"描述: {pkg.get('description', 'N/A')}") print("-" * 50) ``` ## 🏗️ 项目结构 ``` plpm_liumou_Stable/ ├── src/plpm/ │ ├── __init__.py # 包入口和主要接口 │ ├── core.py # 核心抽象类和基础功能 │ ├── online/ # 在线包管理器实现 │ │ ├── __init__.py │ │ ├── apt.py # apt包管理器 │ │ ├── yum.py # yum包管理器 │ │ ├── dnf.py # dnf包管理器 │ │ └── apk.py # apk包管理器 │ ├── offline/ # 离线包管理器实现 │ │ ├── __init__.py │ │ ├── dpkg.py # dpkg包管理器 │ │ └── rpm.py # rpm包管理器 │ └── unified.py # 在线和离线包管理器接口 ├── tests/ # 测试文件 │ ├── __init__.py │ ├── test_core.py # 核心功能测试 │ └── test_unified.py # 在线和离线接口测试 ├── pyproject.toml # 项目配置 └── README.md # 项目文档 ``` ## 🧪 测试 ### 运行测试 ```bash python3 -m unittest discover tests/ -v ``` ### 测试覆盖率 项目包含完整的单元测试,确保代码质量和功能稳定性。 ## 🔧 开发 ### 代码规范 项目使用以下工具进行代码质量检查: ```bash # 代码格式化 python3 -m black src/ python3 -m isort src/ # 类型检查 python3 -m mypy src/ # 代码检查 python3 -m flake8 src/ ``` ### 贡献指南 1. Fork 本仓库 2. 新建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 📊 兼容性 | 组件 | 版本/支持 | |------|-----------| | **Python** | 3.5+ | | **操作系统** | Linux(主流发行版) | | **包管理器** | apt, yum, dnf, dpkg, rpm | ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。 ## 👥 作者 **liumou** - 邮箱: [联系作者](liumou.site@qq.com) - Gitee: [@liumou](https://gitee.com/liumou_site) ## 🙏 致谢 感谢所有为这个项目做出贡献的开发者! ## 📈 版本历史 - **v1.0.0** (当前版本) - 初始版本发布 - 支持在线包管理器 (apt, yum, dnf) - 支持离线包管理器 (dpkg, rpm) - 自动检测和统一接口 - 完整的测试覆盖 ---
**如果这个项目对你有帮助,请给它一个 ⭐️!**