46

I have a package that's installed on my PC as a dependency of another package.

I would like to have the package explicitly installed, but without actually re-installing it, or downloading any files.

Is this possible?


I do not have any packages cached in /var/cache/pacman/pkg, which is one of the reasons I want to change the package detail without a re-install.

Even If I had the packages cached, running pacman -S <package> would mean the whole install process is run, which I also want to avoid.

3 Answers 3

72

I found the answer on the Arch Linux forums.

Since pacman 3.4 you can use

# pacman -D

to modify only the database. So:

# pacman -D --asexplicit <pkgs>

will make <pkgs> explicitly installed.

The pacman man page further describes this command.

7

pacman -S has a --asexplicit flag that should do what you want.

For example:

> pacman -Qi mutagen            
...
Install Reason : Installed as a dependency for another package

> pacman -S --asexplicit mutagen
warning: mutagen-1.20-1 is up to date -- reinstalling
resolving dependencies...
looking for inter-conflicts...

Targets (1): mutagen-1.20-1

Total Download Size:    0.00 MB
Total Installed Size:   0.82 MB
...

> pacman -Qi mutagen
...
Install Reason : Explicitly installed

You can see that nothing was downloaded since it is already installed locally. It just flipped the "Install Reason" field.

Pacman has different --help operations depending on the operation (-S, -R, etc.). So pacman -S --help lists the --asexplicit flag as one of the available flags. --asdeps is available as well.

0
0

To install only if is not already installed you can use --needed flag:

pacman -S mutagen
pacman -S --needed mutagen clone

Will skip mutagen reinstalation if is already installed by the first command. And you will also get a nice info about that

1
  • This actually does not answer the question. Commented Feb 1, 2023 at 16:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .