vrms
2 October 2023 09:01
1
pactree
shows dependencies of a package. An option I’d find useful, but can not find in the manual or else was to filter dependencies that only solely exist for the queried package .
EXAMPLE :
$ pactree bash
bash
├─readline
│ ├─glibc
│ │ ├─linux-api-headers>=4.10
│ │ ├─tzdata
│ │ └─filesystem
│ │ └─iana-etc
│ ├─ncurses
│ │ ├─glibc
│ │ └─gcc-libs
│ │ └─glibc>=2.27
│ └─ncurses provides libncursesw.so=6-64
├─readline provides libreadline.so=8-64
├─glibc
├─ncurses
└─bashrc-manjaro provides bashrc
└─bash
shows all dependencies for bash
. One of those is glibc
in example. glibc
has close to 2000 packages depending on it on my system.
What I would like to see are only packages that are only there because bash
(and no other package) depends on them.
is there a way?
Hi @vrms ,
Try:
pactree --reverse <package>
Where <package>
is the name of the package you want to check the dependencies of .
From the help:
$ pactree --help
[...]
-r, --reverse list packages that depend on the named package
[...]
Hope this helps!
1 Like
vrms
2 October 2023 09:13
3
I am aware of pactree --reverse <pkg_name>
(which shows packages depending on <pkg_name>). But that is not what I meant. Sorry if I was not clear enough.
I’ll add an example to my Topic.
pactree pacman -d1
LANG=C pacman -Qi pacman | grep '^Depend'
this ?
EDIT
vrms:
(and no other package)
OK
see dependencies only that become orphaned if you delete the package
vrms
2 October 2023 09:22
5
that would (in the bash example from above), also show glibc
. So no, not what I thought of.
exaclty
packages required only by one package :
LANG=C pacman -Qi | gawk '/^Name/ {x=$3}; /^Required By : vlc$/ {print x}'
aribb24
ffmpeg4.4
libdvbpsi
libmatroska
libtar
libupnp
note: exists also sub-dependencies :
LANG=C pacman -Qi | gawk '/^Name/ {x=$3}; /^Required By : ffmpeg4.4$/ {print x}'
libmfx
so, libmfx
is also removed or orphan with vlc
2 Likes
vrms
2 October 2023 10:33
7
out of curiosity … what is the leading LANG=C
doing exactly?
If your language isn’t English, prepend any and all terminal commands with LC_ALL=C
. For example:
LC_ALL=C bluetoothctl
This will just cause the terminal output to be in English, making it easier to understand and debug.
Indeed.
I honestly don’t know what, if anything, it stands for…I just know what it does.
1 Like
Teo
2 October 2023 11:29
11
If you don’t prepend with English, “name” and “required by” in the oneliner will not work as search strings and will have to be translated too.
for me, no english man, pacman -Qi return :
Nom : bash
Fournit : sh
Dépend de : readline libreadline.so=8-64 glibc ncurses
Requis par :
I search “Required By” or "Dépend de ", Nom/Name ? if i force english, it’s easy, i can search only “Name” and code is OK for all users
why you want this dependencies information ?
pacman -Rs package_name
remove package and unnecessary dependencies
1 Like
vrms:
thanks:
C
standing for the programming language C
?
because C
only has output in English, this forces the output to be in English (even if my bash was using something else) ?
Yes, it refers to the programming language C, and concretely, with LC_ALL=C
, you also get all of the output — e.g. the date/time format, collation, et al — in the standard C formatting.
2 Likes
system
Closed
9 October 2023 04:30
14
This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.