示例#1
0
 def __init__(self):
     '''
     Guess the target package management system and assign a agent to it
     '''
     distro = platform.linux_distribution()
     if 'Ubuntu' in distro or 'Debian' in distro:
         self.agent = EastwindPkgMangerAPT()
     elif 'Fedora' in distro or 'centos' in distro:
         self.agent = EastwindPkgMangerYUM()
     elif 'Arch' in distro:
         self.agent = EastwindPkgMangerPacman()
示例#2
0
class _EastwindPkgManager:
    def __init__(self):
        '''
        Guess the target package management system and assign a agent to it
        '''
        distro = platform.linux_distribution()
        if 'Ubuntu' in distro or 'Debian' in distro:
            self.agent = EastwindPkgMangerAPT()
        elif 'Fedora' in distro or 'centos' in distro:
            self.agent = EastwindPkgMangerYUM()
        elif 'Arch' in distro:
            self.agent = EastwindPkgMangerPacman()

    @utils.need_root_access
    def update(self):
        '''
        Update package list
        '''
        print 'Updating package list...'
        return self.agent.update()

    @utils.need_root_access
    def upgrade(self):
        '''
        Upgrade packages
        '''
        print 'Upgrading packages...'
        return self.agent.upgrade()

    @utils.need_root_access
    def install(self, pkgs):
        '''
        Install packages
        pkgs: a list containning packages to install
        '''
        print 'Installing %s...' % (' '.join(pkgs))
        return self.agent.install(pkgs)

    @utils.need_root_access
    def install_interactive(self, pkgs):
        '''
        Install interactively
        pkgs: a list containning packages to install, pkgs will be add to
              Eastwind database for further manipulation
        '''
        return self.agent.install_interactive(pkgs)

    @utils.need_root_access
    def purge(self, pkgs):
        '''
        Remove pkgs
        pkgs: a list containning packages to remove, also remove package
              configurations
        '''
        print 'Purging %s...' % (' '.join(pkgs))
        return self.agent.purge(pkgs)

    @utils.need_root_access
    def purge_interactive(self, pkgs):
        '''
        Purge interactively
        pkgs: a list containning packages to install, pkgs will be remove from
              Eastwind database
        '''
        return self.agent.purge_interactive(pkgs)

    @utils.need_root_access
    def add_external_sources(self, sources):
        '''
        Add external sources like PPA for Debian or AUR for Arch
        sources: a list of sources to add
        '''
        print 'Adding external sources: %s' % sources
        return self.agent.add_external_sources(sources)