-
Notifications
You must be signed in to change notification settings - Fork 201
/
install.py
110 lines (95 loc) · 4.95 KB
/
install.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Name: install.py
# Purpose: Script to install multibootusb from source on different linux distros. This also pulls in dependencies.
# Authors: Sundar
# Licence: This file is a part of multibootusb package. You can redistribute it or modify
# under the terms of GNU General Public License, v.2 or above
import os
import sys
import urllib.request
import urllib.error
import urllib.parse
import subprocess
if not os.getuid() == 0:
print("You must run this file with admin privilege.")
print("Try sudo ./install.py")
sys.exit(0)
class Install():
def mbusb(self):
try:
# from PyQt5 import QtGui
if subprocess.call("python3 setup.py install --record ./.install_files.txt", shell=True) == 0:
print("Installation finished.")
print("Find multibootusb under system menu or run from terminal using the following command...")
print("\nmultibootusb\n")
print("You can uninstall multibootusb at any time using follwing command (with root/sudo previlage)")
print("\n./uninstall.sh\n")
except:
print("Installing missing package.")
if self.supported_pac_manager() is not True:
print("Unsupported package manager.")
print("Please install parted, util-linux and python3-pyqt5/PyQt5, mtools and python3-dbus\n"
"Whatever the package name is applicable to your distro and rerun this script.")
sys.exit(0)
elif self.internet_on() is False:
print("Unable to connect to internet.")
print("Please install parted, util-linux and python3-pyqt5/PyQt5, pkexec, mtools and python3-dbus \n"
"Whatever the package name is applicable to your distro and rerun this script.")
sys.exit(0)
elif self.internet_on() is True:
if self.install_dependency_package() is not True:
print("Error installing dependency packages.")
else:
if subprocess.call("python3 setup.py install --record ./.install_files.txt", shell=True) == 0:
print("Installation finished.")
print("Find multibootusb under system menu or run from terminal using the following command...")
print("\nmultibootusb\n")
print("You can uninstall multibootusb at any time using follwing command (with root/sudo previlage)")
print("\nsudo ./uninstall.sh\n")
@staticmethod
def internet_on():
try:
ret = urllib.request.urlopen('https://www.google.com', timeout=1)
print("Interconnection exist.")
result = True
except urllib.error.URLError:
print("Interconnection does not exist.")
result = False
return result
@staticmethod
def supported_pac_manager():
pac_managers = ["pacman", "yum", "apt-get", "zypper", "urpmi"]
result = "0"
for pac_man in pac_managers:
if subprocess.call("which " + pac_man, shell=True) == 0:
result = "1"
return True
if not result == "1":
return False
@staticmethod
def install_dependency_package():
if subprocess.call("which pacman", shell=True) == 0:
subprocess.call("pacman -Sy --noconfirm", shell=True)
# Thank you Neitsab for "--needed" argument.
if subprocess.call("pacman -S --needed --noconfirm p7zip python-pyqt5 mtools python3-six parted util-linux python-dbus") == 0:
result = True
elif subprocess.call("which yum", shell=True) == 0:
subprocess.call("yum check-update", shell=True)
if subprocess.call("dnf install mtools python3-PyQt5 util-linux python3-six parted p7zip p7zip-plugins python3-pyudev python3-dbus -y", shell=True) == 0:
result = True
elif subprocess.call("which apt-get", shell=True) == 0:
subprocess.call("apt-get -q update", shell=True)
if subprocess.call("apt-get -q -y install python3-pyqt5 p7zip-full parted util-linux python3-pyudev mtools python3-dbus", shell=True) == 0:
result = True
elif subprocess.call("which zypper", shell=True) == 0:
subprocess.call("zypper refresh", shell=True)
if subprocess.call("zypper install -y mtools python3-qt5 p7zip python3-pyudev python3-six util-linux parted", shell=True) == 0:
result = True
elif subprocess.call("which urpmi", shell=True) == 0:
subprocess.call("urpmi.update -a", shell=True)
if subprocess.call("urpmi install -auto mtools util-linux p7zip python3-pyudev python3-six parted python3-qt5", shell=True) == 0:
result = True
return bool(result)
install = Install()
install.mbusb()