Skip to content

feat(linux): Add deb, rpm packages as installation formats#524

Merged
nekomeowww merged 8 commits intomoeru-ai:mainfrom
gg582:feat/support-for-deb-and-rpm
Aug 30, 2025
Merged

feat(linux): Add deb, rpm packages as installation formats#524
nekomeowww merged 8 commits intomoeru-ai:mainfrom
gg582:feat/support-for-deb-and-rpm

Conversation

@gg582
Copy link
Copy Markdown
Contributor

@gg582 gg582 commented Aug 29, 2025

Description

Although this project has nix build for Linux, it is thought that Debian GNU/Linux based and Red Hat Enterprise Linux based distributions are prominent among Linux desktop users.

It is considered that Ubuntu, Debian, Linux Mint, Fedora, are commonly favored by contemporary desktop users, and most of the people prefer distro's own package formats over than AppImage.

Appimage owes a problem, that it is difficult to update an application while keeping their own local data.
Since this project's agenda is to make an AI VTuber, some people might feel intimacy to his own-prompted model. This problem would be bigger when AIRI supports Long-Term Memory.

It is suggested that we may support some user-friendly formats to further enhancement.

I am not used to packaging, so if somebody urges to add supports for Flatpak repository, I would like to engage.

Additional Context

Would you focus on the package dependencies to automatically install required libraries? Some users who use Linux is not familiar with Software development.
So I'd like to mention that Linux Operating System is not only for developers, but also a personal choice which can be chosen as convenience.

Thank you.

@netlify
Copy link
Copy Markdown

netlify Bot commented Aug 29, 2025

Deploy Preview for airi-docs ready!

Name Link
🔨 Latest commit 29b2484
🔍 Latest deploy log https://app.netlify.com/projects/airi-docs/deploys/68b32b8f501b7d00085d8fcc
😎 Deploy Preview https://deploy-preview-524--airi-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify Bot commented Aug 29, 2025

Deploy Preview for airi-vtuber ready!

Name Link
🔨 Latest commit 29b2484
🔍 Latest deploy log https://app.netlify.com/projects/airi-vtuber/deploys/68b32b8fb7e1c400084dcce3
😎 Deploy Preview https://deploy-preview-524--airi-vtuber.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @gg582, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the distribution of the application on Linux by integrating native package formats. The primary goal is to provide a more user-friendly installation and update experience for users on Debian-based and Red Hat-based distributions, addressing limitations of the AppImage format, particularly concerning data persistence and updates. This change also includes an internal renaming of the application's package name.

Highlights

  • New Linux Package Formats: Introduced support for .deb (Debian/Ubuntu) and .rpm (Red Hat/Fedora) package formats, alongside the existing AppImage, to provide a more native installation experience for Linux users.
  • Package Name Renaming: The application's internal package name has been changed from "app" to "airi" across the project's Rust and Tauri configuration files.
  • Comprehensive Dependency Listing: Detailed dependency lists have been added for both .deb and .rpm packages to ensure automatic installation of required libraries on target systems, improving user convenience.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces support for creating .deb and .rpm packages, which is a great step for improving distribution on Linux. The main changes involve updating tauri.conf.json to add the new package targets and their dependencies. My review focuses on the newly added dependency lists. I've identified a potential compatibility issue with the Debian package dependencies that could limit the application's reach on older but still widely-used distributions, and I've also suggested an improvement for maintainability. The changes to Cargo.toml and Cargo.lock to rename the package from app to airi are a good move for branding consistency.

Comment on lines +37 to +151
"depends": [
"libatk1.0-0t64",
"libatk-bridge2.0-0t64",
"libatomic1",
"libatspi2.0-0t64",
"libblkid1",
"libbrotli1",
"libbsd0",
"libbz2-1.0",
"libc6",
"libcairo2",
"libcairo-gobject2",
"libcap2",
"libcom-err2",
"libdatrie1",
"libdbus-1-3",
"libdrm2",
"libdw1t64",
"libegl1",
"libelf1t64",
"libenchant-2-2",
"libepoxy0",
"libevdev2",
"libexpat1",
"libffi8",
"libfontconfig1",
"libfreetype6",
"libfribidi0",
"libgbm1",
"libgcc-s1",
"libgcrypt20",
"libgdk-pixbuf-2.0-0",
"libgl1",
"libglib2.0-0t64",
"libglvnd0",
"libglx0",
"libgpg-error0",
"libgraphite2-3",
"libgssapi-krb5-2",
"libgstreamer1.0-0",
"libgstreamer-gl1.0-0",
"libgstreamer-plugins-base1.0-0",
"libgtk-3-0t64",
"libgudev-1.0-0",
"libharfbuzz0b",
"libharfbuzz-icu0",
"libhyphen0",
"libicu74",
"libidn2-0",
"libjavascriptcoregtk-4.1-0",
"libjpeg-turbo8",
"libk5crypto3",
"libkeyutils1",
"libkrb5-3",
"libkrb5support0",
"liblcms2-2",
"liblz4-1",
"liblzma5",
"libmanette-0.2-0",
"libmd0",
"libmount1",
"libnghttp2-14",
"liborc-0.4-0t64",
"libpango-1.0-0",
"libpangocairo-1.0-0",
"libpangoft2-1.0-0",
"libpcre2-8-0",
"libpixman-1-0",
"libpng16-16t64",
"libpsl5t64",
"libseccomp2",
"libsecret-1-0",
"libselinux1",
"libsharpyuv0",
"libsoup-3.0-0",
"libsqlite3-0",
"libssl3t64",
"libstdc++6",
"libsystemd0",
"libtasn1-6",
"libthai0",
"libudev1",
"libunistring5",
"libunwind8",
"libwayland-client0",
"libwayland-cursor0",
"libwayland-egl1",
"libwayland-server0",
"libwebkit2gtk-4.1-0",
"libwebp7",
"libwebpdemux2",
"libwebpmux3",
"libwoff1",
"libx11-6",
"libx11-xcb1",
"libxau6",
"libxcb1",
"libxcb-render0",
"libxcb-shm0",
"libxcomposite1",
"libxcursor1",
"libxdamage1",
"libxdmcp6",
"libxext6",
"libxfixes3",
"libxi6",
"libxinerama1",
"libxkbcommon0",
"libxml2",
"libxrandr2",
"libxrender1",
"libxslt1.1",
"libxtst6",
"libzstd1"
]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The deb dependency list can be improved for better compatibility and maintainability.

  1. Compatibility (high severity): The list uses package names with a t64 suffix (e.g., libatk1.0-0t64). This targets very recent Debian/Ubuntu versions and will likely cause installation to fail on common LTS releases like Ubuntu 22.04. It's better to use base package names (e.g., libatk1.0-0) to support a wider range of distributions.

  2. Maintainability (medium severity): The list is unsorted, making it hard to manage. Alphabetical sorting improves readability and helps prevent duplicates.

