Пример #1
0
 def find(self):
     '''
     Find installed Slackware packages
     '''
     self.binary = "".join(self.binary)
     matching = size = 0
     print("\nPackages with matching name [ {0}{1}{2} ]\n".format(
           CYAN, self.binary, ENDC))
     for match in find_package(self.binary, pkg_path):
         if self.binary in match:
             matching += 1
             print("[ {0}installed{1} ] - {2}".format(
                   GREEN, ENDC, match))
             with open(pkg_path + match, "r") as f:
                 data = f.read()
                 f.close()
             for line in data.splitlines():
                 if line.startswith("UNCOMPRESSED PACKAGE SIZE:"):
                     if "M" in line[26:]:
                         size += float(line[26:-1]) * 1024
                     else:
                         size += float(line[26:-1])
                     break
     if matching == 0:
         message = "Can't find"
         pkg_not_found("", self.binary, message, "\n")
     else:
         print("\n{0}Total found {1} matching packages.{2}".format(
               GREY, matching, ENDC))
         unit = "Kb"
         if size > 1024:
             unit = "Mb"
             size = (size / 1024)
         print("{0}Size of installed packages {1} {2}.{3}\n".format(
               GREY, round(size, 2), unit, ENDC))
Пример #2
0
 def find(self):
     '''
     Find installed Slackware packages
     '''
     self.binary = "".join(self.binary)
     matching = size = 0
     print("\nPackages with matching name [ {0}{1}{2} ]\n".format(
         CYAN, self.binary, ENDC))
     for match in find_package(self.binary, pkg_path):
         if self.binary in match:
             matching += 1
             print("[ {0}installed{1} ] - {2}".format(GREEN, ENDC, match))
             with open(pkg_path + match, "r") as f:
                 data = f.read()
                 f.close()
             for line in data.splitlines():
                 if line.startswith("UNCOMPRESSED PACKAGE SIZE:"):
                     if "M" in line[26:]:
                         size += float(line[26:-1]) * 1024
                     else:
                         size += float(line[26:-1])
                     break
     if matching == 0:
         message = "Can't find"
         pkg_not_found("", self.binary, message, "\n")
     else:
         print("\n{0}Total found {1} matching packages.{2}".format(
             GREY, matching, ENDC))
         unit = "Kb"
         if size > 1024:
             unit = "Mb"
             size = (size / 1024)
         print("{0}Size of installed packages {1} {2}.{3}\n".format(
             GREY, round(size, 2), unit, ENDC))
Пример #3
0
 def view(self):
     '''
     View SlackBuild package, read or install them
     from slackbuilds.org
     '''
     if self.sbo_url:
         prgnam = ("{0}-{1}".format(self.name, self.sbo_version))
         view_sbo(
             self.name, self.sbo_url, self.sbo_desc,
             self.sbo_dwn.split("/")[-1],
             ", ".join([src.split("/")[-1] for src in self.source_dwn]),
             self.sbo_req)
         FAULT = error_uns(self.source_dwn)
         while True:
             choice = read_choice()
             if choice in ["D", "d"]:
                 download("", self.sbo_dwn, self.source_dwn)
                 break
             elif choice in ["R", "r"]:
                 README = Read(self.sbo_url).readme("README")
                 fill = fill_pager(README)
                 pydoc.pager(README + fill)
             elif choice in ["F", "f"]:
                 info = Read(self.sbo_url).info(self.name, ".info")
                 fill = fill_pager(info)
                 pydoc.pager(info + fill)
             elif choice in ["S", "s"]:
                 SlackBuild = Read(self.sbo_url).slackbuild(
                     self.name, ".SlackBuild")
                 fill = fill_pager(SlackBuild)
                 pydoc.pager(SlackBuild + fill)
             elif choice in ["B", "b"]:
                 build(self.sbo_dwn, self.source_dwn, FAULT)
                 break
             elif choice in ["I", "i"]:
                 if not find_package(prgnam + sp, pkg_path):
                     build(self.sbo_dwn, self.source_dwn, FAULT)
                     install(self.name, prgnam, self.sbo_url)
                     break
                 else:
                     template(78)
                     pkg_found(self.name, self.sbo_version)
                     template(78)
                     break
             else:
                 break
     else:
         pkg_not_found("\n", self.name, "Can't view", "\n")
