{"id":16935660,"url":"https://github.com/knu/apt-bundle","last_synced_at":"2026-02-09T13:06:10.390Z","repository":{"id":226263796,"uuid":"768095890","full_name":"knu/apt-bundle","owner":"knu","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-12T10:28:29.000Z","size":30,"stargazers_count":3,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-12T18:54:59.750Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/knu.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"knu"}},"created_at":"2024-03-06T13:13:29.000Z","updated_at":"2026-01-10T10:08:22.000Z","dependencies_parsed_at":"2024-11-26T12:21:50.282Z","dependency_job_id":"6029defb-7623-418e-a611-6dc33e606d26","html_url":"https://github.com/knu/apt-bundle","commit_stats":null,"previous_names":["knu/apt-bundle"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/knu/apt-bundle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knu%2Fapt-bundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knu%2Fapt-bundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knu%2Fapt-bundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knu%2Fapt-bundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/knu","download_url":"https://codeload.github.com/knu/apt-bundle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knu%2Fapt-bundle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29266217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T12:53:16.161Z","status":"ssl_error","status_checked_at":"2026-02-09T12:52:30.244Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-10-13T20:55:01.693Z","updated_at":"2026-02-09T13:06:10.373Z","avatar_url":"https://github.com/knu.png","language":"Shell","funding_links":["https://github.com/sponsors/knu"],"categories":[],"sub_categories":[],"readme":"# apt-bundle\n\nApt-bundle is a simple tool to install a list of packages from a file using the apt(8) package manager on Debian/Ubuntu based systems.  It is useful to set up a fresh machine or a container within a CI environment.  By employing apt-bundle, you can ensure consistent package sets across different environments and seamlessly share development or runtime environments with collaborators.\n\n## Installation\n\nJust copy the `apt-bundle` script to a directory in your `$PATH` and make it executable.\n\n### Use from GitHub Actions\n\nYou can use the apt-bundle action to install packages in a GitHub Actions workflow.  Here is an example workflow that installs a list of packages from a Debfile in the repository.\n\n```yaml\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      # Assume the source tree has a Debfile\n      - uses: actions/checkout@v4\n\n      - uses: knu/apt-bundle@v1\n        with:\n          debfile: path/to/Debfile  # optional; \"Debfile\" by default\n      # ...\n```\n\n#### Inputs\n\n- `debfile`\n\n    The path to the Debfile.  The default is `Debfile` in the repository root.\n\n## Command Usage\n\n`apt-bundle [-n] [-v] [\u003cfile\u003e...]`\n\n- `-n`\n\n    Dry-run mode.  The command will not install any packages, but will show what would be done.\n\n- `-v`\n\n    Verbose mode.  The command will show the commands it runs.\n\n- `\u003cfile\u003e`\n\n    The file to read the package list from.  The default is `Debfile` in the current directory.\n\n## Debfile Format\n\nCreate a text file and list the packages, source lists and keyrings you want in your environment  in that file using the commands described later.  This file is interpreted by `/bin/sh` (dash) as a shell script, and typically named `Debfile`.  Apt-bundle looks for the file with that name in the current directory by default.\n\n```sh\npackage build-essential\npackage libreadline-dev\npackage postgresql-client\n\n# The latest version of git from ppa\nppa git-core/ppa\npackage git\n\n# Google Cloud SDK from the official third-party repository\nkeyring cloud.google https://packages.cloud.google.com/apt/doc/apt-key.gpg\nsource google-cloud-sdk \u003c\u003cEOF\ndeb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main\nEOF\npackage google-cloud-sdk\n```\n\nIn this file, `ARCH`, which is set to the output of `dpkg --print-architecture`, and the variables defined in `/etc/os-release` are available as environment variables so you can use them to conditionally install packages or include values like `$VERSION_CODENAME` in source list definitions.\n\n## Special commands available in Debfile\n\n### package\n\nUsage: `package \u003cname\u003e [\u003cversion-constraints\u003e]` | `package \u003cURL\u003e`\n\nThe first syntax is to specify a single package name with optional version constraints.  The version constraints are passed to `apt satisfy` with the package name.  See [Syntax of relationship fields](https://www.debian.org/doc/debian-policy/ch-relationships.html#syntax-of-relationship-fields) for details.\n\nThe second syntax is to specify a URL to a .deb file to be downloaded and installed.  The URL can be an HTTPS or HTTP URL.\n\ne.g.\n```sh\npackage faketime\n\npackage git '\u003e= 1:2.43.0'\n\npackage https://example.com/path/to/package.deb\n```\n\n### ppa\n\nUsage: `ppa \u003cuser\u003e/\u003cname\u003e`\n\nThis command adds a Personal Package Archive (PPA) to the system.  The only argument to the command is the name of the PPA in the format `user/ppa`.\n\ne.g.\n```sh\nppa git-core/ppa\n```\n\n### keyring\n\nUsage: `keyring \u003cname\u003e \u003cURL\u003e` | `keyring \u003cname\u003e \u003c\u003cSH...SH`\n\nThis command adds a keyring to the system.  The first argument is the name of the keyring, and the second argument is the URL to the GnuPG public key file.  Instead of specifying the second argument, a shell script that outputs a public GnuPG key or a keyring file to stdout can be fed to the command using a here document.  The keyring file will be saved in `/usr/share/keyrings` with the name `\u003cname\u003e.gpg`.\n\ne.g.\n```sh\nkeyring cloud.google https://packages.cloud.google.com/apt/doc/apt-key.gpg\n```\n\n### source\n\nUsage: `source \u003cname\u003e \u003c\u003cEOF...EOF`\n\nThis command adds a source list to the system.  The first argument is the name of the source list and a shell script that outputs the source list should be fed to the command using a here document.  The source list file will be saved in `/etc/apt/sources.list.d` with the name `\u003cname\u003e.list`.\n\ne.g.\n```sh\nsource google-cloud-sdk \u003c\u003cEOF\ndeb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main\nEOF\n```\n\n## License\n\nCopyright (c) 2024 Akinori Musha\n\nThis software is released under the 2-clause BSD license.  See the LICENSE file for details.\n\nVisit [GitHub Repository](https://github.com/knu/apt-bundle) for the latest information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknu%2Fapt-bundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknu%2Fapt-bundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknu%2Fapt-bundle/lists"}