本文整理汇总了Python中apt.debfile.DebPackage.check方法的典型用法代码示例。如果您正苦于以下问题:Python DebPackage.check方法的具体用法?Python DebPackage.check怎么用?Python DebPackage.check使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类apt.debfile.DebPackage
的用法示例。
在下文中一共展示了DebPackage.check方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: build_debian_package
# 需要导入模块: from apt.debfile import DebPackage [as 别名]
# 或者: from apt.debfile.DebPackage import check [as 别名]
def build_debian_package(package_fetcher, package_name, apt_cache, rd_obj, levels=0, get_dependencies=False):
unstable_target_distros = { 'groovy': 'quantal', 'hydro': 'raring' }
target_ubuntu_distro = unstable_target_distros[rd_obj._rosdistro]
level_prefix = '--' * levels
print("%s> Building package %s" % (level_prefix, package_name))
deb_package_name = rd_obj.debianize_package_name(package_name)
deb_package_version = rd_obj.get_version(package_name, full_version=True) + target_ubuntu_distro
print("%s--> Checking if installed (%s, %s).." % (level_prefix, deb_package_name, deb_package_version)),
if deb_package_name in apt_cache:
installed = apt_cache[deb_package_name].installed
if installed is not None and installed.version == deb_package_version:
print("OK")
print("%s is installed already - remove the package if you want to re-install." % (package_name))
return True
print("missing!")
if get_dependencies:
dependencies = package_build_order([package_name], distro_name=rd_obj._rosdistro)
print("%s--> Checking Dependencies:" % (level_prefix))
for dep_pkg_name in dependencies:
if dep_pkg_name != package_name:
print("%s---- %s....." % (level_prefix, dep_pkg_name)),
debian_pkg_name = rd_obj.debianize_package_name(dep_pkg_name)
if debian_pkg_name in apt_cache and apt_cache[debian_pkg_name].installed is not None:
print(" OK! (installed version %s)" % apt_cache[debian_pkg_name].installed.version)
else:
print(" Needs build, building...")
build_debian_package(package_fetcher, dep_pkg_name, apt_cache, rd_obj, levels + 1)
print("%s<<-- Dependencies OKAY." % (level_prefix))
print("%s>>> Build debian package %s from repo %s" % (level_prefix, deb_package_name, package_fetcher.url(package_name)))
repo_path = package_fetcher.checkout_package(package_name)
client = GitClient(repo_path)
deb_package_tag = deb_package_name + '_' + rd_obj.get_version(package_name, full_version=True) + '_' + target_ubuntu_distro
bloom_package_version = 'debian/' + deb_package_tag
client.update(bloom_package_version)
installed_builddeps = install_debian_build_dependencies(repo_path)
if not installed_builddeps:
raise RosGitBuildError("%s!!! Error building %s from %s: Can't install build-dependencies!" % (level_prefix, deb_package_name, package_fetcher.url(package_name)))
(returncode, result, message) = run_shell_command('debuild clean', repo_path, shell=True, show_stdout=False)
if returncode != 0:
raise RosGitBuildError("%s!!! Error building %s from %s: %s \n %s" % (level_prefix, deb_package_name, package_fetcher.url(package_name), 'debuild clean', message))
(returncode, result, message) = run_shell_command('debuild binary', repo_path, shell=True, show_stdout=False)
if returncode != 0:
raise RosGitBuildError("%s!!! Error building %s from %s: %s \n %s" % (level_prefix, deb_package_name, package_fetcher.url(package_name), 'debuild binary', message))
deb_files = glob.glob(os.path.join(repo_path, '..', '%s*.deb' % (deb_package_name + '_' + rd_obj.get_version(package_name, full_version=True))))
if len(deb_files) > 0:
# install the deb
from apt.debfile import DebPackage
deb_pkg = DebPackage(deb_files[0])
deb_pkg.check()
packages_needed = ' '.join(deb_pkg.missing_deps)
(returncode, result, message) = run_shell_command('sudo apt-get -y install %s' % packages_needed, shell=True, show_stdout=True)
if returncode != 0:
raise RosGitBuildError("%s!!! Error building %s: can't install dependent packages %s" % (level_prefix, deb_package_name, packages_needed))
(returncode, result, message) = run_shell_command('sudo dpkg -i %s' % deb_files[0], shell=True, show_stdout=True)
if returncode != 0:
raise RosGitBuildError("%s!!! Error building %s from %s: %s \n %s" % (level_prefix, deb_package_name, package_fetcher.url(package_name), 'debuild binary', message))
else:
raise RosGitBuildError("%s!!! Can't find a built debian package for %s after the build!" % (level_prefix, deb_package_name))
示例2: DebFile
# 需要导入模块: from apt.debfile import DebPackage [as 别名]
# 或者: from apt.debfile.DebPackage import check [as 别名]
class DebFile():
# the deb file which user selected
debfile = ''
path = ''
name = ''
version = ''
installedsize = -1
description = ''
def __init__(self, path):
self.debfile = DebPackage(path)
self.get_deb_info()
self.path = path
# check if the deb file is installable
def is_installable(self):
return self.debfile.check()
# get missing dependencies
def get_missing_deps(self):
return self.debfile.missing_deps
# get deb file name, version, installedsize, description
def get_deb_info(self):
self.name = self.debfile._sections["Package"]
self.version = self.debfile._sections["Version"]
self.installedsize = int(self.debfile._sections["Installed-Size"])
self.description = self.debfile._sections["Description"]
# install the deb file
def install_deb(self):
self.debfile.install(AptProcess(self.debfile.pkgname))
示例3: install_deps
# 需要导入模块: from apt.debfile import DebPackage [as 别名]
# 或者: from apt.debfile.DebPackage import check [as 别名]
def install_deps(self, path, kwargs=None):
debfile = DebPackage(path)
pkgName = debfile._sections["Package"]
debfile.check()
deps = debfile.missing_deps
if(len(deps) > 0):
self.cache.open()
for pkgn in deps:
pkg = self.get_pkg_by_name(pkgn)
pkg.mark_install()
try:
self.cache.commit(FetchProcess(self.dbus_service, pkgName, AppActions.INSTALLDEPS), AptProcess(self.dbus_service, pkgName, AppActions.INSTALLDEPS))
except Exception, e:
print e
print "install err"
示例4: main
# 需要导入模块: from apt.debfile import DebPackage [as 别名]
# 或者: from apt.debfile.DebPackage import check [as 别名]
def main(package):
cache = apt.Cache()
debfile = DebPackage(package, cache=cache)
if debfile.check():
show_dependencies(debfile)
prompt = "Do you want to continue [Y/n]? "
choice = input(prompt)
if "y" == choice.lower() or not choice:
try:
cache.commit(apt.progress.text.AcquireProgress())
except apt.cache.FetchFailedException as e:
print(e)
else:
print("Abort.")
示例5: AppDetailsDebFile
# 需要导入模块: from apt.debfile import DebPackage [as 别名]
# 或者: from apt.debfile.DebPackage import check [as 别名]
class AppDetailsDebFile(AppDetails):
def __init__(self, db, doc=None, application=None):
super(AppDetailsDebFile, self).__init__(db, doc, application)
if doc:
raise ValueError("doc must be None for deb files")
try:
with ExecutionTime("create DebPackage"):
# Cache() used to be faster here than self._cache._cache
# but that is no longer the case with the latest apt
self._deb = DebPackage(self._app.request, self._cache._cache)
except:
self._deb = None
self._pkg = None
if not os.path.exists(self._app.request):
self._error = _("Not found")
self._error_not_found = utf8(_(u"The file \u201c%s\u201d "
"does not exist.")) % utf8(self._app.request)
else:
mimetype = guess_type(self._app.request)
if mimetype[0] != "application/x-debian-package":
self._error = _("Not found")
self._error_not_found = utf8(_(u"The file \u201c%s\u201d "
"is not a software package.")) % utf8(
self._app.request)
else:
# deb files which are corrupt
self._error = _("Internal Error")
self._error_not_found = utf8(_(u"The file \u201c%s\u201d "
"could not be opened.")) % utf8(self._app.request)
return
if self.pkgname and self.pkgname != self._app.pkgname:
# this happens when the deb file has a quirky file name
self._app.pkgname = self.pkgname
# load pkg cache
self._pkg = None
if (self._app.pkgname in self._cache and
self._cache[self._app.pkgname].candidate):
self._pkg = self._cache[self._app.pkgname]
# load xapian document
self._doc = None
try:
self._doc = self._db.get_xapian_document(
self._app.appname, self._app.pkgname)
except:
pass
# check deb and set failure state on error
with ExecutionTime("AppDetailsDebFile._deb.check()"):
if not self._deb.check():
self._error = self._deb._failure_string.strip()
@property
def description(self):
if self._deb:
description = self._deb._sections["Description"]
s = ('\n').join(description.split('\n')[1:]).replace(" .\n", "")
return utf8(s)
return ""
@property
def maintenance_status(self):
pass
@property
def pkgname(self):
if self._deb:
return self._deb._sections["Package"]
@property
def pkg_state(self):
if self._error:
if self._error_not_found:
return PkgStates.NOT_FOUND
else:
return PkgStates.ERROR
if self._deb:
deb_state = self._deb.compare_to_version_in_cache()
if deb_state == DebPackage.VERSION_NONE:
return PkgStates.UNINSTALLED
elif deb_state == DebPackage.VERSION_OUTDATED:
if self._cache[self.pkgname].installed:
return PkgStates.INSTALLED
else:
return PkgStates.UNINSTALLED
elif deb_state == DebPackage.VERSION_SAME:
return PkgStates.REINSTALLABLE
elif deb_state == DebPackage.VERSION_NEWER:
if self._cache[self.pkgname].installed:
return PkgStates.UPGRADABLE
else:
return PkgStates.UNINSTALLED
@property
def summary(self):
if self._deb:
description = self._deb._sections["Description"]
#.........这里部分代码省略.........
示例6: DebFile
# 需要导入模块: from apt.debfile import DebPackage [as 别名]
# 或者: from apt.debfile.DebPackage import check [as 别名]
class DebFile(AbstractPackageFile):
def __init__(self, deb_file):
AbstractPackageFile.__init__(self, deb_file)
self.package = DebPackage(deb_file, CACHE)
self.package.check()
def is_source(self):
try:
self.package['Source']
except KeyError as exception:
if self.arch == 'source':
return True
else:
return False
return True
@property
def requires(self):
return self.package.depends
@property
def arch(self):
return self.package['Architecture']
@property
def name(self):
return self.package.pkgname
@property
def license(self):
try:
return self.package['License']
except KeyError as _:
pass
@property
def conflicts(self):
return self.package.conflicts
@property
def version(self):
return self.package['Version']
@property
def summary(self):
return self.description
@property
def upgradable(self):
return super(DebFile, self).upgradable()
@property
def provides(self):
return self.package.provides
@property
def platform(self):
return None
@property
def description(self):
return self.package['Description']
@property
def installed(self):
return self.package.compare_to_version_in_cache() \
!= DebPackage.VERSION_NONE
@property
def release(self):
try:
return self.package['Distribution']
except KeyError as _:
return 'unstable'