Пример #4
0
 def view_removed(binary):
     '''
     View packages before removed
     '''
     removed = []
     print("\nPackages with name matching [ {0}{1}{2} ]\n".format(
         CYAN, ", ".join(binary), ENDC))
     for pkg in binary:
         pkgs = find_package(pkg + sp, pkg_path)
         if pkgs:
             print("[ {0}delete{1} ] --> {2}".format(RED, ENDC,
                   "\n               ".join(pkgs)))
             removed.append(pkg)
         else:
             pkg_not_found("", pkg, "Can't remove", "")
     return removed
Пример #5
0
 def view_removed(binary):
     '''
     View packages before removed
     '''
     removed = []
     print("\nPackages with name matching [ {0}{1}{2} ]\n".format(
         CYAN, ", ".join(binary), ENDC))
     for pkg in binary:
         pkgs = find_package(pkg + sp, pkg_path)
         if pkgs:
             print("[ {0}delete{1} ] --> {2}".format(
                 RED, ENDC, "\n               ".join(pkgs)))
             removed.append(pkg)
         else:
             pkg_not_found("", pkg, "Can't remove", "")
     return removed
Пример #6
0
 def view(self):
     '''
     View SlackBuild package, read or install them
     from slackbuilds.org
     '''
     if self.sbo_url:
         prgnam = ("{0}-{1}".format(self.name, self.sbo_version))
         view_sbo(self.name, self.sbo_url, self.sbo_desc,
                  self.sbo_dwn.split("/")[-1],
                  ", ".join([src.split("/")[-1] for src in self.source_dwn]),
                  self.sbo_req)
         FAULT = error_uns(self.source_dwn)
         while True:
             choice = read_choice()
             if choice in ["D", "d"]:
                 download("", self.sbo_dwn, self.source_dwn)
                 break
             elif choice in ["R", "r"]:
                 README = Read(self.sbo_url).readme("README")
                 fill = fill_pager(README)
                 pydoc.pager(README + fill)
             elif choice in ["F", "f"]:
                 info = Read(self.sbo_url).info(self.name, ".info")
                 fill = fill_pager(info)
                 pydoc.pager(info + fill)
             elif choice in ["S", "s"]:
                 SlackBuild = Read(self.sbo_url).slackbuild(self.name,
                                                            ".SlackBuild")
                 fill = fill_pager(SlackBuild)
                 pydoc.pager(SlackBuild + fill)
             elif choice in ["B", "b"]:
                 build(self.sbo_dwn, self.source_dwn, FAULT)
                 break
             elif choice in ["I", "i"]:
                 if not find_package(prgnam + sp, pkg_path):
                     build(self.sbo_dwn, self.source_dwn, FAULT)
                     install(self.name, prgnam, self.sbo_url)
                     break
                 else:
                     template(78)
                     pkg_found(self.name, self.sbo_version)
                     template(78)
                     break
             else:
                 break
     else:
         pkg_not_found("\n", self.name, "Can't view", "\n")
