root/software/apt-tools/get_deps.py @ a0c50279
| a0c50279 | david.sorber | #!/usr/bin/python3
|
|
import copy
|
|||
from distutils.version import LooseVersion
|
|||
import sys
|
|||
import apt
|
|||
# List of "additional" packages to install
|
|||
ADDTIONAL_PACKAGES = [
|
|||
'htop',
|
|||
'iotop',
|
|||
'vim',
|
|||
'openssh-server',
|
|||
'build-essential']
|
|||
def main():
|
|||
# Create cache
|
|||
cache = apt.Cache()
|
|||
cache.open()
|
|||
in_packages = copy.copy(ADDTIONAL_PACKAGES)
|
|||
packages = set()
|
|||
package_deps = {}
|
|||
while True:
|
|||
try:
|
|||
# Grab next package
|
|||
pkg_name = in_packages.pop()
|
|||
print('Package: {:s}'.format(pkg_name))
|
|||
# Add this package (with version) to the list of packages
|
|||
if pkg_name not in packages:
|
|||
packages.add(pkg_name)
|
|||
try:
|
|||
package_deps[pkg_name] = cache[pkg_name].versions[0].dependencies
|
|||
except KeyError:
|
|||
continue
|
|||
for pdep in package_deps[pkg_name]:
|
|||
dep_name = pdep[0].name
|
|||
print('\tDependency: {:s}'.format(dep_name))
|
|||
if dep_name not in packages:
|
|||
packages.add(dep_name)
|
|||
in_packages.insert(0, dep_name)
|
|||
except IndexError:
|
|||
break
|
|||
print('\n\n')
|
|||
for package in packages:
|
|||
print(package)
|
|||
print('\n\n')
|
|||
if __name__ == '__main__':
|
|||
sys.exit(main())
|