{"id":18793390,"url":"https://github.com/89luca89/podman-launcher","last_synced_at":"2025-04-13T14:32:03.992Z","repository":{"id":193101282,"uuid":"688119281","full_name":"89luca89/podman-launcher","owner":"89luca89","description":"Simple golang wrapper to bundle a podman installation in a single binary","archived":false,"fork":false,"pushed_at":"2024-03-11T16:30:30.000Z","size":64,"stargazers_count":18,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-06-21T20:07:42.051Z","etag":null,"topics":["cli","containers","development","distrobox","golang","launcher","linux","podman","steamdeck","wrapper"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/89luca89.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}},"created_at":"2023-09-06T17:33:27.000Z","updated_at":"2024-06-20T21:04:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"df58e814-5044-427a-b535-a083a1e2a508","html_url":"https://github.com/89luca89/podman-launcher","commit_stats":null,"previous_names":["89luca89/podman-launcher"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/89luca89%2Fpodman-launcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/89luca89%2Fpodman-launcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/89luca89%2Fpodman-launcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/89luca89%2Fpodman-launcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/89luca89","download_url":"https://codeload.github.com/89luca89/podman-launcher/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223590597,"owners_count":17170154,"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":["cli","containers","development","distrobox","golang","launcher","linux","podman","steamdeck","wrapper"],"created_at":"2024-11-07T21:24:44.777Z","updated_at":"2024-11-07T21:24:45.371Z","avatar_url":"https://github.com/89luca89.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Podman Launcher\n\nThis project is a simple golang wrapper that uses `embed` to ship the latest release\nof https://github.com/mgoltzsche/podman-static/\n\nThat repo builds and releases all podman components as statically linked binaries\nthis will let us to easily ship the container manager without needing all the\ndependency resolution of a package manager.\n\nThis project will take care of shipping the release (together with `crun`) and\nsetting it up properly in order to work completely from $HOME, and **without overlapping**\nwith a native `podman` installation.\n\nRootful `podman` works (if needed), and will unpack a copy of the binaries in /root for it to\nwork.\n\n## Installation\n\nDownload the binary, make it executable and put it in your $PATH\n\nOptionally, you can name it `podman` in order to make it easier to type/use\n\n## Usage\n\nThis launcher is transparent, so you will use it with all `podman`'s flags and so on\n\n## Use in your project\n\nYou can use the `podman-launcher` as a library in your project, if you depend on `podman` and\nwant to embed it as a dependency.\n\nYou'll need to embed the `assets.tar.gz` (that you'll find in the release page) in your\napplication, and pass it to the `launcher.Config` struct for it to work\n\nExample code:\n\n```go\npackage main\n\nimport (\n    _ \"embed\"\n\n\t\"github.com/89luca89/podman-launcher/pkg/launcher\"\n)\n\nvar assets []byte\n\nfunc main() {\n    conf := launcher.NewLauncher(\"/home/luca-linux/.podman-launcher\", \"/var/tmp\", assets)\n\n    command := []string{\n        \"podman\",\n        \"run\", \"--rm\", \"-ti\",\n        \"alpine:latest\",\n        \"/bin/sh\"\n    }\n\n\terr := conf.Run(command)\n\tif err != nil {\n\t\tif exiterr, ok := err.(*exec.ExitError); ok {\n\t\t\tos.Exit(exiterr.ExitCode())\n\t\t}\n\t}\n}\n```\n\n## Upgrade\n\nTo update, download the new release, and with the new binary run `podman-launcher upgrade`\nto upgrade the embedded `podman` package.\n\n## Dependencies\n\nOn the system, the only dependencies needed are the one that `podman` needs.\nSpecifically `iptables` and `ip6tables` for the bridge to work (not needed if using host's network namespace). \n\nFor rootless setup to work you need `newuidmap` and `newgidmap` binaries (usually\npart of the `shadow` package) and correctly set the `/etc/subuid` and `/etc/subgid`\n\nRefer to the official documentation for further info: https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md\n\n# Compile\n\n```console\nmake clean\nmake\n```\n\n`make download` will download the latest bundles of `crun` and `podman-static` and\nprepare them for the launcher.\n\n`make podman-launcher` will actually compile the `main.go` and embed the targz in it.\n\n# Use Cases\n\nIt's a nice-to-have for systems like the Steamdeck or where you're not allowed\nto modify the system in any way.\n\nThought to be a nice fallback container engine option for Distrobox (https://github.com/89luca89/distrobox)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F89luca89%2Fpodman-launcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F89luca89%2Fpodman-launcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F89luca89%2Fpodman-launcher/lists"}