Пример #7
0
 def start(self):
     '''
     Install packages from official Slackware distribution
     '''
     try:
         data = slack_data(self.PACKAGES_TXT, 700)
         (dwn_links, install_all,
          comp_sum, uncomp_sum) = store(data[0], data[1], data[2], data[3],
                                        self.slack_pkg, self.version)
         sys.stdout.write("{0}Done{1}\n\n".format(GREY, ENDC))
         if install_all:
             template(78)
             print("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}".format(
                 "| Package", " " * 17,
                 "Version", " " * 12,
                 "Arch", " " * 4,
                 "Build", " " * 2,
                 "Repos", " " * 10,
                 "Size"))
             template(78)
             print("Installing:")
             sums = views(install_all, comp_sum)
             unit, size = units(comp_sum, uncomp_sum)
             msg = msgs(install_all, sums[2])
             print("\nInstalling summary")
             print("=" * 79)
             print("{0}Total {1} {2}.".format(GREY, len(install_all),
                                              msg[0]))
             print("{0} {1} will be installed, {2} will be upgraded and "
                   "{3} will be resettled.".format(sums[2], msg[1],
                                                   sums[1], sums[0]))
             print("Need to get {0} {1} of archives.".format(size[0],
                                                             unit[0]))
             print("After this process, {0} {1} of additional disk space "
                   "will be used.{2}".format(size[1], unit[1], ENDC))
             read = raw_input("\nWould you like to install [Y/n]? ")
             if read == "Y" or read == "y":
                 slack_dwn(self.tmp_path, dwn_links)
                 install(self.tmp_path, install_all)
                 delete(self.tmp_path, install_all)
         else:
             pkg_not_found("", self.slack_pkg, "No matching", "\n")
     except KeyboardInterrupt:
         print   # new line at exit
         sys.exit()
Пример #8
0
 def display(self):
     '''
     Print the Slackware packages contents
     '''
     for pkg in self.binary:
         find = find_package(pkg + sp, pkg_path)
         if find:
             with open(pkg_path + "".join(find), "r") as package:
                 for line in package:
                     print(line).strip()
                 print   # new line per file
         else:
             message = "Can't dislpay"
             if len(self.binary) > 1:
                 bol = eol = ""
             else:
                 bol = eol = "\n"
             pkg_not_found(bol, pkg, message, eol)
Пример #9
0
 def display(self):
     '''
     Print the Slackware packages contents
     '''
     for pkg in self.binary:
         find = find_package(pkg + sp, pkg_path)
         if find:
             with open(pkg_path + "".join(find), "r") as package:
                 for line in package:
                     print(line).strip()
                 print  # new line per file
         else:
             message = "Can't dislpay"
             if len(self.binary) > 1:
                 bol = eol = ""
             else:
                 bol = eol = "\n"
             pkg_not_found(bol, pkg, message, eol)
Пример #10
0
 def start(self):
     '''
     Install packages from official Slackware distribution
     '''
     try:
         data = slack_data(self.PACKAGES_TXT, 700)
         (dwn_links, install_all, comp_sum,
          uncomp_sum) = store(data[0], data[1], data[2], data[3],
                              self.slack_pkg, self.version)
         sys.stdout.write("{0}Done{1}\n\n".format(GREY, ENDC))
         if install_all:
             template(78)
             print("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}".format(
                 "| Package", " " * 17, "Version", " " * 12, "Arch",
                 " " * 4, "Build", " " * 2, "Repos", " " * 10, "Size"))
             template(78)
             print("Installing:")
             sums = views(install_all, comp_sum)
             unit, size = units(comp_sum, uncomp_sum)
             msg = msgs(install_all, sums[2])
             print("\nInstalling summary")
             print("=" * 79)
             print("{0}Total {1} {2}.".format(GREY, len(install_all),
                                              msg[0]))
             print("{0} {1} will be installed, {2} will be upgraded and "
                   "{3} will be resettled.".format(sums[2], msg[1], sums[1],
                                                   sums[0]))
             print("Need to get {0} {1} of archives.".format(
                 size[0], unit[0]))
             print("After this process, {0} {1} of additional disk space "
                   "will be used.{2}".format(size[1], unit[1], ENDC))
             read = raw_input("\nWould you like to install [Y/n]? ")
             if read == "Y" or read == "y":
                 slack_dwn(self.tmp_path, dwn_links)
                 install(self.tmp_path, install_all)
                 delete(self.tmp_path, install_all)
         else:
             pkg_not_found("", self.slack_pkg, "No matching", "\n")
     except KeyboardInterrupt:
         print  # new line at exit
         sys.exit()
