[Perl] 如何列出可升級的 CPAN 模組
作者:gugod 發佈於: #perl #cpan #howto一陣子之前看到的。 cpan-outdated 這個指令,能列出所有可升級的模組。
它的輸出格式看來是 CPAN Mirror 底下的路徑。可以直接餵給 cpanm 去安裝。
# cpan-outdated | head
P/PL/PLICEASE/Alien-Build-2.76.tar.gz
P/PL/PLICEASE/Alien-Libxml2-0.19.tar.gz
T/TO/TOKUHIROM/Amon2-6.16.tar.gz
R/RJ/RJBS/App-Cmd-0.335.tar.gz
O/OA/OALDERS/App-perlimports-0.000049.tar.gz
R/RJ/RJBS/App-Uni-9.006.tar.gz
P/PJ/PJACKLAM/bignum-0.66.tar.gz
L/LE/LEEJO/CGI-4.55.tar.gz
G/GA/GARU/Clone-0.46.tar.gz
P/PM/PMQS/Compress-Raw-Bzip2-2.201.tar.gz
此外既有的 cpan
指令也能做到類似的事:執行 cpan -O
後,會列出各模組的目前版號以及最新版的版號。
# cpan -O | head -15
Reading '/home/gugod/.cpan/Metadata'
Database was generated on Thu, 05 Jan 2023 00:54:02 GMT
Module Name Local CPAN
-------------------------------------------------------------------------
CPAN: Module::CoreList loaded ok (v5.20220520)
Acme::CPANAuthors::Austrian 1.1318 1.1318
Alien::Base 2.5100 2.7600
Alien::Base::PkgConfig 2.5100 2.7600
Alien::Base::Wrapper 2.5100 2.7600
Alien::Build 2.5100 2.7600
Alien::Build::CommandSequence 2.5100 2.7600
Alien::Build::Interpolate 2.5100 2.7600
Alien::Build::Interpolate::Default 2.5100 2.7600
Alien::Build::Log 2.5100 2.7600
Alien::Build::Log::Abbreviate 2.5100 2.7600
但看來 cpan -O
列出的是 package 而 cpan-outdated
列出的是 distribution。
不過也可執行 cpan-outdated -p
,讓它改列 package 名。
如果只是要無條件全部升到最新版的話,可以執行 cpan -U
或是 cpan-outdated | cpanm
。