{"id":25876358,"url":"https://github.com/aosc-dev/oma","last_synced_at":"2025-03-02T10:28:57.133Z","repository":{"id":72523428,"uuid":"594680497","full_name":"AOSC-Dev/oma","owner":"AOSC-Dev","description":"Package Manager for AOSC OS","archived":false,"fork":false,"pushed_at":"2024-10-29T09:00:16.000Z","size":34528,"stargazers_count":31,"open_issues_count":6,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-29T09:26:30.876Z","etag":null,"topics":["aosc","apt","cli","package-manager","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/AOSC-Dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","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-01-29T10:02:36.000Z","updated_at":"2024-10-29T09:00:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"2d333768-0972-417b-a7af-e403549cdf8e","html_url":"https://github.com/AOSC-Dev/oma","commit_stats":null,"previous_names":[],"tags_count":781,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AOSC-Dev%2Foma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AOSC-Dev%2Foma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AOSC-Dev%2Foma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AOSC-Dev%2Foma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AOSC-Dev","download_url":"https://codeload.github.com/AOSC-Dev/oma/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241492526,"owners_count":19971701,"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":["aosc","apt","cli","package-manager","rust"],"created_at":"2025-03-02T10:28:56.662Z","updated_at":"2025-03-02T10:28:57.111Z","avatar_url":"https://github.com/AOSC-Dev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![oma banner: header](https://github.com/user-attachments/assets/f68316e1-d007-4586-a3e0-3d9a56c2dea4)\n\n### oma - Oh My Ailurus / Package Manager for AOSC OS\n\n[Features](#features) | [Install](#installation) | [Contribute](#contributing)\n\noma is an attempt at reworking APT's interface, making it more user-friendly, more robust against common user errors, and more performant during package downloads. oma also integrates closely with AOSC OS's various system management functions, from mirror configuration, topic (testing) repository enrollment, to system feature protection.\n\nFor a more detailed overview on oma's features, see [features](#Features).\n\n### oma is also available for other dpkg-based OS.\n\nPlease see [Install](#installation).\n\n![A simple tour of oma](/demo/tour.avif)\n\n## Features\n\n- **Clear-and-Simple Interface:** Colorful and TUI-heavy interface, with clear marking for key information and simplified commands for common operations.\n- **Faster Downloads:** Faster package downloads, powered by the performant [reqwest](https://crates.io/crates/reqwest) HTTP and multi-threaded downloads.\n- **Smart Search:** Leveraging the [indicium](https://crates.io/crates/indicium) search engine for more relevant package search results.\n- **Fool-Proofing Mechanisms:** Protection against system failures through a combination of mechanisms - active prevention against removal of essential packages, clear marking for potentially dangerous operations, and a disaster recovery mechanism through `undo` command.\n- **System Feature Protection:** Informing and advising against uninstalling critical system components by detecting [System Feature Markers](https://wiki.aosc.io/developer/packaging/feature-marking-guidelines/) in key component packages (AOSC OS only).\n- **System Status Integration:** Integration with system daemons, allowing oma to warn against performing package management operations on battery power, as well as actively inhibiting accidental reboots and suspends.\n- **Compatibility with Other dpkg-based OS:** Bringing a more friendly package management experience to major dpkg-based distributions like Debian, Ubuntu, deepin, and openKylin.\n- **Distro-specific Integration:** Supporting not only AOSC OS-specific features such as topic repository enrollment and mirror management, but also distro-specific services such as Ubuntu Pro.\n\n## Installation\n\noma is pre-installed with AOSC OS. It is also available for Debian, Ubuntu, Deepin, openKylin, and more dpkg-based OS.\n\n### Automatic Installation\n\n```bash\ncurl -sSf https://repo.aosc.io/get-oma.sh | sudo sh\n```\n\n### Building from Source\n\n#### Dependencies\n\nTo build oma, ensure the following dependencies are installed:\n\n- libapt-pkg (part of [APT](https://salsa.debian.org/apt-team/apt.git))\n- [LLVM and Clang](https://llvm.org/)\n- [Nettle](https://www.lysator.liu.se/~nisse/nettle/) (recommended) or [OpenSSL](https://openssl.org/)\n- [Rustc](https://www.rust-lang.org/) and [Cargo](https://crates.io/)\n- [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/) or [pkgconf](http://pkgconf.org/)\n\nDuring runtime, oma requires or recommends the following:\n\n- [ripgrep](https://github.com/BurntSushi/ripgrep) (optional, accelerates `oma provides`, `oma files`, and `oma command-not-found`)\n\n#### Build Procedure\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/AOSC-Dev/oma.git\n   cd oma\n   ```\n\n2. Build the binary as an installable .deb package (Ubuntu/Debian):\n\n   ```bash\n   apt install build-essential zlib1g-dev libssl-dev pkgconf nettle-dev libapt-pkg-dev curl xz-utils clang libbz2-dev liblzma-dev\n   cargo install cargo-deb\n   cargo deb -Z xz\n   ```\n\n3. Install and profit!\n\n## Usage\n\n### Entering the interactive package management interface\n\n```bash\noma # without arguments\n```\n\n### Example Commands\n\n- Installing a package:\n\n  ```bash\n  oma install \u003cpackage_name\u003e\n  ```\n\n- Searching for a package:\n\n  ```bash\n  oma search \u003ckeyword\u003e\n  ```\n- Removing a package:\n\n  ```bash\n  oma remove \u003cpackage_name\u003e\n  ```\n\n- Refreshing repository metadata (done automatically before `oma install` and `oma upgrade`):\n\n  ```bash\n  oma refresh\n  ```\n\nFor a full list of available sub-commands and arguments, run:\n\n```bash\noma help\n```\n\n## Command Reference\n\n| Command      | Description                                 |\n| ------------ | ------------------------------------------- |\n| `install`    | Install package(s) from the repository      |\n| `upgrade`    | Upgrade all installed packages              |\n| `download`   | Download package(s) without installing      |\n| `remove`     | Remove specified package(s)                 |\n| `refresh`    | Refresh repository metadata                 |\n| `search`     | Search for package(s) in the repository     |\n| `show`       | Show detailed information for a package     |\n| `files`      | List files in the specified package         |\n| `provides`   | Find packages providing specific patterns   |\n| `fix-broken` | Fix broken dependencies                     |\n| `pick`       | Install a specific version of package(s)    |\n| `mark`       | Mark package(s) with a specific status      |\n| `list`       | List all available packages                 |\n| `depends`    | Show dependencies for package(s)            |\n| `rdepends`   | Show reverse dependencies for package(s)    |\n| `clean`      | Clear downloaded package cache              |\n| `history`    | Show package history or change logs         |\n| `help`       | Show help of oma or the given subcommand(s)\n\n## Contributing\n\n**Contributions are welcome!**\n\nPlease feel free to file issues or pull requests to help improve oma.\n\n**Please see [CONTRIBUTING](./CONTRIBUTING.md) for detailed instructions.**\n\n## License\n\noma is licensed under the GNU General Public License v3.0. See the [COPYING](./COPYING) file for details.\n\n![oma banner: footer](https://github.com/user-attachments/assets/9bf0b9ed-6969-4bf8-b67e-3835925ce8c0)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faosc-dev%2Foma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faosc-dev%2Foma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faosc-dev%2Foma/lists"}