Пример #11
0
 def build(self):
     '''
     Build package from source and create log
     file in path /var/log/slpkg/sbo/build_logs/.
     Also check md5sum calculates.
     '''
     try:
         tar = tarfile.open(self.script)
         tar.extractall()
         tar.close()
         sbo_md5_list = SBoGrep(self.prgnam).checksum()
         for src, sbo_md5 in zip(self.sources, sbo_md5_list):
             # fix build sources with spaces
             src = src.replace("%20", " ")
             check_md5(sbo_md5, src)
             shutil.copy2(src, self.prgnam)
         os.chdir(self.path + self.prgnam)
         # change permissions
         subprocess.call("chmod +x {0}.SlackBuild".format(self.prgnam),
                         shell=True)
         # start log write
         log_head(self.build_logs, self.log_file, self.start_log_time)
         subprocess.Popen("./{0}.SlackBuild 2>&1 | tee -a {1}{2}".format(
             self.prgnam, self.build_logs, self.log_file),
                          shell=True,
                          stdout=sys.stdout).communicate()
         sum_time = build_time(self.start_time)
         # write end in log file
         log_end(self.build_logs, self.log_file, sum_time)
         os.chdir(self.path)
         print("Total build time for package {0} : {1}\n".format(
             self.prgnam, sum_time))
     except (OSError, IOError):
         pkg_not_found("\n", self.prgnam, "Wrong file", "\n")
     except KeyboardInterrupt:
         print  # new line at exit
         sys.exit()
Пример #12
0
 def build(self):
     '''
     Build package from source and create log
     file in path /var/log/slpkg/sbo/build_logs/.
     Also check md5sum calculates.
     '''
     try:
         tar = tarfile.open(self.script)
         tar.extractall()
         tar.close()
         sbo_md5_list = SBoGrep(self.prgnam).checksum()
         for src, sbo_md5 in zip(self.sources, sbo_md5_list):
             # fix build sources with spaces
             src = src.replace("%20", " ")
             check_md5(sbo_md5, src)
             shutil.copy2(src, self.prgnam)
         os.chdir(self.path + self.prgnam)
         # change permissions
         subprocess.call("chmod +x {0}.SlackBuild".format(self.prgnam),
                         shell=True)
         # start log write
         log_head(self.build_logs, self.log_file, self.start_log_time)
         subprocess.Popen("./{0}.SlackBuild 2>&1 | tee -a {1}{2}".format(
             self.prgnam, self.build_logs, self.log_file), shell=True,
             stdout=sys.stdout).communicate()
         sum_time = build_time(self.start_time)
         # write end in log file
         log_end(self.build_logs, self.log_file, sum_time)
         os.chdir(self.path)
         print("Total build time for package {0} : {1}\n".format(self.prgnam,
                                                                 sum_time))
     except (OSError, IOError):
         pkg_not_found("\n", self.prgnam, "Wrong file", "\n")
     except KeyboardInterrupt:
         print   # new line at exit
         sys.exit()
Пример #13
0
 def not_found(message, binary, pkg):
     if len(binary) > 1:
         bol = eol = ""
     else:
         bol = eol = "\n"
     pkg_not_found(bol, pkg, message, eol)
