{"id":21259152,"url":"https://github.com/mycroftai/pako","last_synced_at":"2025-07-11T02:33:04.458Z","repository":{"id":51299863,"uuid":"170096921","full_name":"MycroftAI/pako","owner":"MycroftAI","description":"The universal package manager library","archived":false,"fork":false,"pushed_at":"2021-05-17T06:08:35.000Z","size":36,"stargazers_count":4,"open_issues_count":1,"forks_count":6,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-06-29T03:28:02.635Z","etag":null,"topics":["hacktoberfest","library","package-manager"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MycroftAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-11T08:53:18.000Z","updated_at":"2022-12-18T13:30:11.000Z","dependencies_parsed_at":"2022-09-05T23:40:46.690Z","dependency_job_id":null,"html_url":"https://github.com/MycroftAI/pako","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/MycroftAI/pako","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MycroftAI%2Fpako","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MycroftAI%2Fpako/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MycroftAI%2Fpako/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MycroftAI%2Fpako/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MycroftAI","download_url":"https://codeload.github.com/MycroftAI/pako/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MycroftAI%2Fpako/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264712935,"owners_count":23652693,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","library","package-manager"],"created_at":"2024-11-21T04:12:56.916Z","updated_at":"2025-07-11T02:33:04.164Z","avatar_url":"https://github.com/MycroftAI.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pako\n\n*The universal package manager library*\n\nOften, scripts need to install system dependencies using the native package manager of the user's\n OS. Typically, this is solved by having some bash script that runs `apt-get`, assuming the user \n is on Ubuntu. Smarter scripts use hand crafted code to detect the user's platform and aggregate \n a set of dependencies on a few of the more popular platforms. Our approach is different:\n \n ```bash\npako install libgdbm-devel sdl2-dev\n```\n\nOn Ubuntu, this command will run:\n```bash\nsudo apt-get install -y libgdbm-dev libsdl2-dev\n```\n\nHowever, on Solus, this will run:\n```bash\nsudo eopkg install -y gdbm-devel sdl2-devel\n```\n\nIt works as follows:\n - Parse package format (devel/debug/normal library or executable)\n - Look up package managers that exist in PATH\n - Format parsed package with common package convention of package manager\n\n## Installation\n\n```bash\npip3 install pako\n```\n\n## Usage\nCommand line:\n```\npako (install|update) [package] [-t, --type format]\n```\n\nPython bindings:\n```python\nfrom pako import PakoManager, PackageFormat\n\nmanager = PakoManager()\nmanager.update()\nmanager.install(['gdbm-dev', 'sdl2-dev'])\nmanager.install(['ssl-dev'], overrides={'eopkg': ['openssl-devel']})\n```\n\n### Non-interactive mode\n\nA `no-confirm` flag can be added to calls. This will be translated to the equivalent command line flag such as `apt install -y`.\n\n```python\nfrom pako import PakoManager, PackageFormat\n\nmanager = PakoManager()\nmanager.install(['example-package'], flags=['no-confirm'])\n```\n\n## Help Wanted\n\nThis tool can improve to fit a lot of use cases. Feel free to create an issue or pull request for\n new features and improvements. For instance, we need to figure out the best way to handle cases \n where a simple package format won't find the appropriate package.\n\n### Add Your Package Manager\n\nAdd your package manager by adding another data block to the dict object in \n`pako/package_manager_data.py`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmycroftai%2Fpako","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmycroftai%2Fpako","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmycroftai%2Fpako/lists"}