def download(args): """Download one or more packages without installing them""" print("Packages being downloaded to /var/cache/apt/archives/") command = "/usr/bin/apt-get --reinstall --download-only install " packages = util.consolidate_package_names(args) command = command + " ".join(packages) perform.execute(command, root=True)
def purge(args): """Remove one or more packages and their configuration files""" packages = util.consolidate_package_names(args) command = "/usr/bin/apt-get {} {} --auto-remove purge " command = command.format(args.yes, args.noauth) command = command + " ".join(packages) perform.execute(command, root=True, log=True)
def install(args): """Package installer notes: * specifying a .deb file will also try to satisfy that deb's dependencies; * one can specify multiple files with --fileinput option * specifying a url will try fetch the file from the internet, and keep it in "~/.wajig/$HOSTNAME" example: $ wajig install a b_1.0_all.deb http://example.com/c_1.0_all.deb Assuming there's no errors, the command will install 3 packages named 'a', 'b', and 'c'' """ packages = util.consolidate_package_names(args) online_files = [ package for package in packages if package.startswith(("http://", "ftp://")) ] deb_files = list() for package in online_files: if not package.endswith(".deb"): print("A valid .deb file should have a '.deb' extension") continue filename = os.path.join(util.init_dir, package.split("/")[-1]) try: response = urllib.request.urlopen(package) except urllib.error.HTTPError as error: print("{}; is '{}' the correct url?".format(error.reason, package)) else: with open(filename, "wb") as f: f.write(response.read()) deb_files.append(filename) deb_files.extend([ package for package in packages if package.endswith(".deb") and os.path.exists(package) ]) if deb_files: debfile.install(deb_files) packages = packages.difference(online_files, deb_files) if packages: if args.dist: args.dist = "--target-release " + args.dist command = "/usr/bin/apt {} {} {} {} --auto-remove install " command += " ".join(packages) command = command.format(args.yes, args.noauth, args.recommends, args.dist) perform.execute(command, root=True, log=True)
def install(args): """Package installer notes: * specifying a .deb file will also try to satisfy that deb's dependencies; * one can specify multiple files with --fileinput option * specifying a url will try fetch the file from the internet, and keep it in "~/.wajig/$HOSTNAME" example: $ wajig install a b_1.0_all.deb http://example.com/c_1.0_all.deb Assuming there's no errors, the command will install 3 packages named 'a', 'b', and 'c''""" packages = util.consolidate_package_names(args) online_files = [package for package in packages if package.startswith(("http://", "ftp://"))] deb_files = list() for package in online_files: if not package.endswith(".deb"): print("A valied .deb file should have a '.deb' extension") continue filename = os.path.join(util.init_dir, package.split("/")[-1]) try: response = urllib.request.urlopen(package) except urllib.error.HTTPError as error: print("{}; is '{}' the correct url?".format(error.reason, package)) else: with open(filename, "wb") as f: f.write(response.read()) deb_files.append(filename) deb_files.extend([package for package in packages if package.endswith(".deb") and os.path.exists(package)]) if deb_files: debfile.install(deb_files, args) packages = packages.difference(online_files, deb_files) if packages: if args.dist: args.dist = "--target-release " + args.dist command = "/usr/bin/apt-get {} {} {} {} --auto-remove install " command += " ".join(packages) command = command.format(args.yes, args.noauth, args.recommends, args.dist) perform.execute(command, root=True, log=True)
def remove(args): """Remove packages (see also PURGE command)""" packages = util.consolidate_package_names(args) command = "/usr/bin/apt-get {} {}--auto-remove remove " + " ".join(packages) command = command.format(args.yes, args.noauth) perform.execute(command, root=True, log=True)
def remove(args): """Remove packages (see also PURGE command)""" packages = util.consolidate_package_names(args) command = "/usr/bin/apt {} {} --auto-remove remove " + " ".join(packages) command = command.format(args.yes, args.noauth) perform.execute(command, root=True, log=True)