Пример #14
0
 def start(self):
     '''
     Download, build and install or upgrade packages
     with all dependencies if version is greater than
     that established.
     '''
     try:
         if self.dependencies_list or sbo_search_pkg(self.name) is not None:
             requires = one_for_all(self.name, self.dependencies_list)
             dependencies = remove_dbs(requires)
             # sbo versions = idata[0]
             # package arch = idata[1]
             # package sum = idata[2]
             # sources = idata[3]
             idata = installing_data(dependencies, self.UNST)
             sys.stdout.write("{0}Done{1}\n".format(GREY, ENDC))
             # count upgraded = cnt[0]
             # count installed = cnt[1]
             (PKG_COLOR, count) = pkg_colors_tag(self.name, idata[0], 0, 0)
             print("\nThe following packages will be automatically "
                   "installed or upgraded")
             print("with new version:\n")
             top_view()
             print("Installing:")
             ARCH_COLOR = arch_colors_tag(self.UNST, idata[1])
             view_packages(PKG_COLOR, self.name, idata[0][-1], ARCH_COLOR,
                           idata[1][-1])
             print("Installing for dependencies:")
             for dep, ver, dep_arch in zip(dependencies[:-1], idata[0][:-1],
                                           idata[1][:-1]):
                 (DEP_COLOR, count) = pkg_colors_tag(dep, ver, count[0],
                                                     count[1])
                 ARCH_COLOR = arch_colors_tag(self.UNST, dep)
                 view_packages(DEP_COLOR, dep, ver, ARCH_COLOR, dep_arch)
             # insstall message = msg[0]
             # upgraded message = msg[1]
             # total message = msg[2]
             msg = msgs(dependencies, count[1], count[0])
             print("\nInstalling summary")
             print("=" * 79)
             print("{0}Total {1} {2}.".format(GREY, len(dependencies),
                                              msg[2]))
             print("{0} {1} will be installed, {2} allready installed and "
                   "{3} {4}".format(count[1], msg[0], idata[2], count[0],
                                    msg[1]))
             print("will be upgraded.{0}\n".format(ENDC))
             read = arch_support(idata[3], self.UNST, idata[2], dependencies)
             if read == "Y" or read == "y":
                 # installs = b_ins[0]
                 # upgraded = b_ins[1]
                 # versions = b_ins[2]
                 b_ins = build_install(dependencies, idata[0], idata[1])
                 reference(count[1], msg[0], count[0], msg[1],
                           b_ins[0], b_ins[2], b_ins[1])
                 write_deps(self.name, dependencies)
         else:
             count_installed = count_uninstalled = 0
             # sbo matching = mdata[0]
             # sbo version = mdata1]
             # package arch = mdata[2]
             mdata = matching_data(self.name, self.UNST)
             sys.stdout.write("{0}Done{1}\n".format(GREY, ENDC))
             if mdata[0]:
                 print("\nPackages with name matching [ {0}{1}{2} ]"
                       "\n".format(CYAN, self.name, ENDC))
                 top_view()
                 print("Matching:")
                 for match, ver, march in zip(mdata[0], mdata[1], mdata[2]):
                     if find_package(match + sp + ver, pkg_path):
                         view_packages(GREEN, match, ver, "", march)
                         count_installed += 1
                     else:
                         view_packages(RED, match, ver, "", march)
                         count_uninstalled += 1
                 # insstall message = msg[0]
                 # uninstall message = msg[1]
                 # total message = msg[2]
                 msg = msgs(mdata[0], count_installed, count_uninstalled)
                 print("\nInstalling summary")
                 print("=" * 79)
                 print("{0}Total found {1} matching {2}.".format(
                     GREY, len(mdata[0]), msg[2]))
                 print("{0} installed {1} and {2} uninstalled {3}.{4}"
                       "\n".format(count_installed, msg[0],
                                   count_uninstalled, msg[1], ENDC))
             else:
                 pkg_not_found("\n", self.name, "No matching", "\n")
     except KeyboardInterrupt:
         print   # new line at exit
         sys.exit()
