簡體   English   中英

使用apt_pkg以程序方式安裝debian軟件包時出錯

[英]Error while installing debian packages programmitically using apt_pkg

我已經構建了一些debian軟件包並將它們放在我的主機上。 我想在python腳本中安裝這些包。 所以我用apt_pkg編寫了install函數,如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import apt 
import apt_pkg
import sys

class my_pkg_manager:

    def __init__(self):

        apt_pkg.init()
        self.cache = apt_pkg.Cache()
        self.sources = apt_pkg.SourceList()
        self.pkg_records = apt_pkg.PackageRecords(self.cache)
        self.depcache = apt_pkg.DepCache(self.cache)
        self.pkg_manager = apt_pkg.PackageManager(self.depcache)
        self.fetcher = apt_pkg.Acquire()


    def find_my_package(self):

        for pkg in self.cache.packages:
            if len(pkg.version_list)>0:
                package_site = pkg.version_list[0].file_list[0][0].site
                if package_site == 'my_host_address.com':
            if pkg.name == 'my_pkg_name':
            return pkg
        return None


    def install_package(self, pkg):

        self.depcache.mark_install(pkg)
        self.sources.read_main_list()
        self.pkg_manager.get_archives(self.fetcher, self.sources,
                                      self.pkg_records)
        log_file = open('install_log','w')
        res = self.pkg_manager.do_install(log_file.fileno())

        if res == self.pkg_manager.RESULT_COMPLETED:
            print('result completed!')
        elif res == self.pkg_manager.RESULT_INCOMPLETE:
            print('result incomplete!')
        else:
            print('result failed!')


    def run(self):
        my_pkg = self.find_my_package()
        if my_pkg != None:
            self.install_package(my_pkg)
        else:
            print('Can't find package!') 


if __name__ == '__main__':

    my_package_manager =  my_pkg_manager()
    my_package_manager.run()

如果我使用apt-get install ,將安裝包沒有任何問題,但是使用此腳本會發生以下錯誤:

res = self.pkg_manager.do_install(log_file.fileno())apt_pkg.Error:E:內部錯誤,要安裝的路徑名不是絕對的'myPackage_1.0.0_all.deb'

我已將.deb文件和Packages.gz放在我的主機中名為'debian'的目錄中,並將以下行添加到我的sources.list中:

deb http://my_host_address.com debian /

我不知道我的腳本有什么問題?

deb http://my_host_address.com debian /

應該:

deb http://my_host_address.com /debian/

絕對路徑需要以斜杠開頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM