pacapt
- An ArchLinux
's pacman-like wrapper for many package managers
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
fromArch Linux
-based systems,ArchBang
,Manjaro
, etc.apt-cyg
from Cygwin (via apt-cyg)apt-get
fromDebian
,Ubuntu
, etc.homebrew
fromMac OS X
macports
fromMac OS X
yum/rpm
fromRedhat
,CentOS
,Fedora
,Oracle Linux
, etc.portage
fromGentoo
zypper
fromOpenSUSE
pkgng
fromFreeBSD
cave
fromExherbo Linux
pkg_tools
fromOpenBSD
sun_tools
fromSolaris(SunOS)
apk
fromAlpine Linux
opkg
fromOpenWrt
tazpkg
fromSliTaz Linux
swupd
fromClear Linux
xbps
fromVoid Linux
tlmgr
fromTeX Live
conda
fromConda
TOC
- Description
- Installation
- Usage
- Related projects
- Similar projects
- Development
- License
- Authors and 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
, orpacapt update
- Install a package:
pacapt -S foo
, orpacapt install foo
- Search a package:
pacapt -Ss foo
, orpacapt search foo
- Remove a package:
pacapt -R foo
, orpacapt remove foo
- Upgrade system:
pacapt -Su
, orpacapt upgrade
- Remove orphans:
pacapt -Sc
, orpacapt autoremove foo
- Clean up:
pacapt -Scc
orpacapt -Sccc
, orpacapt 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 version
Some 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.
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
: An Arch's pacman-like package manager for Windowsnode-pacapt
: A node.js wrapper of pacapt + batch-pacaptpacapt
'snd
branch: A rewrite in Dlang, now deprecated.pacapt-py
: A proof of concept in Python to provide pacapt-like experience to Homebrew.pacapt-go
: A more complete rewrite in Go, now lives in thego-dev
branch ofpacaptr
as legacy code.
Similar projects
sysget
isa front-end for every package manager
, written inC++
. It provides some basic features to manipulate packages on your system.pacaptr
was originally started as aRust
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)