[Share Experiences] 删除指定目录下的旧版deb包——由GPT4全部写成
Tofloor
poster avatar
神末shenmo
Moderator
Spark-App
2023-03-20 21:10
Author

我是一个蹩脚的coder,只会简单的bash

从ChatGPT开始,我就在尝试让它编码

最近的需求是星火仓库的审核程序不会处理旧版的软件包,导致旧版包越积越多

为了仓库瘦身,我们需要一个脚本来自动删除旧版的软件包

我将相关需求告知了GPT4,它直接给了我可以使用的脚本

人工智能确实大大提升了生产力,让我这样的蹩脚业余coder也可以轻松的实现各种功能

#!/usr/bin/env python3

import os
import subprocess
import sys

# 定义要搜索deb包的目录
DEB_DIR=sys.argv[1]
print(DEB_DIR)
# 定义一个字典来存储包名和版本号
packages = {}

# 循环遍历目录中的所有deb包
for root, dirs, files in os.walk(DEB_DIR):
    for file in files:
        if file.endswith(".deb"):
            deb_package = os.path.join(root, file)
            # 获取包名和版本号
            package_name = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Package"]).decode().strip()
            package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()

            # 检查包名是否已经存在于列表中
            if package_name in packages:
                # 如果包版本更高,则更新版本号
                if subprocess.call(["dpkg", "--compare-versions", package_version, "gt", packages[package_name]]) == 0:
                    packages[package_name] = package_version
            else:
                # 如果包名不存在,则将其添加到列表中
                packages[package_name] = package_version

# 循环遍历包列表并删除任何旧版本
for package_name in packages:
    for root, dirs, files in os.walk(DEB_DIR):
        for file in files:
            if file.startswith(package_name) and file.endswith(".deb"):
                deb_package = os.path.join(root, file)
                package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()
                if package_version != packages[package_name]:
                    print(f"{package_name} {package_version} {deb_package} 已删除")
                    os.remove(deb_package)

Reply Favorite View the author
All Replies
2 / 2
To page
enforcee
deepin
2023-03-21 07:05
#21
神末shenmo

我都有备份的,问题不大

现在好像这个东西会跑到天长地久,很奇怪

for package_name in packages:这个有删掉吗?我觉得他是没用的

Reply View the author
神末shenmo
Moderator
Spark-App
2023-03-21 07:19
#22
enforcee

for package_name in packages:这个有删掉吗?我觉得他是没用的

https://gitee.com/deepin-community-store/repo_auto_update_script/blob/master/repo-maintain/delete-old-deb.py

发现要跑四次

我也不知道为啥,反正现在是能用,但是跑的特别慢

蹲一个大神了.....

Reply View the author
enforcee
deepin
2023-03-21 07:33
#23
神末shenmo

https://gitee.com/deepin-community-store/repo_auto_update_script/blob/master/repo-maintain/delete-old-deb.py

发现要跑四次

我也不知道为啥,反正现在是能用,但是跑的特别慢

蹲一个大神了.....

前半段用时和后半段相比怎么样

confused

Reply View the author
waittingsummer
deepin
2023-03-21 23:36
#24
wlly-lzh

听说国内百度也搞了个类似的,好像叫什么“文心”什么的,大家有没有试过的来分享一下?

排队中

前面100W人

Reply View the author
liuyongjin1987
deepin
2023-03-22 15:48
#25
神末shenmo

我都有备份的,问题不大

现在好像这个东西会跑到天长地久,很奇怪

大佬,能否把remotedesktopmanager商业版汉化一下?

Reply View the author
2 / 2
To page