I've provided a suggestion below that applies both fixes: it removes the t64 suffixes and sorts the list alphabetically.

        "depends": [
          "libatk-bridge2.0-0",
          "libatk1.0-0",
          "libatomic1",
          "libatspi2.0-0",
          "libblkid1",
          "libbrotli1",
          "libbsd0",
          "libbz2-1.0",
          "libc6",
          "libcairo-gobject2",
          "libcairo2",
          "libcap2",
          "libcom-err2",
          "libdatrie1",
          "libdbus-1-3",
          "libdrm2",
          "libdw1",
          "libegl1",
          "libelf1",
          "libenchant-2-2",
          "libepoxy0",
          "libevdev2",
          "libexpat1",
          "libffi8",
          "libfontconfig1",
          "libfreetype6",
          "libfribidi0",
          "libgbm1",
          "libgcc-s1",
          "libgcrypt20",
          "libgdk-pixbuf-2.0-0",
          "libgl1",
          "libglib2.0-0",
          "libglvnd0",
          "libglx0",
          "libgpg-error0",
          "libgraphite2-3",
          "libgssapi-krb5-2",
          "libgstreamer-gl1.0-0",
          "libgstreamer-plugins-base1.0-0",
          "libgstreamer1.0-0",
          "libgtk-3-0",
          "libgudev-1.0-0",
          "libharfbuzz-icu0",
          "libharfbuzz0b",
          "libhyphen0",
          "libicu74",
          "libidn2-0",
          "libjavascriptcoregtk-4.1-0",
          "libjpeg-turbo8",
          "libk5crypto3",
          "libkeyutils1",
          "libkrb5-3",
          "libkrb5support0",
          "liblcms2-2",
          "liblz4-1",
          "liblzma5",
          "libmanette-0.2-0",
          "libmd0",
          "libmount1",
          "libnghttp2-14",
          "liborc-0.4-0",
          "libpango-1.0-0",
          "libpangocairo-1.0-0",
          "libpangoft2-1.0-0",
          "libpcre2-8-0",
          "libpixman-1-0",
          "libpng16-16",
          "libpsl5",
          "libseccomp2",
          "libsecret-1-0",
          "libselinux1",
          "libsharpyuv0",
          "libsqlite3-0",
          "libsoup-3.0-0",
          "libssl3",
          "libstdc++6",
          "libsystemd0",
          "libtasn1-6",
          "libthai0",
          "libudev1",
          "libunistring5",
          "libunwind8",
          "libwayland-client0",
          "libwayland-cursor0",
          "libwayland-egl1",
          "libwayland-server0",
          "libwebkit2gtk-4.1-0",
          "libwebp7",
          "libwebpdemux2",
          "libwebpmux3",
          "libwoff1",
          "libx11-6",
          "libx11-xcb1",
          "libxau6",
          "libxcb-render0",
          "libxcb-shm0",
          "libxcb1",
          "libxcomposite1",
          "libxcursor1",
          "libxdamage1",
          "libxdmcp6",
          "libxext6",
          "libxfixes3",
          "libxi6",
          "libxinerama1",
          "libxkbcommon0",
          "libxml2",
          "libxrandr2",
          "libxrender1",
          "libxslt1.1",
          "libxtst6",
          "libzstd1"
        ]

@gg582 gg582 changed the title feat(linux): Add deb, rpm packages as a installation format feat(linux): Add deb, rpm packages as installation formats Aug 30, 2025
@gg582 gg582 force-pushed the feat/support-for-deb-and-rpm branch from 2dbce0e to d334442 Compare August 30, 2025 09:13
@Weathercold
Copy link
Copy Markdown
Collaborator

Wait don't merge yet
(I wonder if I can push to the pr directly?)

@nekomeowww
Copy link
Copy Markdown
Member

(I wonder if I can push to the pr directly?)

Why?

@Weathercold
Copy link
Copy Markdown
Collaborator

(I wonder if I can push to the pr directly?)

Why?

The binary names in nix/package.nix need to be changed

@nekomeowww
Copy link
Copy Markdown
Member

(I wonder if I can push to the pr directly?)

Why?

The binary names in nix/package.nix need to be changed

Perhaps open another for that.

@nekomeowww nekomeowww merged commit f0ef1bb into moeru-ai:main Aug 30, 2025
14 checks passed
@gg582 gg582 deleted the feat/support-for-deb-and-rpm branch September 20, 2025 09:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants