Features | Install | Contribute
oma 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.
For a more detailed overview on oma's features, see features.
Please see Install.
- Clear-and-Simple Interface: Colorful and TUI-heavy interface, with clear marking for key information and simplified commands for common operations.
- Faster Downloads: Faster package downloads, powered by the performant reqwest HTTP and multi-threaded downloads.
- Smart Search: Leveraging the indicium search engine for more relevant package search results.
- 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. - System Feature Protection: Informing and advising against uninstalling critical system components by detecting System Feature Markers in key component packages (AOSC OS only).
- 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.
- Compatibility with Other dpkg-based OS: Bringing a more friendly package management experience to major dpkg-based distributions like Debian, Ubuntu, deepin, and openKylin.
- 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.
oma is pre-installed with AOSC OS. It is also available for Debian, Ubuntu, Deepin, openKylin, and more dpkg-based OS.
curl -sSf https://repo.aosc.io/get-oma.sh | sudo sh
To build oma, ensure the following dependencies are installed:
- libapt-pkg (part of APT)
- LLVM and Clang
- Nettle (recommended) or OpenSSL
- Rustc and Cargo
- pkg-config or pkgconf
During runtime, oma requires or recommends the following:
- ripgrep (optional, accelerates
oma provides
,oma files
, andoma command-not-found
)
-
Clone the repository:
git clone https://github.com/AOSC-Dev/oma.git cd oma
-
Build the binary as an installable .deb package (Ubuntu/Debian):
apt install build-essential zlib1g-dev libssl-dev pkgconf nettle-dev libapt-pkg-dev curl xz-utils clang libbz2-dev liblzma-dev cargo install cargo-deb cargo deb -Z xz
-
Install and profit!
oma # without arguments
-
Installing a package:
oma install <package_name>
-
Searching for a package:
oma search <keyword>
-
Removing a package:
oma remove <package_name>
-
Refreshing repository metadata (done automatically before
oma install
andoma upgrade
):oma refresh
For a full list of available sub-commands and arguments, run:
oma help
Command | Description |
---|---|
install |
Install package(s) from the repository |
upgrade |
Upgrade all installed packages |
download |
Download package(s) without installing |
remove |
Remove specified package(s) |
refresh |
Refresh repository metadata |
search |
Search for package(s) in the repository |
show |
Show detailed information for a package |
files |
List files in the specified package |
provides |
Find packages providing specific patterns |
fix-broken |
Fix broken dependencies |
pick |
Install a specific version of package(s) |
mark |
Mark package(s) with a specific status |
list |
List all available packages |
depends |
Show dependencies for package(s) |
rdepends |
Show reverse dependencies for package(s) |
clean |
Clear downloaded package cache |
history |
Show package history or change logs |
help |
Show help of oma or the given subcommand(s) |
Contributions are welcome!
Please feel free to file issues or pull requests to help improve oma.
Please see CONTRIBUTING for detailed instructions.
oma is licensed under the GNU General Public License v3.0. See the COPYING file for details.