简体   繁体   English

通过python脚本安装.rpm或.msi文件

[英]install .rpm or .msi file through python script

I'm a newbie to python. 我是python的新手。 I have a python script to download a rpm file from S3 bucket. 我有一个python脚本可以从S3存储桶下载rpm文件。

import platform
import boto3
import botocore

BUCKET_NAME = 'tempdownload'
KEY = 'temp.rpm' # packaged using golang

platformName = platform.system()
s3 = boto3.resource('s3')

print(platformName)

if platformName == 'Linux':
    try:
        bucket = s3.Bucket(BUCKET_NAME)
        bucket.download_file(KEY, 'temp.rpm')
    except botocore.exceptions.ClientError as e:
        if e.response['Error']['Code'] == "404":
            print("The object does not exist.")
        else:
            raise
else:
    print("not valid operating system")

I want to add a script in the same file to install the downloaded rpm file or msi package for windows. 我想在同一文件中添加脚本,以为Windows安装下载的rpm文件或msi软件包。 I tried searching online but didn't get any information. 我尝试在线搜索,但未获得任何信息。 Would appreciate if anyone provide some pointers. 如果有人提供一些指针,将不胜感激。

Thanks! 谢谢!

You can install it directly from Python using rpm bindings. 您可以使用rpm绑定直接从Python安装它。 See: https://docs-old.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch16s06.html 请参阅: https//docs-old.fedoraproject.org/zh-CN/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch16s06.html

But rather, you should not call rpm directly, but rather call Yum or DNF or its python bindings. 但是,您不应直接调用rpm,而应调用Yum或DNF或其python绑定。

You have to call system command - rpm -Ivh yourpackage.rpm 您必须调用系统命令rpm -Ivh yourpackage.rpm

import subprocess
package_path = '/home/mypackage.rpm'
command = ['rpm', '-Ivh', package_path]
p = subprocess.Popen(command)
p.wait()
if p.returncode == 0:
    print("OK")
else:
    print("Something went wrong")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM