{"id":13505515,"url":"https://github.com/StratusFearMe21/cargo-appimage","last_synced_at":"2025-03-30T00:30:59.021Z","repository":{"id":43702333,"uuid":"365366353","full_name":"StratusFearMe21/cargo-appimage","owner":"StratusFearMe21","description":"Converts your crate into an AppImage","archived":false,"fork":false,"pushed_at":"2024-03-20T07:34:09.000Z","size":2750,"stargazers_count":65,"open_issues_count":8,"forks_count":16,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-01T20:56:37.993Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StratusFearMe21.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-05-07T22:24:28.000Z","updated_at":"2025-02-15T00:47:41.000Z","dependencies_parsed_at":"2022-08-28T16:20:55.988Z","dependency_job_id":"ece64599-c329-4285-804f-60e227d0e0f2","html_url":"https://github.com/StratusFearMe21/cargo-appimage","commit_stats":{"total_commits":40,"total_committers":6,"mean_commits":6.666666666666667,"dds":"0.30000000000000004","last_synced_commit":"7a79977be78d1f0b122328f0c202c339be7f10d1"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StratusFearMe21%2Fcargo-appimage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StratusFearMe21%2Fcargo-appimage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StratusFearMe21%2Fcargo-appimage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StratusFearMe21%2Fcargo-appimage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StratusFearMe21","download_url":"https://codeload.github.com/StratusFearMe21/cargo-appimage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246262490,"owners_count":20749170,"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":[],"created_at":"2024-08-01T00:01:09.292Z","updated_at":"2025-03-30T00:30:54.014Z","avatar_url":"https://github.com/StratusFearMe21.png","language":"Rust","funding_links":[],"categories":["AppImage developer tools"],"sub_categories":["Deployment tools for Rust applications"],"readme":"# Cargo AppImage\n\nThis a cargo program that allows you to convert your Rust programs into AppImages.\n\n## Installation\n\n1.  Make sure that `appimagetool` is in your path. It can be downloaded from [here](https://appimage.github.io/appimagetool/)\n2.  Install this program with\n\n```shell\ncargo install cargo-appimage\n```\n\n3.  `cd` inside of the root directory of your crate and create an icon called **icon.png**\n    1.  Note this can simply be an empty file for development. In fact an empty file is generated if you forget to make one.\n\n4.  (optional) create a section in your Cargo.toml similar to the following\n    with any additional assets to add to the AppImg:\n    ```toml\n    [package.metadata.appimage]\n    assets = [\"images\", \"sounds\"]\n    ```\n\n5.  (optional) If you are using external crates that use other programs or are not written in pure rust, you may want to check if you need to embed some shared libraries into your AppImage:\n\n    1.  Running `cargo appimage` with this option in your Cargo.toml will automatically make a libs folder and put all of the shared objects your rust program uses in their respective directories.\n\n    ```toml\n    [package.metadata.appimage]\n    auto_link = true\n    ```\n\n    2.  AppImages aren't supposed to have EVERY library that your executable links to inside of the AppImage, so either:\n\n        1. Manually delete the libraries from the libs folder that you expect will be on every linux system (libc, libgcc, libpthread, ld-linux, libdl, etc.), and then remove the `auto_link` option from Cargo.toml and rebuild.  Then only the libraries remaining in the libs folder should be embedded in the Appimage.\n\n        2. Or, use the `auto_link_exclude_list` option to specify a list of glob patterns to exclude.  For example:\n\n        ```toml\n        [package.metadata.appimage]\n        auto_link = true\n        auto_link_exclude_list = [\n            \"libc.so*\",\n            \"libdl.so*\",\n            \"libpthread.so*\",\n        ]\n\n        ```\n        On the next build, only library files not matching the glob patterns will be embedded in the Appimage.\n\n6.  run this command\n\n    ```shell\n    cargo appimage\n    ```\n\n    1.  Note all arguments passed into cargo-appimage are redirected to cargo\n\n    ```shell\n    cargo appimage --features=min\n    ```\n## Docker\nApparently this `Dockerfile` works\n```dockerfile\nFROM rust:slim\n\nRUN cargo install cargo-appimage\n# file package is required by appimagetool\nRUN apt-get update \u0026\u0026 apt-get install -y --no-install-recommends file wget\n\n# Download appimagetool\nRUN wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$(uname -m).AppImage -O /usr/local/bin/appimagetool\nRUN chmod +x /usr/local/bin/appimagetool\n# Path appimagetool magic byte: https://github.com/AppImage/pkg2appimage/issues/373#issuecomment-495754112\nRUN sed -i 's|AI\\x02|\\x00\\x00\\x00|' /usr/local/bin/appimagetool\n# Use appimagetool without fuse: https://github.com/AppImage/AppImageKit/wiki/FUSE#docker\nRUN APPIMAGE_EXTRACT_AND_RUN=1 cargo appimage\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStratusFearMe21%2Fcargo-appimage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FStratusFearMe21%2Fcargo-appimage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStratusFearMe21%2Fcargo-appimage/lists"}