Пример #15
0
 def start(self):
     '''
     Download, build and install or upgrade packages
     with all dependencies if version is greater than
     that established.
     '''
     try:
         if self.dependencies_list or sbo_search_pkg(self.name) is not None:
             requires = one_for_all(self.name, self.dependencies_list)
             dependencies = remove_dbs(requires)
             # sbo versions = idata[0]
             # package arch = idata[1]
             # package sum = idata[2]
             # sources = idata[3]
             idata = installing_data(dependencies, self.UNST)
             sys.stdout.write("{0}Done{1}\n".format(GREY, ENDC))
             # count upgraded = cnt[0]
             # count installed = cnt[1]
             (PKG_COLOR, count) = pkg_colors_tag(self.name, idata[0], 0, 0)
             print("\nThe following packages will be automatically "
                   "installed or upgraded")
             print("with new version:\n")
             top_view()
             print("Installing:")
             ARCH_COLOR = arch_colors_tag(self.UNST, idata[1])
             view_packages(PKG_COLOR, self.name, idata[0][-1], ARCH_COLOR,
                           idata[1][-1])
             print("Installing for dependencies:")
             for dep, ver, dep_arch in zip(dependencies[:-1], idata[0][:-1],
                                           idata[1][:-1]):
                 (DEP_COLOR,
                  count) = pkg_colors_tag(dep, ver, count[0], count[1])
                 ARCH_COLOR = arch_colors_tag(self.UNST, dep)
                 view_packages(DEP_COLOR, dep, ver, ARCH_COLOR, dep_arch)
             # insstall message = msg[0]
             # upgraded message = msg[1]
             # total message = msg[2]
             msg = msgs(dependencies, count[1], count[0])
             print("\nInstalling summary")
             print("=" * 79)
             print("{0}Total {1} {2}.".format(GREY, len(dependencies),
                                              msg[2]))
             print("{0} {1} will be installed, {2} allready installed and "
                   "{3} {4}".format(count[1], msg[0], idata[2], count[0],
                                    msg[1]))
             print("will be upgraded.{0}\n".format(ENDC))
             read = arch_support(idata[3], self.UNST, idata[2],
                                 dependencies)
             if read == "Y" or read == "y":
                 # installs = b_ins[0]
                 # upgraded = b_ins[1]
                 # versions = b_ins[2]
                 b_ins = build_install(dependencies, idata[0], idata[1])
                 reference(count[1], msg[0], count[0], msg[1], b_ins[0],
                           b_ins[2], b_ins[1])
                 write_deps(self.name, dependencies)
         else:
             count_installed = count_uninstalled = 0
             # sbo matching = mdata[0]
             # sbo version = mdata1]
             # package arch = mdata[2]
             mdata = matching_data(self.name, self.UNST)
             sys.stdout.write("{0}Done{1}\n".format(GREY, ENDC))
             if mdata[0]:
                 print("\nPackages with name matching [ {0}{1}{2} ]"
                       "\n".format(CYAN, self.name, ENDC))
                 top_view()
                 print("Matching:")
                 for match, ver, march in zip(mdata[0], mdata[1], mdata[2]):
                     if find_package(match + sp + ver, pkg_path):
                         view_packages(GREEN, match, ver, "", march)
                         count_installed += 1
                     else:
                         view_packages(RED, match, ver, "", march)
                         count_uninstalled += 1
                 # insstall message = msg[0]
                 # uninstall message = msg[1]
                 # total message = msg[2]
                 msg = msgs(mdata[0], count_installed, count_uninstalled)
                 print("\nInstalling summary")
                 print("=" * 79)
                 print("{0}Total found {1} matching {2}.".format(
                     GREY, len(mdata[0]), msg[2]))
                 print("{0} installed {1} and {2} uninstalled {3}.{4}"
                       "\n".format(count_installed, msg[0],
                                   count_uninstalled, msg[1], ENDC))
             else:
                 pkg_not_found("\n", self.name, "No matching", "\n")
     except KeyboardInterrupt:
         print  # new line at exit
         sys.exit()
Пример #16
0
 def not_found(message, binary, pkg):
     if len(binary) > 1:
         bol = eol = ""
     else:
         bol = eol = "\n"
     pkg_not_found(bol, pkg, message, eol)