A unified package management interface for Linux distributions
Project description
plpm_liumou_Stable
🌟 特性
- 🚀 分离架构: 提供独立的在线和离线包管理器接口
- 🔍 自动检测: 自动识别当前系统的在线和离线包管理器
- 💻 Python 3.5+ 兼容: 支持Python 3.5及更高版本
- 📦 在线包管理: 支持apt、yum、dnf、apk等在线包管理器,支持更新和升级操作
- 📁 离线包管理: 支持dpkg、rpm等离线包管理器,专注于本地包管理
- 🛡️ 错误处理: 完善的错误处理和异常管理
- 🧪 完整测试: 全面的单元测试覆盖
📦 安装
从PyPI安装
pip install 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 |
| ApkManager | Alpine Linux | apk |
离线包管理器
| 管理器 | 系统 | 命令 |
|---|---|---|
| DpkgManager | Debian/Ubuntu | dpkg |
| RpmManager | Red Hat | rpm |
💡 示例
批量安装软件包
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)
- 自动检测和统一接口
- 完整的测试覆盖
如果这个项目对你有帮助,请给它一个 ⭐️!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file plpm_liumou_stable-1.0.0.tar.gz.
File metadata
- Download URL: plpm_liumou_stable-1.0.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61889695643daf58392f8af1f962c1762daf0bb33f65e28c5ca702c6a12320d0
|
|
| MD5 |
35e4bfcd8cc7b88a3b3f30b209ae30c4
|
|
| BLAKE2b-256 |
3a2832bda7d6b452675ea43e5c162e1708e6bce8aee0c5b0d7107ac232542f5b
|
File details
Details for the file plpm_liumou_stable-1.0.0-py3-none-any.whl.
File metadata
- Download URL: plpm_liumou_stable-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38fc4c6e8ea5fc0454028fd6de5523a01af30c49ab5d70f7523861ba7826cc12
|
|
| MD5 |
b1fe344c7b5ce66a04b18a712c7ab9a2
|
|
| BLAKE2b-256 |
d7e9528d9f6c1fafd34dddce3cf2bfb6f189b82494dfd1b56ff0a1096df0552a
|