plpm_liumou_Stable
🌟 特性
- 🚀 分离架构: 提供独立的在线和离线包管理器接口
- 🔍 自动检测: 自动识别当前系统的在线和离线包管理器
- 💻 Python 3.5+ 兼容: 支持Python 3.5及更高版本
- 📦 在线包管理: 支持apt、yum、dnf、apk等在线包管理器,支持更新和升级操作
- 📁 离线包管理: 支持dpkg、rpm等离线包管理器,专注于本地包管理
- 🛡️ 错误处理: 完善的错误处理和异常管理
- 🧪 完整测试: 全面的单元测试覆盖
📊 项目统计
| 统计项 | 数据 |
|---|---|
| PyPI 项目 | plpm_liumou_Stable |
| Gitee 项目 | liumou_site/plpm |
| 最新版本 | |
| 下载量 | |
| Python 版本 | 3.5+ |
| 许可证 | MIT |
| 平台 | Linux |
| 作者邮箱 | liumou.site@qq.com |
📦 安装
从PyPI安装
pip install plpm_liumou_Stable
使用国内镜像加速(推荐)
使用清华大学镜像源加速下载:
pip install plpm_liumou_Stable -i https://pypi.tuna.tsinghua.edu.cn/simple/
升级到最新版本
当有新版本发布时,可以使用以下命令升级到最新版本:
pip install --upgrade plpm_liumou_Stable
使用国内镜像升级
pip install --upgrade plpm_liumou_Stable -i https://pypi.tuna.tsinghua.edu.cn/simple/
卸载包
如果需要卸载plpm_liumou_Stable包,可以使用以下命令:
pip uninstall plpm_liumou_Stable
🚀 快速开始
基本使用
使用在线包管理器
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("未检测到可用的在线包管理器")
使用离线包管理器
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("未检测到可用的离线包管理器")
使用特定包管理器
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)
列出可用的包管理器
from plpm import list_available_managers
# 列出系统中可用的包管理器
available = list_available_managers()
print(f"可用的包管理器: {available}")
📚 API 参考
OnlinePackageManager 类
专门管理在线包管理器(apt、yum、dnf、apk),支持软件安装、更新、升级等操作。
构造函数
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),支持软件安装、移除、查询等操作。
构造函数
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 | 开发工具管理 |
💡 示例
批量安装软件包
from plpm import UnifiedPackageManager
manager = UnifiedPackageManager()
if manager.is_manager_available():
# 批量安装开发工具
packages = ['git', 'vim', 'curl', 'wget']
if manager.install(packages):
print("软件包安装成功")
else:
print("软件包安装失败")
系统维护任务
from plpm import UnifiedPackageManager
manager = UnifiedPackageManager(sudo=True)
if manager.is_manager_available():
# 更新系统
manager.update()
manager.upgrade()
# 清理缓存
manager.clean_cache()
print("系统维护完成")
包信息查询
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 # 项目文档
🧪 测试
运行测试
python3 -m unittest discover tests/ -v
测试覆盖率
项目包含完整的单元测试,确保代码质量和功能稳定性。
🔧 开发
代码规范
项目使用以下工具进行代码质量检查:
# 代码格式化
python3 -m black src/
python3 -m isort src/
# 类型检查
python3 -m mypy src/
# 代码检查
python3 -m flake8 src/
贡献指南
- Fork 本仓库
- 新建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
📊 兼容性
| 组件 | 版本/支持 |
|---|---|
| Python | 3.5+ |
| 操作系统 | Linux(主流发行版) |
| 包管理器 | apt, yum, dnf, dpkg, rpm |
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
👥 作者
liumou
🙏 致谢
感谢所有为这个项目做出贡献的开发者!
📈 版本历史
- v1.0.0 (当前版本)
- 初始版本发布
- 支持在线包管理器 (apt, yum, dnf)
- 支持离线包管理器 (dpkg, rpm)
- 自动检测和统一接口
- 完整的测试覆盖
如果这个项目对你有帮助,请给它一个 ⭐️!
Metadata
Release files for plpm-liumou-Stable 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| plpm_liumou_stable-1.0.2.tar.gz | 22.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plpm_liumou_stable-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.0 kB
Release files / plpm_liumou_stable-1.0.2.tar.gz
| Download URL | plpm_liumou_stable-1.0.2.tar.gz |
|---|---|
| Size | 22.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d81ef9ebf5c04b042d88754ba4dc22ff0041053d887ab4c35d6872f02600671b
|
|
BLAKE2b-256 checksum How to use checksums |
3a42e8559d72638b06b65f9b836a3185721715bc59b3910bb6386d3f316ca4af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|
Release files / plpm_liumou_stable-1.0.2-py3-none-any.whl
| Download URL | plpm_liumou_stable-1.0.2-py3-none-any.whl |
|---|---|
| Size | 29.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0c5938f9333a97e080a2c2c3491d109b76f1995958542aff95a5314335842fd3
|
|
BLAKE2b-256 checksum How to use checksums |
58a3b83da7d015409f17ad35396122f360ea640de77bceced807efa93b196195
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|