Git Product home page Git Product logo

package-extract's Introduction

thoth-package-extract

A tool to extract dependencies from an image and image build logs.

Extracting installed packages from install logs

You can use this tool to get information about installed packages from install logs. Currently, there is supported parsing of install logs from pip, pip3, dnf and yum output. The tool automatically detects based on the output which package manager was used and provides a structured output of installed packages.

Warning

Tools dnf and yum suppress output of already installed dependencies. This means that already satisfied dependencies do not occur in the resulting JSON.

Warning

When installing packages using pip (or pip3) the package manager reports already satisfied dependencies but does not report version information. Thus the version information is not available in these cases in the resulting output.

It's completely fine to use install log extraction for docker build logs. Note however that the already installed packages in the base image will be missing in the output.

Extracting dependencies directly from an image

Tool thoth-package-extract allows you to extract dependencies from an image directly by inspecting its content. As there is directly inspected the content of image, the output is accurate compared to the pure build log parsing.

To gather information about python packages installed, there is a need to execute python scripts of installed packages given the Python packaging design. In some cases this can be dangerous as there could be executed potentially malicious parts of code (see this typo squashing as an example).

Installation

Use prepared Dockerfile:

$ git clone https://github.com/thoth-station/package-extract
$ cd package-extract
$ docker build . -t package-extract-base -f Dockerfile-base.fedora
$ docker build . -t package-extract

Example of parsing install logs

An example of parsing installed packages during:

$ pip3 install --user flask | docker run -i package-extract extract-buildlog -i -

{
  "metadata": {
    "analyzer": "thoth-package-extract",
    "analyzer_version": "1.0.0",
    "arguments": {
      "extract-buildlog": {
        "input_file": "<_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'>",
        "no_pretty": false,
        "output": null
      },
      "thoth-package-extract": {
        "no_color": false,
        "verbose": false
      }
    },
    "datetime": "2018-06-18T15:53:23.129270",
    "distribution": {
      "codename": "Twenty Seven",
      "id": "fedora",
      "like": "",
      "version": "27",
      "version_parts": {
        "build_number": "",
        "major": "27",
        "minor": ""
      }
    },
    "hostname": "268f19027ea4",
    "python": {
      "api_version": 1013,
      "implementation_name": "cpython",
      "major": 3,
      "micro": 5,
      "minor": 6,
      "releaselevel": "final",
      "serial": 0
    }
  },
  "result": [
    {
      "handler": "yum",
      "result": []
    },
    {
      "handler": "pip3",
      "result": [
        {
          "already_satisfied": "/usr/lib/python3.6/site-packages/click-6.6-py3.6.egg",
          "from": [
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "click",
          "version_installed": null,
          "version_specified": ">=5.1"
        },
        {
          "already_satisfied": null,
          "artifact": {
            "name": "https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl",
            "size": "126kB"
          },
          "from": [
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "Jinja2",
          "version_installed": "2.10",
          "version_specified": ">=2.10"
        },
        {
          "already_satisfied": null,
          "artifact": {
            "name": "https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl",
            "size": "322kB"
          },
          "from": [
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "Werkzeug",
          "version_installed": "0.14.1",
          "version_specified": ">=0.14"
        },
        {
          "already_satisfied": "/home/fpokorny/.local/lib/python3.6/site-packages",
          "from": [
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "itsdangerous",
          "version_installed": null,
          "version_specified": ">=0.24"
        },
        {
          "already_satisfied": "/home/fpokorny/.local/lib/python3.6/site-packages",
          "from": [
            {
              "package": "Jinja2",
              "version_specified": ">=2.10"
            },
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "MarkupSafe",
          "version_installed": null,
          "version_specified": ">=0.23"
        }
      ]
    }
  ]
}

Or you can also use this tool to extract information about packages that were installed during docker build:

$ docker build . -f Dockerfile.test --no-cache | docker run -i package-extract extract-buildlog -i -
{
  "metadata": {
    "analyzer": "thoth-package-extract",
    "analyzer_version": "1.0.0",
    "arguments": {
      "extract-buildlog": {
        "input_file": "<_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'>",
        "no_pretty": false,
        "output": null
      },
      "thoth-package-extract": {
        "no_color": false,
        "verbose": false
      }
    },
    "datetime": "2018-06-18T18:08:47.259811",
    "distribution": {
      "codename": "Twenty Seven",
      "id": "fedora",
      "like": "",
      "version": "27",
      "version_parts": {
        "build_number": "",
        "major": "27",
        "minor": ""
      }
    },
    "hostname": "b8c6f33cf757",
    "python": {
      "api_version": 1013,
      "implementation_name": "cpython",
      "major": 3,
      "micro": 5,
      "minor": 6,
      "releaselevel": "final",
      "serial": 0
    }
  },
  "result": [
    {
      "handler": "yum",
      "result": [
        {
          "arch": "noarch",
          "dependency": false,
          "epoch": null,
          "name": "ca-certificates",
          "repository": "updates",
          "size": "392k",
          "upgrading": true,
          "version": "2018.2.24-1.0.fc28"
        },
        {
          "arch": "x86_64",
          "dependency": false,
          "epoch": null,
          "name": "coreutils-single",
          "repository": "updates",
          "size": "623k",
          "upgrading": true,
          "version": "8.29-7.fc28"
        },
        {
          "arch": "noarch",
          "dependency": false,
          "epoch": null,
          "name": "crypto-policies",
          "repository": "updates",
          "size": "40k",
          "upgrading": true,
          "version": "20180425-5.git6ad4018.fc28"
        },
        {
          "arch": "x86_64",
          "dependency": false,
          "epoch": null,
          "name": "cryptsetup-libs",
          "repository": "updates",
          "size": "291k",
          "upgrading": true,
          "version": "2.0.3-4.fc28"
        },
        {
          "arch": "x86_64",
          "dependency": false,
          "epoch": null,
          "name": "curl",
          "repository": "updates",
          "size": "343k",
          "upgrading": true,
          "version": "7.59.0-4.fc28"
        },
        {
          "arch": "x86_64",
          "dependency": false,
          "epoch": null,
          "name": "cyrus-sasl-lib",
          "repository": "updates",
          "size": "114k",
          "upgrading": true,
          "version": "2.1.27-0.2rc7.fc28"
        },
...
        {
          "arch": "x86_64",
          "dependency": false,
          "epoch": 2,
          "name": "vim-enhanced",
          "repository": "updates",
          "size": "1.4M",
          "upgrading": false,
          "version": "8.1.042-1.fc28"
        },
        {
          "arch": "x86_64",
          "dependency": true,
          "epoch": null,
          "name": "gpm-libs",
          "repository": "fedora",
          "size": "38k",
          "upgrading": false,
          "version": "1.20.7-15.fc28"
        },
        {
          "arch": "x86_64",
          "dependency": true,
          "epoch": 2,
          "name": "vim-common",
          "repository": "updates",
          "size": "6.4M",
          "upgrading": false,
          "version": "8.1.042-1.fc28"
        },
        {
          "arch": "noarch",
          "dependency": true,
          "epoch": 2,
          "name": "vim-filesystem",
          "repository": "updates",
          "size": "47k",
          "upgrading": false,
          "version": "8.1.042-1.fc28"
        },
        {
          "arch": "x86_64",
          "dependency": true,
          "epoch": null,
          "name": "which",
          "repository": "fedora",
          "size": "47k",
          "upgrading": false,
          "version": "2.21-8.fc28"
        }
      ]
    },
    {
      "handler": "pip3",
      "result": [
        {
          "already_satisfied": null,
          "artifact": {
            "name": "https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl",
            "size": "91kB"
          },
          "from": null,
          "package": "flask",
          "version_installed": "1.0.2",
          "version_specified": null
        },
        {
          "already_satisfied": null,
          "artifact": {
            "name": "https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl",
            "size": "126kB"
          },
          "from": [
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "Jinja2",
          "version_installed": "2.10",
          "version_specified": ">=2.10"
        },
        {
          "already_satisfied": null,
          "artifact": {
            "name": "https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl",
            "size": "322kB"
          },
          "from": [
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "Werkzeug",
          "version_installed": "0.14.1",
          "version_specified": ">=0.14"
        },
        {
          "already_satisfied": null,
          "artifact": {
            "name": "https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz",
            "size": "46kB"
          },
          "from": [
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "itsdangerous",
          "version_installed": "0.24",
          "version_specified": ">=0.24"
        },
        {
          "already_satisfied": null,
          "artifact": {
            "name": "https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl",
            "size": "71kB"
          },
          "from": [
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "click",
          "version_installed": "6.7",
          "version_specified": ">=5.1"
        },
        {
          "already_satisfied": null,
          "artifact": {
            "name": "https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz",
            "size": null
          },
          "from": [
            {
              "package": "Jinja2",
              "version_specified": ">=2.10"
            },
            {
              "package": "flask",
              "version_specified": null
            }
          ],
          "package": "MarkupSafe",
          "version_installed": "1.0",
          "version_specified": ">=0.23"
        }
      ]
    }
  ]
}

$ cat Dockerfile.test
FROM fedora:28
RUN dnf install python3-pip && pip3 install flask && dnf update -y && dnf install -y vim

Example of extracting installed packages inside an image

To extract packages present on the resulting image run:

$ docker run -i package-extract -v extract-image -i fedora:27
2018-06-18 19:06:46,611 [1] DEBUG    thoth.package_extract.image: Downloading image 'fedora:27'
2018-06-18 19:06:46,611 [1] DEBUG    thoth.analyzer.command: Running command 'skopeo copy docker://fedora:27 dir://tmp/tmp9jmeuw__'
2018-06-18 19:06:51,669 [1] DEBUG    thoth.package_extract.image: skopeo stdout: Getting image source signatures
Copying blob sha256:2176639d844bbe1386912e1d9952cebdb8249923a16691025cf693963f8aec53

 0 B / 77.54 MB
 3.60 MB / 77.54 MB
 9.65 MB / 77.54 MB
 16.34 MB / 77.54 MB
 22.86 MB / 77.54 MB
 29.22 MB / 77.54 MB
 35.59 MB / 77.54 MB
 41.26 MB / 77.54 MB
 47.86 MB / 77.54 MB
 54.40 MB / 77.54 MB
 61.01 MB / 77.54 MB
 66.34 MB / 77.54 MB
 72.99 MB / 77.54 MB
 77.54 MB / 77.54 MB
 77.54 MB / 77.54 MB  2s
Copying config sha256:9110ae7f579f35ee0c3938696f23fe0f5fbe641738ea52eb83c2df7e9995fa17

 0 B / 2.29 KB
 2.29 KB / 2.29 KB  0s
Writing manifest to image destination
Storing signatures

2018-06-18 19:06:51,671 [1] DEBUG    thoth.package_extract.image: Layers found: [{'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip', 'size': 81308994, 'digest': 'sha256:2176639d844bbe1386912e1d9952cebdb8249923a16691025cf693963f8aec53'}]
2018-06-18 19:06:51,671 [1] DEBUG    thoth.package_extract.image: Extracting layer '2176639d844bbe1386912e1d9952cebdb8249923a16691025cf693963f8aec53'
2018-06-18 19:06:55,444 [1] DEBUG    thoth.analyzer.command: Running command 'mercator -config /usr/share/mercator/handlers.yml /tmp/tmp9jmeuw__/rootfs'
2018-06-18 19:06:55,776 [1] DEBUG    thoth.analyzer.command: Running command "rpm -qa --root '/tmp/tmp9jmeuw__/rootfs'"
2018-06-18 19:06:55,874 [1] DEBUG    thoth.analyzer.command: Running command "repoquery --deplist --installed --installroot '/tmp/tmp9jmeuw__/rootfs'"
{
"metadata": {
  "analyzer": "thoth-package-extract",
  "analyzer_version": "1.0.0",
  "arguments": {
    "extract-image": {
      "image": "fedora:27",
      "no_pretty": false,
      "no_tls_verify": false,
      "output": null,
      "registry_credentials": null,
      "timeout": null
    },
    "thoth-package-extract": {
      "no_color": false,
      "verbose": false
    }
  },
  "datetime": "2018-06-18T19:05:33.205504",
  "distribution": {
    "codename": "Twenty Seven",
    "id": "fedora",
    "like": "",
    "version": "27",
    "version_parts": {
      "build_number": "",
      "major": "27",
      "minor": ""
    }
  },
  "hostname": "bfd10ad99fd4",
  "python": {
    "api_version": 1013,
    "implementation_name": "cpython",
    "major": 3,
    "micro": 5,
    "minor": 6,
    "releaselevel": "final",
    "serial": 0
  }
},
"result": {
  "layers": [
    "2176639d844bbe1386912e1d9952cebdb8249923a16691025cf693963f8aec53"
  ],
  "mercator": [
    {
      "digests": {
        "manifest": "10460bb1fe6c167f6ef25f56cf940fab6fb40dd1"
      },
      "ecosystem": "Python-Dist",
      "path": "/usr/lib/python3.6/site-packages/iniparse-0.4-py3.6.egg-info/PKG-INFO",
      "result": {
        "author": "Paramjit Oberoi",
        "author-email": "[email protected]",
        "classifier": "Development Status :: 5 - Production/Stable\nIntended Audience :: Developers\nLicense :: OSI Approved :: MIT License\nLicense :: OSI Approved :: Python Software Foundation License\nOperating System :: OS Independent\nProgramming Language :: Python\nProgramming Language :: Python :: 2Programming Language :: Python :: 2.6\nProgramming Language :: Python :: 2.7\nProgramming Language :: Python :: 3\nProgramming Language :: Python :: 3.3\nProgramming Language :: Python :: 3.4Topic :: Software Development :: Libraries :: Python Modules",
        "description": "iniparse is an INI parser for  Python which is API compatible\nwith the standard library's ConfigParser, preserves structure of INI\nfiles (order of sections & options, indentation, comments, and blank\nlines are preserved when data is updated), and is more convenient to\nuse.",
        "home-page": "http://code.google.com/p/iniparse/",
        "license": "MIT",
        "name": "iniparse",
        "platform": "UNKNOWN",
        "summary": "Accessing and Modifying INI files",
        "version": "0.4"
      }
    },
    {
      "digests": {
        "manifest": "638db309ccb9ca512fc1c7c9ac207028038b8d5c"
      },
      "ecosystem": "Python-Dist",
      "path": "/usr/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json",
      "result": {
        "classifiers": [
          "Development Status :: 5 - Production/Stable",
          "Intended Audience :: Developers",
          "License :: OSI Approved :: MIT License",
          "Topic :: Software Development :: Build Tools",
          "Programming Language :: Python :: 2",
          "Programming Language :: Python :: 2.6",
          "Programming Language :: Python :: 2.7",
          "Programming Language :: Python :: 3",
          "Programming Language :: Python :: 3.3",
          "Programming Language :: Python :: 3.4",
          "Programming Language :: Python :: 3.5",
          "Programming Language :: Python :: Implementation :: PyPy"
        ],
        "extensions": {
          "python.commands": {
            "wrap_console": {
              "pip": "pip:main",
              "pip3": "pip:main",
              "pip3.6": "pip:main"
            }
          },
          "python.details": {
            "contacts": [
              {
                "email": "[email protected]",
                "name": "The pip developers",
                "role": "author"
              }
            ],
            "document_names": {
              "description": "DESCRIPTION.rst"
            },
            "project_urls": {
              "Home": "https://pip.pypa.io/"
            }
          },
          "python.exports": {
            "console_scripts": {
              "pip": "pip:main",
              "pip3": "pip:main",
              "pip3.6": "pip:main"
            }
          }
        },
        "extras": [
          "testing"
        ],
        "generator": "bdist_wheel (0.30.0.a0)",
        "keywords": [
          "easy_install",
          "distutils",
          "setuptools",
          "egg",
          "virtualenv"
        ],
        "license": "MIT",
        "metadata_version": "2.0",
        "name": "pip",
        "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*",
        "run_requires": [
          {
            "extra": "testing",
            "requires": [
              "mock",
              "pretend",
              "pytest",
              "scripttest (>=1.3)",
              "virtualenv (>=1.10)"
            ]
          }
        ],
        "summary": "The PyPA recommended tool for installing Python packages.",
        "test_requires": [
          {
            "requires": [
              "mock",
              "pretend",
              "pytest",
              "scripttest (>=1.3)",
              "virtualenv (>=1.10)"
            ]
          }
        ],
        "version": "9.0.1"
      }
    },
    {
      "digests": {
        "manifest": "17b684b084a699aac2d70e4ceb03ac69b652b493"
      },
      "ecosystem": "Python-Dist",
      "path": "/usr/lib/python3.6/site-packages/setuptools-37.0.0.dist-info/metadata.json",
      "result": {
        "classifiers": [
          "Development Status :: 5 - Production/Stable",
          "Intended Audience :: Developers",
          "License :: OSI Approved :: MIT License",
          "Operating System :: OS Independent",
          "Programming Language :: Python :: 2",
          "Programming Language :: Python :: 2.7",
          "Programming Language :: Python :: 3",
          "Programming Language :: Python :: 3.3",
          "Programming Language :: Python :: 3.4",
          "Programming Language :: Python :: 3.5",
          "Programming Language :: Python :: 3.6",
          "Topic :: Software Development :: Libraries :: Python Modules",
          "Topic :: System :: Archiving :: Packaging",
          "Topic :: System :: Systems Administration",
          "Topic :: Utilities"
        ],
        "description_content_type": "text/x-rst; charset=UTF-8",
        "extensions": {
          "python.commands": {
            "wrap_console": {
              "easy_install": "setuptools.command.easy_install:main",
              "easy_install-3.6": "setuptools.command.easy_install:main"
            }
          },
          "python.details": {
            "contacts": [
              {
                "email": "[email protected]",
                "name": "Python Packaging Authority",
                "role": "author"
              }
            ],
            "document_names": {
              "description": "DESCRIPTION.rst",
              "license": "LICENSE.txt"
            },
            "project_urls": {
              "Home": "https://github.com/pypa/setuptools"
            }
          },
          "python.exports": {
            "console_scripts": {
              "easy_install": "setuptools.command.easy_install:main",
              "easy_install-3.6": "setuptools.command.easy_install:main"
            },
            "distutils.commands": {
              "alias": "setuptools.command.alias:alias",
              "bdist_egg": "setuptools.command.bdist_egg:bdist_egg",
              "bdist_rpm": "setuptools.command.bdist_rpm:bdist_rpm",
              "bdist_wininst": "setuptools.command.bdist_wininst:bdist_wininst",
              "build_clib": "setuptools.command.build_clib:build_clib",
              "build_ext": "setuptools.command.build_ext:build_ext",
              "build_py": "setuptools.command.build_py:build_py",
              "develop": "setuptools.command.develop:develop",
              "dist_info": "setuptools.command.dist_info:dist_info",
              "easy_install": "setuptools.command.easy_install:easy_install",
              "egg_info": "setuptools.command.egg_info:egg_info",
              "install": "setuptools.command.install:install",
              "install_egg_info": "setuptools.command.install_egg_info:install_egg_info",
              "install_lib": "setuptools.command.install_lib:install_lib",
              "install_scripts": "setuptools.command.install_scripts:install_scripts",
              "register": "setuptools.command.register:register",
              "rotate": "setuptools.command.rotate:rotate",
              "saveopts": "setuptools.command.saveopts:saveopts",
              "sdist": "setuptools.command.sdist:sdist",
              "setopt": "setuptools.command.setopt:setopt",
              "test": "setuptools.command.test:test",
              "upload": "setuptools.command.upload:upload",
              "upload_docs": "setuptools.command.upload_docs:upload_docs"
            },
            "distutils.setup_keywords": {
              "convert_2to3_doctests": "setuptools.dist:assert_string_list",
              "dependency_links": "setuptools.dist:assert_string_list",
              "eager_resources": "setuptools.dist:assert_string_list",
              "entry_points": "setuptools.dist:check_entry_points",
              "exclude_package_data": "setuptools.dist:check_package_data",
              "extras_require": "setuptools.dist:check_extras",
              "include_package_data": "setuptools.dist:assert_bool",
              "install_requires": "setuptools.dist:check_requirements",
              "namespace_packages": "setuptools.dist:check_nsp",
              "package_data": "setuptools.dist:check_package_data",
              "packages": "setuptools.dist:check_packages",
              "python_requires": "setuptools.dist:check_specifier",
              "setup_requires": "setuptools.dist:check_requirements",
              "test_loader": "setuptools.dist:check_importable",
              "test_runner": "setuptools.dist:check_importable",
              "test_suite": "setuptools.dist:check_test_suite",
              "tests_require": "setuptools.dist:check_requirements",
              "use_2to3": "setuptools.dist:assert_bool",
              "use_2to3_exclude_fixers": "setuptools.dist:assert_string_list",
              "use_2to3_fixers": "setuptools.dist:assert_string_list",
              "zip_safe": "setuptools.dist:assert_bool"
            },
            "egg_info.writers": {
              "PKG-INFO": "setuptools.command.egg_info:write_pkg_info",
              "dependency_links.txt": "setuptools.command.egg_info:overwrite_arg",
              "depends.txt": "setuptools.command.egg_info:warn_depends_obsolete",
              "eager_resources.txt": "setuptools.command.egg_info:overwrite_arg",
              "entry_points.txt": "setuptools.command.egg_info:write_entries",
              "namespace_packages.txt": "setuptools.command.egg_info:overwrite_arg",
              "requires.txt": "setuptools.command.egg_info:write_requirements",
              "top_level.txt": "setuptools.command.egg_info:write_toplevel_names"
            },
            "setuptools.installation": {
              "eggsecutable": "setuptools.command.easy_install:bootstrap"
            }
          }
        },
        "extras": [
          "certs",
          "ssl"
        ],
        "generator": "bdist_wheel (0.30.0.a0)",
        "keywords": [
          "CPAN",
          "PyPI",
          "distutils",
          "eggs",
          "package",
          "management"
        ],
        "metadata_version": "2.0",
        "name": "setuptools",
        "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*",
        "run_requires": [
          {
            "extra": "certs",
            "requires": [
              "certifi (==2016.9.26)"
            ]
          },
          {
            "environment": "sys_platform=='win32'",
            "extra": "ssl",
            "requires": [
              "wincertstore (==0.2)"
            ]
          }
        ],
        "summary": "Easily download, build, install, upgrade, and uninstall Python packages",
        "version": "37.0.0"
      }
    },
    {
      "digests": {
        "manifest": "1153f208db7328880763cf52bdcf940baf221071"
      },
      "ecosystem": "Python-Dist",
      "path": "/usr/lib/python3.6/site-packages/six-1.11.0.dist-info/metadata.json",
      "result": {
        "classifiers": [
          "Programming Language :: Python :: 2",
          "Programming Language :: Python :: 3",
          "Intended Audience :: Developers",
          "License :: OSI Approved :: MIT License",
          "Topic :: Software Development :: Libraries",
          "Topic :: Utilities"
        ],
        "extensions": {
          "python.details": {
            "contacts": [
              {
                "email": "[email protected]",
                "name": "Benjamin Peterson",
                "role": "author"
              }
            ],
            "document_names": {
              "description": "DESCRIPTION.rst"
            },
            "project_urls": {
              "Home": "http://pypi.python.org/pypi/six/"
            }
          }
        },
        "generator": "bdist_wheel (0.30.0.a0)",
        "license": "MIT",
        "metadata_version": "2.0",
        "name": "six",
        "summary": "Python 2 and 3 compatibility utilities",
        "test_requires": [
          {
            "requires": [
              "pytest"
            ]
          }
        ],
        "version": "1.11.0"
      }
    }
  ],
  "rpm": [
    "xkeyboard-config-2.22-1.fc27.noarch",
    "emacs-filesystem-25.3-3.fc27.noarch",
    "fedora-repos-27-2.noarch",
    "setup-2.10.10-1.fc27.noarch",
    "basesystem-11-4.fc27.noarch",
    "libreport-filesystem-2.9.3-2.fc27.x86_64",
    "tzdata-2018c-1.fc27.noarch",
    "glibc-langpack-en-2.26-26.fc27.x86_64",
    "ncurses-libs-6.0-13.20170722.fc27.x86_64",
    "libsepol-2.7-2.fc27.x86_64",
    "libselinux-2.7-3.fc27.x86_64",
    "info-6.4-6.fc27.x86_64",
    "bzip2-libs-1.0.6-24.fc27.x86_64",
    "expat-2.2.5-1.fc27.x86_64",
    "nspr-4.18.0-1.fc27.x86_64",
    "elfutils-libelf-0.170-1.fc27.x86_64",
    "libgcrypt-1.8.2-1.fc27.x86_64",
    "libxml2-2.9.7-1.fc27.x86_64",
    "gmp-6.1.2-6.fc27.x86_64",
    "libzstd-1.3.3-1.fc27.x86_64",
    "chkconfig-1.10-3.fc27.x86_64",
    "libcom_err-1.43.5-2.fc27.x86_64",
    "libattr-2.4.47-21.fc27.x86_64",
    "sed-4.4-4.fc27.x86_64",
    "libunistring-0.9.7-3.fc27.x86_64",
    "lz4-libs-1.8.0-1.fc27.x86_64",
    "libcap-ng-0.7.8-5.fc27.x86_64",
    "nss-softokn-freebl-3.35.0-1.0.fc27.x86_64",
    "nss-softokn-3.35.0-1.0.fc27.x86_64",
    "keyutils-libs-1.5.10-3.fc27.x86_64",
    "grep-3.1-3.fc27.x86_64",
    "dbus-libs-1.12.0-1.fc27.x86_64",
    "p11-kit-trust-0.23.9-2.fc27.x86_64",
    "libusbx-1.0.21-4.fc27.x86_64",
    "libpsl-0.18.0-1.fc27.x86_64",
    "mpfr-3.1.6-1.fc27.x86_64",
    "gdbm-1.13-6.fc27.x86_64",
    "libdb-utils-5.3.28-27.fc27.x86_64",
    "kmod-libs-25-1.fc27.x86_64",
    "coreutils-common-8.27-20.fc27.x86_64",
    "elfutils-default-yama-scope-0.170-1.fc27.noarch",
    "ncurses-6.0-13.20170722.fc27.x86_64",
    "coreutils-8.27-20.fc27.x86_64",
    "python3-pip-9.0.1-14.fc27.noarch",
    "python3-3.6.4-8.fc27.x86_64",
    "libblkid-2.30.2-1.fc27.x86_64",
    "libmount-2.30.2-1.fc27.x86_64",
    "dbus-glib-0.108-4.fc27.x86_64",
    "libutempter-1.1.6-11.fc27.x86_64",
    "python3-libcomps-0.1.8-6.fc27.x86_64",
    "python3-iniparse-0.4-26.fc27.noarch",
    "gzip-1.8-4.fc27.x86_64",
    "libpwquality-1.4.0-3.fc27.x86_64",
    "nss-pem-1.0.3-6.fc27.x86_64",
    "nss-sysinit-3.35.0-1.1.fc27.x86_64",
    "libarchive-3.3.1-3.fc27.x86_64",
    "trousers-lib-0.3.13-9.fc27.x86_64",
    "libsss_nss_idmap-1.16.0-6.fc27.x86_64",
    "libsigsegv-2.11-3.fc27.x86_64",
    "krb5-libs-1.15.2-7.fc27.x86_64",
    "openldap-2.4.45-4.fc27.x86_64",
    "qrencode-libs-3.4.4-3.fc27.x86_64",
    "gnupg2-2.2.5-1.fc27.x86_64",
    "python3-gpg-1.9.0-6.fc27.x86_64",
    "util-linux-2.30.2-1.fc27.x86_64",
    "iptables-libs-1.6.1-4.fc27.x86_64",
    "device-mapper-libs-1.02.144-1.fc27.x86_64",
    "systemd-pam-234-10.git5f8984e.fc27.x86_64",
    "dbus-1.12.0-1.fc27.x86_64",
    "libcurl-7.55.1-9.fc27.x86_64",
    "python3-librepo-1.8.0-1.fc27.x86_64",
    "rpm-plugin-selinux-4.14.1-1.fc27.x86_64",
    "rpm-4.14.1-1.fc27.x86_64",
    "libdnf-0.11.1-1.fc27.x86_64",
    "deltarpm-3.6-24.fc27.x86_64",
    "python3-rpm-4.14.1-1.fc27.x86_64",
    "dnf-2.7.5-2.fc27.noarch",
    "rpm-plugin-systemd-inhibit-4.14.1-1.fc27.x86_64",
    "gnupg2-smime-2.2.5-1.fc27.x86_64",
    "nss-tools-3.35.0-1.1.fc27.x86_64",
    "pinentry-0.9.7-4.fc27.x86_64",
    "shared-mime-info-1.9-1.fc27.x86_64",
    "tar-1.29-7.fc27.x86_64",
    "libxkbcommon-0.7.1-5.fc27.x86_64",
    "rootfiles-8.1-21.fc27.noarch",
    "libgcc-7.3.1-5.fc27.x86_64",
    "publicsuffix-list-dafsa-20180223-1.fc27.noarch",
    "fedora-gpg-keys-27-2.noarch",
    "fedora-release-27-1.noarch",
    "filesystem-3.3-3.fc27.x86_64",
    "ncurses-base-6.0-13.20170722.fc27.noarch",
    "dnf-conf-2.7.5-2.fc27.noarch",
    "glibc-common-2.26-26.fc27.x86_64",
    "glibc-2.26-26.fc27.x86_64",
    "bash-4.4.19-1.fc27.x86_64",
    "pcre2-10.31-1.fc27.x86_64",
    "zlib-1.2.11-4.fc27.x86_64",
    "xz-libs-5.2.3-4.fc27.x86_64",
    "libgpg-error-1.27-3.fc27.x86_64",
    "libdb-5.3.28-27.fc27.x86_64",
    "nss-util-3.35.0-1.0.fc27.x86_64",
    "libcap-2.25-7.fc27.x86_64",
    "popt-1.16-12.fc27.x86_64",
    "readline-7.0-7.fc27.x86_64",
    "libuuid-2.30.2-1.fc27.x86_64",
    "lua-libs-5.3.4-7.fc27.x86_64",
    "libassuan-2.5.1-1.fc27.x86_64",
    "libffi-3.1-14.fc27.x86_64",
    "libacl-2.2.52-18.fc27.x86_64",
    "p11-kit-0.23.9-2.fc27.x86_64",
    "libidn2-2.0.4-3.fc27.x86_64",
    "sqlite-libs-3.20.1-1.fc27.x86_64",
    "audit-libs-2.8.2-1.fc27.x86_64",
    "libcrypt-nss-2.26-26.fc27.x86_64",
    "libksba-1.3.5-5.fc27.x86_64",
    "pcre-8.41-5.fc27.x86_64",
    "systemd-libs-234-10.git5f8984e.fc27.x86_64",
    "libtasn1-4.13-1.fc27.x86_64",
    "ca-certificates-2018.2.22-1.0.fc27.noarch",
    "libsemanage-2.7-2.fc27.x86_64",
    "acl-2.2.52-18.fc27.x86_64",
    "nettle-3.4-1.fc27.x86_64",
    "libcomps-0.1.8-6.fc27.x86_64",
    "libmetalink-0.1.3-4.fc27.x86_64",
    "libidn-1.33-4.fc27.x86_64",
    "file-libs-5.31-10.fc27.x86_64",
    "elfutils-libs-0.170-1.fc27.x86_64",
    "openssl-libs-1.1.0g-1.fc27.x86_64",
    "crypto-policies-20170816-2.gite0a4066.fc27.noarch",
    "python3-setuptools-37.0.0-1.fc27.noarch",
    "python3-libs-3.6.4-8.fc27.x86_64",
    "shadow-utils-4.5-4.fc27.x86_64",
    "glib2-2.54.3-2.fc27.x86_64",
    "libsecret-0.18.5-5.fc27.x86_64",
    "libfdisk-2.30.2-1.fc27.x86_64",
    "python3-six-1.11.0-1.fc27.noarch",
    "gnutls-3.5.18-2.fc27.x86_64",
    "cracklib-2.9.6-7.fc27.x86_64",
    "pam-1.3.0-6.fc27.x86_64",
    "nss-3.35.0-1.1.fc27.x86_64",
    "ima-evm-utils-1.1-2.fc27.x86_64",
    "libssh2-1.8.0-5.fc27.x86_64",
    "libsss_idmap-1.16.0-6.fc27.x86_64",
    "libverto-0.2.6-11.fc27.x86_64",
    "gawk-4.1.4-8.fc27.x86_64",
    "cyrus-sasl-lib-2.1.26-34.fc27.x86_64",
    "libseccomp-2.3.3-1.fc27.x86_64",
    "npth-1.5-3.fc27.x86_64",
    "gpgme-1.9.0-6.fc27.x86_64",
    "libsmartcols-2.30.2-1.fc27.x86_64",
    "libpcap-1.8.1-6.fc27.x86_64",
    "device-mapper-1.02.144-1.fc27.x86_64",
    "cryptsetup-libs-1.7.5-3.fc27.x86_64",
    "systemd-234-10.git5f8984e.fc27.x86_64",
    "libnghttp2-1.25.0-1.fc27.x86_64",
    "librepo-1.8.0-1.fc27.x86_64",
    "curl-7.55.1-9.fc27.x86_64",
    "rpm-libs-4.14.1-1.fc27.x86_64",
    "libsolv-0.6.33-1.fc27.x86_64",
    "python3-hawkey-0.11.1-1.fc27.x86_64",
    "rpm-build-libs-4.14.1-1.fc27.x86_64",
    "python3-dnf-2.7.5-2.fc27.noarch",
    "dnf-yum-2.7.5-2.fc27.noarch",
    "trousers-0.3.13-9.fc27.x86_64",
    "sssd-client-1.16.0-6.fc27.x86_64",
    "cracklib-dicts-2.9.6-7.fc27.x86_64",
    "python3-dbus-1.2.4-8.fc27.x86_64",
    "vim-minimal-8.0.1553-1.fc27.x86_64",
    "diffutils-3.6-3.fc27.x86_64",
    "langpacks-en-1.0-10.fc27.noarch",
    "gpg-pubkey-f5282ee4-58ac92a3"
  ],
  "rpm-dependencies": [
    {
      "arch": "x86_64",
      "dependencies": [
        "libacl = 2.2.52-18.fc27",
        "libacl.so.1()(64bit)",
        "libacl.so.1(ACL_1.0)(64bit)",
        "libattr.so.1()(64bit)",
        "libc.so.6()(64bit)",
        "libc.so.6(GLIBC_2.14)(64bit)",
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "libc.so.6(GLIBC_2.3.4)(64bit)",
        "libc.so.6(GLIBC_2.4)(64bit)",
        "rpmlib(CompressedFileNames) <= 3.0.4-1",
        "rpmlib(FileDigests) <= 4.6.0-1",
        "rpmlib(PayloadFilesHavePrefix) <= 4.0-1",
        "rpmlib(PayloadIsXz) <= 5.2-1",
        "rtld(GNU_HASH)"
      ],
      "epoch": null,
      "name": "acl",
      "package_identifier": "acl-2.2.52-18.fc27.x86_64",
      "release": "18.fc27",
      "src": false,
      "version": "2.2.52"
    },
    {
      "arch": "x86_64",
      "dependencies": [
        "/sbin/ldconfig",
        "/sbin/ldconfig",
        "config(audit-libs) = 2.8.2-1.fc27",
        "libaudit.so.1()(64bit)",
        "libc.so.6()(64bit)",
        "libc.so.6(GLIBC_2.14)(64bit)",
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "libc.so.6(GLIBC_2.3)(64bit)",
        "libc.so.6(GLIBC_2.3.4)(64bit)",
        "libc.so.6(GLIBC_2.4)(64bit)",
        "libc.so.6(GLIBC_2.8)(64bit)",
        "libcap-ng.so.0()(64bit)",
        "rpmlib(CompressedFileNames) <= 3.0.4-1",
        "rpmlib(FileDigests) <= 4.6.0-1",
        "rpmlib(PayloadFilesHavePrefix) <= 4.0-1",
        "rpmlib(PayloadIsXz) <= 5.2-1",
        "rtld(GNU_HASH)"
      ],
      "epoch": null,
      "name": "audit-libs",
      "package_identifier": "audit-libs-2.8.2-1.fc27.x86_64",
      "release": "1.fc27",
      "src": false,
      "version": "2.8.2"
    },
    {
      "arch": "noarch",
      "dependencies": [
        "filesystem",
        "rpmlib(CompressedFileNames) <= 3.0.4-1",
        "rpmlib(FileDigests) <= 4.6.0-1",
        "rpmlib(PayloadFilesHavePrefix) <= 4.0-1",
        "rpmlib(PayloadIsXz) <= 5.2-1",
        "setup"
      ],
      "epoch": null,
      "name": "basesystem",
      "package_identifier": "basesystem-11-4.fc27.noarch",
      "release": "4.fc27",
      "src": false,
      "version": "11"
    },
    {
      "arch": "x86_64",
      "dependencies": [
        "/bin/sh",
        "config(bash) = 4.4.19-1.fc27",
        "filesystem >= 3",
        "libc.so.6()(64bit)",
        "libc.so.6(GLIBC_2.11)(64bit)",
        "libc.so.6(GLIBC_2.14)(64bit)",
        "libc.so.6(GLIBC_2.15)(64bit)",
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "libc.so.6(GLIBC_2.3)(64bit)",
        "libc.so.6(GLIBC_2.3.4)(64bit)",
        "libc.so.6(GLIBC_2.4)(64bit)",
        "libc.so.6(GLIBC_2.8)(64bit)",
        "libdl.so.2()(64bit)",
        "libdl.so.2(GLIBC_2.2.5)(64bit)",
        "libtinfo.so.6()(64bit)",
        "rpmlib(BuiltinLuaScripts) <= 4.2.2-1",
        "rpmlib(CompressedFileNames) <= 3.0.4-1",
        "rpmlib(FileDigests) <= 4.6.0-1",
        "rpmlib(PayloadFilesHavePrefix) <= 4.0-1",
        "rpmlib(PayloadIsXz) <= 5.2-1",
        "rtld(GNU_HASH)"
      ],
      "epoch": null,
      "name": "bash",
      "package_identifier": "bash-4.4.19-1.fc27.x86_64",
      "release": "1.fc27",
      "src": false,
      "version": "4.4.19"
    },
    {
      "arch": "x86_64",
      "dependencies": [
        "/sbin/ldconfig",
        "/sbin/ldconfig",
        "libc.so.6()(64bit)",
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "libc.so.6(GLIBC_2.3)(64bit)",
        "libc.so.6(GLIBC_2.3.4)(64bit)",
        "libc.so.6(GLIBC_2.4)(64bit)",
        "rpmlib(CompressedFileNames) <= 3.0.4-1",
        "rpmlib(FileDigests) <= 4.6.0-1",
        "rpmlib(PayloadFilesHavePrefix) <= 4.0-1",
        "rpmlib(PayloadIsXz) <= 5.2-1",
        "rtld(GNU_HASH)"
      ],
      "epoch": null,
      "name": "bzip2-libs",
      "package_identifier": "bzip2-libs-1.0.6-24.fc27.x86_64",
      "release": "24.fc27",
      "src": false,
      "version": "1.0.6"
    },
    {
      "arch": "noarch",
      "dependencies": [
        "/bin/sh",
        "/bin/sh",
        "/bin/sh",
        "config(ca-certificates) = 2018.2.22-1.0.fc27",
        "p11-kit >= 0.23.4",
        "p11-kit-trust >= 0.23.4",
        "rpmlib(CompressedFileNames) <= 3.0.4-1",
        "rpmlib(FileDigests) <= 4.6.0-1",
        "rpmlib(PayloadFilesHavePrefix) <= 4.0-1",
        "rpmlib(PayloadIsXz) <= 5.2-1"
      ],
      "epoch": null,
      "name": "ca-certificates",
      "package_identifier": "ca-certificates-2018.2.22-1.0.fc27.noarch",
      "release": "1.0.fc27",
      "src": false,
      "version": "2018.2.22"
    },
    {
      "arch": "x86_64",
      "dependencies": [
        "libc.so.6()(64bit)",
        "libc.so.6(GLIBC_2.14)(64bit)",
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "libc.so.6(GLIBC_2.3)(64bit)",
        "libc.so.6(GLIBC_2.3.4)(64bit)",
        "libc.so.6(GLIBC_2.4)(64bit)",
        "libc.so.6(GLIBC_2.8)(64bit)",
        "libpopt.so.0()(64bit)",
        "libpopt.so.0(LIBPOPT_0)(64bit)",
        "libselinux.so.1()(64bit)",
        "libsepol.so.1()(64bit)",
        "rpmlib(CompressedFileNames) <= 3.0.4-1",
        "rpmlib(FileDigests) <= 4.6.0-1",
        "rpmlib(PayloadFilesHavePrefix) <= 4.0-1",
        "rpmlib(PayloadIsXz) <= 5.2-1",
        "rtld(GNU_HASH)"
      ],
      "epoch": null,
      "name": "chkconfig",
      "package_identifier": "chkconfig-1.10-3.fc27.x86_64",
      "release": "3.fc27",
      "src": false,
      "version": "1.10"
    },
    {
      "arch": "x86_64",
      "dependencies": [
        "coreutils-common = 8.27-20.fc27",
        "libacl.so.1()(64bit)",
        "libacl.so.1(ACL_1.0)(64bit)",
        "libattr.so.1()(64bit)",
        "libattr.so.1(ATTR_1.1)(64bit)",
        "libc.so.6()(64bit)",
        "libc.so.6(GLIBC_2.10)(64bit)",
        "libc.so.6(GLIBC_2.14)(64bit)",
        "libc.so.6(GLIBC_2.15)(64bit)",
        "libc.so.6(GLIBC_2.17)(64bit)",
        "libc.so.6(GLIBC_2.2.5)(64bit)",
        "libc.so.6(GLIBC_2.3)(64bit)",
        "libc.so.6(GLIBC_2.3.4)(64bit)",
        "libc.so.6(GLIBC_2.4)(64bit)",
        "libc.so.6(GLIBC_2.6)(64bit)",
        "libc.so.6(GLIBC_2.7)(64bit)",
        "libcap.so.2()(64bit)",
        "libcrypto.so.1.1()(64bit)",
        "libcrypto.so.1.1(OPENSSL_1_1_0)(64bit)",
        "libgmp.so.10()(64bit)",
        "libpthread.so.0()(64bit)",
        "libpthread.so.0(GLIBC_2.2.5)(64bit)",
        "libpthread.so.0(GLIBC_2.3.2)(64bit)",
        "librt.so.1()(64bit)",
        "librt.so.1(GLIBC_2.3.3)(64bit)",
        "libselinux.so.1()(64bit)",
        "ncurses",
        "rpmlib(CompressedFileNames) <= 3.0.4-1",
        "rpmlib(FileDigests) <= 4.6.0-1",
        "rpmlib(PayloadFilesHavePrefix) <= 4.0-1",
        "rpmlib(PayloadIsXz) <= 5.2-1",
        "rtld(GNU_HASH)"
      ],
      "epoch": null,
      "name": "coreutils",
      "package_identifier": "coreutils-8.27-20.fc27.x86_64",
      "release": "20.fc27",
      "src": false,
      "version": "8.27"
    },

    ...
}

package-extract's People

Contributors

fridex avatar goern avatar sesheta avatar hemajv avatar dependencies-bot avatar harshad16 avatar

Watchers

James Cloos avatar Marek Čermák avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.