若是想知道指定的套件會影響哪些套件,這時候可以怎麼做呢?
我第一個是想到可以用 rpm ,用 man rpm
可以查到 rpm 有以下參數
- –provides
- –requires
- –whatprovides
- –whatrequires
所以就試試看
rpm -q --whatrequires libweb
但結果卻不如預期,上網找到這篇 centos – Why does rpm –whatrequires fail to report dependencies? – Unix & Linux Stack Exchange
才知道正確用法是這樣,要先用 rpm -q --provides libwebp
去查到 libwebp 有提供什麼capability,然後再用 rpm -q --whatrequires <capability>
去找。
例如 libwebp
[root@workstation ~]# rpm -q --provides libwebp
libwebp = 1.0.0-5.el8
libwebp(x86-64) = 1.0.0-5.el8
libwebp.so.7()(64bit)
libwebpdecoder.so.3()(64bit)
libwebpdemux.so.2()(64bit)
libwebpmux.so.3()(64bit)
[root@workstation ~]# rpm -q --whatrequires "libwebp.so.7()(64bit)"
libwebp-1.0.0-5.el8.x86_64
gd-2.2.5-7.el8.x86_64
ImageMagick-libs-6.9.12.50-2.el8.x86_64
這樣就可以找到,但若是如此,就要寫腳本了。因為 libwebp 有提供多個 capability ,需要逐一去查才行。
有沒有更快的方法呢?
centos – Why does rpm –whatrequires fail to report dependencies? – Unix & Linux Stack Exchange 裡面有提到可以用 rpm -e --test
,直接模擬看看移除。
rpm -e --test libwebp 2>&1 | grep needed | awk '{print $6}' | sort | uniq
這樣就可以很快找出來了。
沒有留言:
張貼留言