PACTRANS(1)

πŸ“¦ version 0.15.0, in arch rolling

✨ PACTRANS(1) ✨

okay so this is the pactrans manual page, bestie β€” from the pacutils collection, dated 2025-12-04. it covers pactrans, pacinstall, and pacremove, and honestly? it's giving "one binary, three names, zero chill." πŸ’… let's get into it.


🌸 NAME 🌸

pactrans, pacinstall, pacremove β€” install/remove alpm packages πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

 pactrans   [options] <target>...
 pacinstall [options] <target>...
 pacremove  [options] <target>...
 pactrans   (--help|--version)

πŸ’– DESCRIPTION πŸ’–

So the whole vibe here is: install/remove alpm packages. that's the job. 🫢

pacinstall and pacremove are just aliases, right? they exist purely for convenience, and the only thing different about them is how they interpret targets by default. other than that? literally identical. twins. same brain cell, same energy. πŸ‘―

One thing you need to know: if stdin is not connected to a terminal, then the pkgspecs to install/remove get read from stdin. no cap. 🧚


⭐ OPTIONS ⭐

🌈 Operations

okay so operation options are little gremlins that affect how all targets following them get interpreted β€” until you hit another operation option. so order matters, bestie. remember that. πŸ”₯

  • --spec (the pactrans default) β€” interpret following targets as pkgspecs. if a pkgspec points at a package file or a repository package, it gets installed. if it points at a package in the local database, it gets removed. the format deets live down in PKGSPEC. πŸ’«
  • --install (the pacinstall default) β€” interpret following targets as packages to be installed from a repository. if you only give the package name, repositories get searched in the order they're declared. πŸ›οΈ
  • --remove (the pacremove default) β€” interpret following targets as package names to be uninstalled. bye bestie πŸ’€
  • --file β€” interpret following targets as paths to package files to be installed. πŸ“
  • --sysupgrade β€” upgrade installed packages. glow-up time ✨

πŸŽ€ Configuration Options

  • --cachedir=path β€” set an alternate cache directory path.
  • --config=path β€” set an alternate configuration file path.
  • --dbext=extension β€” set an alternate sync database extension.
  • --dbpath=path β€” set an alternate database path.
  • --logfile=path β€” set an alternate log file path.
  • --root=path β€” set an alternate installation root.
  • --sysroot=path β€” set an alternate system root. see pacutils-sysroot(7). 🌱
  • --null[=sep] β€” set an alternate separator for values parsed from stdin. by default it's a newline "\n". if you use --null without specifying sep, "NUL" gets used. iconique.
  • --debug β€” display additional debugging information. (the "why is this happening to me" button πŸ•΅οΈ)
  • --print-only β€” display what the transaction would do, then exit. like a little preview, a dress rehearsal, if you will. πŸ’…
  • --no-confirm β€” assume default responses to all prompts. no questions, just vibes.
  • --no-timeout β€” disable low-speed timeouts for downloads.
  • --help β€” display usage information and exit.
  • --version β€” display version information and exit.

πŸ’œ Transaction Options

  • --dbsync β€” update sync databases before performing the transaction.
  • --dbonly β€” make the changes to the database without actually extracting or removing any packages. (fake it till you make it, but the filesystem isn't in on the bit 😭)
  • --nodeps β€” ignore dependency versions. pass it twice to ignore dependency checks altogether. ⚠️
  • --no-scriptlet β€” do not run package install scripts.
  • --no-hooks β€” do not run transaction hooks.
  • --assume-installed=package[=version] β€” behave as if package is installed. delulu, but functional 🫠

πŸ“ Sysupgrade Options

  • --ignore-pkg=package β€” ignore upgrades for package. package may be a shell-style glob pattern. 🎯
  • --ignore-group=group β€” ignore upgrades for any packages in group. group may be a shell-style glob pattern.

🧚 --install/--file Options

  • --as-deps β€” mark all installed packages as dependencies.
  • --as-explicit β€” mark all installed packages as explicitly installed.
  • --download-only β€” download packages without actually installing them. window shopping 😌

πŸ¦„ --remove Options

  • --cascade β€” uninstall all installed packages that depend on a package being uninstalled. domino effect, lowkey devastating πŸ’€
  • --no-backup β€” do not save .pacsave backups.
  • --recursive β€” uninstall any dependencies of packages being removed that are not required by any other packages.
  • --unneeded β€” do not uninstall any packages required by an installed package.

πŸ‘‘ Prompt Disposition Options

  • --resolve-conflicts=method β€” pick a method for resolving conflicts. possible values for method are:
    • "prompt" β€” prompt the user to remove the installed conflicting package.
    • "none" β€” do not remove any conflicting packages.
    • "all" β€” remove any conflicting packages.
    • "provided" β€” remove a conflicting package if the new package provides it.
    • "depends" β€” remove a conflicting package if it was installed as a dependency.
    • "provided-depends" β€” remove a conflicting package if it was installed as a dependency and the new package provides it.
  • --resolve-replacements=method β€” pick a method for resolving replacements. possible values for method are:
    • "prompt" β€” prompt the user to replace the package.
    • "none" β€” do not replace any packages.
    • "all" β€” perform all available package replacements.
    • "provided" β€” perform replacements where the new package provides the old one.
    • "depends" β€” perform replacements where the old package was installed as a dependency.
    • "provided-depends" β€” perform replacements where the old package was installed as a dependency and the new package provides the old one.
  • --install-ignored-packages=prompt|yes|no β€” set the disposition for prompts to install ignored packages.
  • --delete-corrupt-files=prompt|yes|no β€” set the disposition for prompts to delete corrupt package.
  • --use-first-provider=prompt|yes|no β€” set the disposition for prompts to select a provider. if set to "yes", the first available provider will be selected. πŸ₯‡
  • --skip-unresolvable=prompt|yes|no β€” set the disposition for prompts to skip packages with unresolvable dependencies.
  • --import-pgp-keys=prompt|yes|no β€” set the disposition for prompts to import missing PGP keys. πŸ”‘
  • --yolo β€” sets all prompt disposition options to their "all" or "yes" value, and also sets --no-confirm. yes, it's actually called that. main character energy fr fr. πŸ”₯πŸ‘‘
NOTE: regardless of the disposition options you pick, all dependencies must still be satisfied for the transaction to succeed β€” unless --nodeps is used as well. so --yolo is not a magic wand, bestie, it's just a very confident one. ⚠️

🐚 PKGSPEC 🐚

A pkgspec is a string that can identify an individual package. accepted formats are:

<repository>/<package>

 core/pacman
 local/pacman

<proto>://<path/to/package/file>

 file:///var/cache/pacman/pkg/pacman-4.1.0-1-x86_64.pkg.tar.xz

🌟 EXAMPLES 🌟

Replace foo with bar:

 pactrans local/foo baz/bar

or, if bar's repository is unknown:

 pacinstall bar --remove foo

Install foo and bar:

 pactrans --install foo bar

πŸ™ˆ CAVEATS πŸ™ˆ

so here's the thing. pactrans decides whether or not to read pkgspecs from stdin based on a naive check using isatty(3). naive! it's just peeking, not reading the room. 😭

so if pactrans gets called in an environment β€” like a shell function or a script being used in a pipe β€” where stdin is not connected to a terminal but doesn't contain pkgspecs to install/remove, then pactrans should be called with stdin closed.

for POSIX-compatible shells, you do that like this:

 <&-

and that's the whole page, bestie! πŸ’– this was the pactrans man page from pacutils, dated 2025-12-04 β€” go forth and transact your packages responsibly, mwah 🫢✨

πŸ“¦ where this page comes from