I have a package that’s installed on my PC as an dependency to another package.
I would like to have the package explicitly installed, but without actually re-installing it, or downloading any files.
Is this possible?
update:
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 would mean the whole install proccess is run, which I also want to avoid.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
I found the answer on 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 manpage further describes this command.
Method 2
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.
Method 3
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
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0