mirror of
https://github.com/Dichgrem/Dwrt-build.git
synced 2025-12-16 21:51:59 -05:00
feat:check_packages
This commit is contained in:
117
check_packages.py
Normal file
117
check_packages.py
Normal file
@@ -0,0 +1,117 @@
|
||||
import subprocess
|
||||
|
||||
# 要检查和安装的软件包列表
|
||||
packages = [
|
||||
"build-essential", # 基础构建工具包
|
||||
"clang", # LLVM C/C++ 编译器
|
||||
"flex", # 词法分析器生成器
|
||||
"bison", # 语法分析器生成器
|
||||
"g++", # GNU C++ 编译器
|
||||
"gawk", # GNU AWK 文本处理工具
|
||||
"gettext", # 国际化支持工具
|
||||
"git", # 版本控制系统
|
||||
"libncurses-dev", # ncurses 开发库(新版)
|
||||
"libssl-dev", # OpenSSL 开发库
|
||||
"python3", # Python 3 解释器
|
||||
"python3-dev", # Python 3 开发库
|
||||
"python3-setuptools", # Python 3 setuptools
|
||||
"rsync", # 文件同步工具
|
||||
"unzip", # 解压缩工具
|
||||
"zlib1g-dev", # zlib 压缩库开发包
|
||||
"file", # 文件类型识别工具
|
||||
"wget", # 网络下载工具
|
||||
"curl", # 网络传输工具
|
||||
# 压缩和解压工具
|
||||
"gzip", # Gzip 压缩工具
|
||||
"tar", # Tar 打包工具
|
||||
"zip", # Zip 压缩工具
|
||||
"xz-utils", # XZ 压缩工具
|
||||
"bzip2", # Bzip2 压缩工具
|
||||
"zstd", # Zstandard 压缩工具
|
||||
# 构建相关工具
|
||||
"make", # Make 构建工具
|
||||
"cmake", # CMake 构建系统
|
||||
"autoconf", # Autoconf 自动配置工具
|
||||
"automake", # Automake 构建工具
|
||||
"libtool", # Libtool 库工具
|
||||
"patch", # 补丁应用工具
|
||||
"diffutils", # 文件差异工具
|
||||
"findutils", # 文件查找工具
|
||||
"grep", # 文本搜索工具
|
||||
"sed", # 流编辑器
|
||||
# 文档和帮助工具
|
||||
"help2man", # 手册页生成工具
|
||||
"texinfo", # Texinfo 文档系统
|
||||
# 开发库
|
||||
"libelf-dev", # ELF 处理库
|
||||
"libfuse-dev", # FUSE 文件系统开发库
|
||||
"liblzma-dev", # LZMA 开发库
|
||||
"libxml2-dev", # XML2 开发库
|
||||
"libyaml-dev", # YAML 开发库
|
||||
"uuid-dev", # UUID 开发库
|
||||
"device-tree-compiler", # 设备树编译器
|
||||
"antlr3", # ANTLR3 解析器生成器
|
||||
"gperf", # GNU 完美哈希函数生成器
|
||||
# 网络和系统工具
|
||||
"time", # 时间测量工具
|
||||
"bc", # 任意精度计算器,内核 Makefile 中常用于数学计算
|
||||
"jq", # JSON 处理器
|
||||
"xxd", # 十六进制查看器
|
||||
"swig", # SWIG 接口生成器
|
||||
"upx-ucl", # UPX 压缩工具
|
||||
"ccache", # 编译缓存工具
|
||||
"ecj", # Eclipse Java 编译器
|
||||
"fastjar", # Fast JAR 工具
|
||||
"imagemagick", # ImageMagick 图像处理
|
||||
]
|
||||
|
||||
|
||||
def is_installed(pkg_name):
|
||||
"""检查软件包是否已安装"""
|
||||
try:
|
||||
subprocess.run(
|
||||
["dpkg", "-s", pkg_name],
|
||||
check=True,
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL,
|
||||
)
|
||||
return True
|
||||
except subprocess.CalledProcessError:
|
||||
return False
|
||||
|
||||
|
||||
def main():
|
||||
print("检查并安装缺失的软件包...")
|
||||
missing_packages = []
|
||||
|
||||
for pkg in packages:
|
||||
if is_installed(pkg):
|
||||
print(f"✅ 已安装:{pkg}")
|
||||
else:
|
||||
print(f"❌ 未安装:{pkg}")
|
||||
missing_packages.append(pkg)
|
||||
|
||||
if missing_packages:
|
||||
print("\n🔄 正在执行 apt-get update ...")
|
||||
try:
|
||||
subprocess.run(["sudo", "apt-get", "update"], check=True)
|
||||
except subprocess.CalledProcessError:
|
||||
print("❌ apt-get update 失败,请检查网络连接或源设置。")
|
||||
return
|
||||
|
||||
print("\n⬇️ 开始安装以下缺失的软件包:")
|
||||
print(" ".join(missing_packages))
|
||||
try:
|
||||
subprocess.run(
|
||||
["sudo", "apt-get", "install", "-y"] + missing_packages, check=True
|
||||
)
|
||||
except subprocess.CalledProcessError:
|
||||
print("❌ 安装部分软件包失败,请手动检查。")
|
||||
else:
|
||||
print("\n✅ 所有软件包已安装,无需操作。")
|
||||
|
||||
print("✅ 所有软件包检查完毕。")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user