Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/icy/pacapt
An ArchLinux's pacman-like shell wrapper for many package managers. 56KB and run anywhere.
https://github.com/icy/pacapt
archlinux bash linux package-manager sysadmin
Last synced: 9 days ago
JSON representation
An ArchLinux's pacman-like shell wrapper for many package managers. 56KB and run anywhere.
- Host: GitHub
- URL: https://github.com/icy/pacapt
- Owner: icy
- License: other
- Created: 2010-11-04T23:01:00.000Z (about 14 years ago)
- Default Branch: ng
- Last Pushed: 2022-01-21T16:38:51.000Z (almost 3 years ago)
- Last Synced: 2024-06-11T17:36:02.405Z (5 months ago)
- Topics: archlinux, bash, linux, package-manager, sysadmin
- Language: Shell
- Homepage:
- Size: 918 KB
- Stars: 943
- Watchers: 30
- Forks: 67
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: COPYING
Awesome Lists containing this project
- awesome-vietnamese - pacapt - like wrapper for many package managers (Podcast)
README
## `pacapt` - An `ArchLinux`'s pacman-like wrapper for many package managers
[![Build Status](https://github.com/icy/pacapt/actions/workflows/ci.yaml/badge.svg)](https://github.com/icy/pacapt/actions)
`pacapt` is a 56KB `shell` wrapper for many package managers.
Simply install package with `pacapt -S htop` or `pacapt install htop`
on any `Linux`, `BSD`, `OpenWrt` or `Mac OS` machines.
It supports the following package managers:* `pacman` from `Arch Linux`-based systems, `ArchBang`, `Manjaro`, etc.
* `apt-cyg` from Cygwin (via [apt-cyg](https://github.com/transcode-open/apt-cyg))
* `apt-get` from `Debian`, `Ubuntu`, etc.
* `homebrew` from `Mac OS X`
* `macports` from `Mac OS X`
* `yum/rpm` from `Redhat`, `CentOS`, `Fedora`, `Oracle Linux`, etc.
* `portage` from `Gentoo`
* `zypper` from `OpenSUSE`
* `pkgng` from `FreeBSD`
* `cave` from `Exherbo Linux`
* `pkg_tools` from `OpenBSD`
* `sun_tools` from `Solaris(SunOS)`
* `apk` from `Alpine Linux`
* `opkg` from `OpenWrt`
* `tazpkg` from `SliTaz Linux`
* `swupd` from `Clear Linux`
* `xbps` from `Void Linux`
* `tlmgr` from `TeX Live`
* `conda` from [`Conda`](https://conda.io/docs/)## TOC
- [Description](#pacapt---an-archlinuxs-pacman-like-wrapper-for-many-package-managers)
- [Installation](#installation)
- [Install the stable script from Github](#install-the-stable-script-from-github)
- [Usage](#usage)
- [Basic operations](#basic-operations)
- [Basic options](#basic-options)
- [Implemented operations](#implemented-operations)
- [Related projects](#related-projects)
- [Similar projects](#similar-projects)
- [Development](#development)
- [General steps](#general-steps)
- [License](#license)
- [Authors and Contributors](#authors-contributors)## Installation
This script shouldn't be installed on an Arch-based system.
On `cave`-based system, `bash` is required.### Install the stable script from Github
You can download the stable script and make it executable.
On non-Arch-based system, you may use `pacman` as script name instead of `pacapt`.````
$ sudo wget -O /usr/local/bin/pacapt https://github.com/icy/pacapt/raw/ng/pacapt
$ sudo chmod 755 /usr/local/bin/pacapt
$ sudo ln -sv /usr/local/bin/pacapt /usr/local/bin/pacman || true
````If you have `curl` and want some interesting output:
```
# WARNING: Don't do this on Arch-based system!
$ curl -Lo /usr/bin/pacman https://github.com/icy/pacapt/raw/ng/pacapt
$ chmod 755 /usr/bin/pacman
```For non-system package manager, you need to create symbolic links
```
$ ln -s /usr/local/bin/pacapt /usr/local/bin/pacapt-tlmgr
$ ln -s /usr/local/bin/pacapt /usr/local/bin/pacapt-conda
```You can also use shorter links:
```
$ ln -s /usr/local/bin/pacapt /usr/local/bin/p-tlmgr
$ ln -s /usr/local/bin/pacapt /usr/local/bin/p-conda
```noting the suffix (e.g., `-tlmgr`, `-conda`) is mandatory.
## Usage
### Basic operations
For system package manager
* Update package database: `pacapt -Sy`, or `pacapt update`
* Install a package: `pacapt -S foo`, or `pacapt install foo`
* Search a package: `pacapt -Ss foo`, or `pacapt search foo`
* Remove a package: `pacapt -R foo`, or `pacapt remove foo`
* Upgrade system: `pacapt -Su`, or `pacapt upgrade`
* Remove orphans: `pacapt -Sc`, or `pacapt autoremove foo`
* Clean up: `pacapt -Scc` or `pacapt -Sccc`, or `pacapt clean`For non-system package manager: Similar as above, however you need to call correct script name, e.g.,
* Install a Conda package: `pacapt-conda -S foo`
* Remove a Conda package: `pacapt-conda -R foo`### Basic options
See also https://github.com/icy/pacapt/blob/ng/lib/help.txt.
Some basic command line options
* `-h` (`--help`): Print help message;
* `-P`: Print list of supported operations;
* `-V`: Print script versionSome popular options of the original `ArchLinux`'s `pacman` program
are supported and listed in the table in the next section.A long list of options and operations can be found from [`ArchLinux`'s wiki](https://wiki.archlinux.org/index.php/Pacman/Rosetta).
### Implemented operations
```
Q Qc Qe Qi Qk Ql Qm Qo Qp Qs Qu R Rn Rns Rs S Sc Scc Sccc Sg Si Sii Sl Ss Su Suy Sy U
apk ~ * * * * * * * * * * * * * * * * * * * * * *
apt_cyg * * * * * * *
cave * * * * * * * * * * * * * * x * * * * * x
conda * * * * * * * *
dnf ~ * * * * * * * * * * * * * * * * * * * * * * *
dpkg ~ * * * * * * * * * * * * ~ * * * * * * * * * * * *
homebrew * * * * * * * * * * * * * * * *
macports * * * * * ~ * * * * * * * *
opkg * * * * * * * * * * * * * *
pkgng * * * * * * * * * * * * * * * *
pkg_tools ~ * * * * * * * * ~ * * x * * ~ * * x
portage * * * * * * * * * * * * * * * * *
sun_tools * * * * * * *
swupd * * * * * * * * * * * * *
tazpkg * * * * * * * * * * * * *
tlmgr * * * * * * * * * *
xbps * * * * * * * * * * * * *
yum * * * * * * * * * * * * * * * * * * * * * * * *
zypper * * * * * * * * * * * * * * * * * * * * * * * * * *
```**Notes:**
* `*`: Implemented;
* `~`: Implemented. Some options may not supported/implemented;
* `x`: Operation is not supported by Operating system;
* The table is generated from source. Please don't update it manually.## Related projects
* [`batch-pacapt`](https://github.com/Grenadingue/batch-pacapt): An Arch's pacman-like package manager for Windows
* [`node-pacapt`](https://github.com/Grenadingue/node-pacapt): A node.js wrapper of pacapt + batch-pacapt
* `pacapt`'s [`nd`](https://github.com/icy/pacapt/tree/nd) branch: A rewrite in Dlang, now deprecated.
* [`pacapt-py`](https://github.com/rami3l/pacapt-py): A proof of concept in Python to provide pacapt-like experience to Homebrew.
* [`pacapt-go`](https://github.com/rami3l/pacaptr/tree/go-dev): A more complete rewrite in Go, now lives in the [`go-dev`](https://github.com/rami3l/pacaptr/tree/go-dev) branch of `pacaptr` as legacy code.## Similar projects
* [`sysget`](https://github.com/emilengler/sysget) is `a front-end for every package manager`, written in `C++`. It provides some basic features to manipulate packages on your system.
* [`pacaptr`](https://github.com/rami3l/pacaptr) was originally started as a `Rust` port of this project (`pacapt`) (See also #126), now it's growing with their own new features and support.## Development
### General steps
Make sure you read some instructions in `CONTRIBUTING.md`.
A development script can be compiled from the source code.
````
$ git clone https://github.com/icy/pacapt.git
$ cd pacapt# switch to development branch
$ git checkout ng# compile the script
$ ./bin/compile.sh > pacapt.dev# check if syntax is good
$ bash -n pacapt.dev$ sudo install -m755 ./pacapt.dev /usr/local/bin/pacapt
````Please read the sample `Makefile` for some details.
## License
This work is released under the terms of Fair license
(http://opensource.org/licenses/fair).## AUTHORS. CONTRIBUTORS
Many people have contributed to the project by sending pull requests
and/or reporting on the ticket system. Here is an incomplete list of
authors and contributors.* 10sr (@10sr)
* Alexander Dupuy (@dupuy)
* Anh K. Huynh (@icy)
* Antony Lee (@anntzer)
* Alex Lyon (@Arcterus)
* Álvaro Mondéjar (@mondeja)
* Carl X. Su (@bcbcarl)
* Cuong Manh Le (@Gnouc)
* Daniel YC Lin (@dlintw)
* Danny George (@dangets)
* Darshit Shah (@darnir)
* Dmitry Kudriavtsev (@dkudriavtsev)
* Eric Crosson (@EricCrosson)
* Evan Relf (@evanrelf)
* GijsTimmers (@GijsTimmers)
* Hà-Dương Nguyễn (@cmpitg)
* Huy Ngô (@NgoHuy)
* James Pearson (@xiongchiamiov)
* Janne Heß (@dasJ)
* Jiawei Zhou (@4679)
* Karol Blazewicz
* Kevin Brubeck (@unhammer)
* Konrad Borowski (@xfix)
* Kylie McClain (@somasis)
* Gen Li (@Rami3L)
* Valerio Pizzi (@Pival81)
* Siôn Le Roux (@sinisterstuf)
* Tabulate (@TabulateJarl8)
* Thiago Perrotta (@thiagowfx)
* Vojtech Letal (@letalvoj)