pacapt
pacapt copied to clipboard
An ArchLinux's pacman-like shell wrapper for many package managers. 56KB and run anywhere.
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
- Install the stable script from Github
-
Usage
- Basic operations
- Basic options
- Implemented operations
- Related projects
- Similar projects
-
Development
- General steps
- 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 Windows -
node-pacapt
: A node.js wrapper of pacapt + batch-pacapt -
pacapt
'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)