我刚刚在 Arch Linux ( ) 上进行了系统更新,pacman -Syu
并看到了有关旧 Perl 模块的警告:
WARNING: '/usr/lib/perl5/site_perl' contains data from at least 2 packages which will NOT be used by the installed perl interpreter.
-> Run the following command to get a list of affected packages: pacman -Qqo '/usr/lib/perl5/site_perl'
WARNING: '/usr/lib/perl5/vendor_perl' contains data from at least 8 packages which will NOT be used by the installed perl interpreter.
-> Run the following command to get a list of affected packages: pacman -Qqo '/usr/lib/perl5/vendor_perl'
运行推荐的命令会产生以下结果:
$ pacman -Qqo '/usr/lib/perl5/site_perl'
gscan2pdf
perl-filesys-df
$ pacman -Qqo '/usr/lib/perl5/vendor_perl'
perl-config-general
perl-data-uuid
perl-goo-canvas
perl-gtk2-ex-simple-list
perl-gtk2-imageview
perl-pdf-api2
perl-sane
perl-set-intspan
我之前在Perl版本更新的时候也遇到过类似的情况。如果我没记错的话,那些 Perl 包需要重建;然而,我不记得在哪里找到了这样做的咒语。请注意,我完全没有使用 Perl 的经验。这些模块仅由以下人员使用gscan2pdf我通过 AUR 安装的。如何重建这些 Perl 模块?
答案1
重建我使用的perl
库AUR
pacmanager
亚乌尔特:
yaourt -S --asdeps perl-gnome2-gconf glade-perl perl-crypt-blowfish perl-gnome2-vte perl-expect perl-crypt-rijndael perl-gtk2-ex-simple-list perl-io-stty perl-io-tty perl-net-arp perl-yaml perl-crypt-cbc perl-gtk2-unique perl-socket6 uuid
所以只需将库替换为给您的库即可pacman
:
yaourt -S --asdeps gscan2pdf perl-filesys-df perl-config-general perl-data-uuid perl-goo-canvas perl-gtk2-ex-simple-list perl-gtk2-imageview perl-pdf-api2 perl-sane perl-set-intspan
更新2018年附加
Arch 中的更新perl 5.28
意味着您必须再次重建所有不受支持的软件包。修复依赖错误的解决方案是消除冒犯者尿素尿率 perl
应用程序然后删除孤立perl
库并更新您的系统:
sudo pacman -Rns $(pacman -Qtdq)
sudo pacman -Syu
最后重新安装尿素尿率 perl
应用。
更新2019年附加
现在更新后perl 5.30.0
会pacman
发出有关旧库的警告perl
。这次我有一个大更新,需要执行以下操作:
sudo pacman -R $conflicting_perl_mod_&_app
sudo pacman -Syu
# pacman now generates a warning for unused perl libs
pacman -R $(pacman -Qqo '/usr/lib/perl5/5.28')
pacman -S $perl_app
# optional remove orphaned packages
sudo pacman -Rns $(pacman -Qtdq)
sudo pacman -Syu
答案2
添加到 Stuart Cardall 的答案中,制作一个 .sh 脚本来重建列出的 perl 模块,然后您可以在更新 perl 时运行该脚本并收到该警告:
#!/bin/bash
yaourt -S --asdeps --noconfirm $(pacman -Qqo '/usr/lib/perl5/vendor_perl')
yaourt -S --asdeps --noconfirm $(pacman -Qqo '/usr/lib/perl5/site_perl')