Skip to main content

A unified package management interface for Linux distributions

Project description

plpm_liumou_Stable

PyPI Version PyPI Downloads Python Version License Platform

plpm_liumou_Stable - 分离的Linux包管理接口

一个为Linux系统提供分离包管理接口的Python库,分别支持在线和离线包管理器。

English | 中文

🌟 特性

  • 🚀 分离架构: 提供独立的在线和离线包管理器接口
  • 🔍 自动检测: 自动识别当前系统的在线和离线包管理器
  • 💻 Python 3.5+ 兼容: 支持Python 3.5及更高版本
  • 📦 在线包管理: 支持apt、yum、dnf、apk等在线包管理器,支持更新和升级操作
  • 📁 离线包管理: 支持dpkg、rpm等离线包管理器,专注于本地包管理
  • 🛡️ 错误处理: 完善的错误处理和异常管理
  • 🧪 完整测试: 全面的单元测试覆盖

📊 项目统计

统计项 数据
PyPI 项目 plpm_liumou_Stable
Gitee 项目 liumou_site/plpm
最新版本 PyPI Version
下载量 PyPI Downloads
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/

贡献指南

  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 文件。

👥 作者

liumou

🙏 致谢

感谢所有为这个项目做出贡献的开发者!

📈 版本历史

  • v1.0.0 (当前版本)
    • 初始版本发布
    • 支持在线包管理器 (apt, yum, dnf)
    • 支持离线包管理器 (dpkg, rpm)
    • 自动检测和统一接口
    • 完整的测试覆盖

如果这个项目对你有帮助,请给它一个 ⭐️!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plpm_liumou_stable-1.0.2.tar.gz (22.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plpm_liumou_stable-1.0.2-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

File details

Details for the file plpm_liumou_stable-1.0.2.tar.gz.

File metadata

  • Download URL: plpm_liumou_stable-1.0.2.tar.gz
  • Upload date:
  • Size: 22.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for plpm_liumou_stable-1.0.2.tar.gz
Algorithm Hash digest
SHA256 d81ef9ebf5c04b042d88754ba4dc22ff0041053d887ab4c35d6872f02600671b
MD5 e5668019c914580e64931bc072c2c774
BLAKE2b-256 3a42e8559d72638b06b65f9b836a3185721715bc59b3910bb6386d3f316ca4af

See more details on using hashes here.

File details

Details for the file plpm_liumou_stable-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for plpm_liumou_stable-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0c5938f9333a97e080a2c2c3491d109b76f1995958542aff95a5314335842fd3
MD5 584c87b1338f00b191c14db6ae0d9abc
BLAKE2b-256 58a3b83da7d015409f17ad35396122f360ea640de77bceced807efa93b196195

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page