Updating multiple ports with portmaster
Matthias Andree
matthias.andree at gmx.de
Sat Mar 26 18:16:05 UTC 2011
Am 26.03.2011 17:58, schrieb b. f.:
>> I have a questions about the use of portmaster when upgrading multiple
>> ports and how to correctly use wildcards.
>>
>> For example, I have this from pkg_version:
>>
>> p5-Digest-SHA-5.50< needs updating (port has 5.61)
>> p5-IO-Socket-SSL-1.38< needs updating (port has 1.39)
>> p5-IPC-Cmd-0.68< needs updating (port has 0.70)
>> p5-Math-BigInt-1.99< needs updating (port has 1.993)
>> p5-Module-Build-0.3607_1< needs updating (port has
>> 0.3624)
>> p5-Module-CoreList-2.42< needs updating (port has 2.45)
>> p5-Module-Load-Conditional-0.38< needs updating (port has 0.44)
>> p5-Params-Check-0.26_1< needs updating (port has 0.28)
>> p5-Test-Harness-3.22< needs updating (port has 3.23)
>> p5-URI-1.56< needs updating (port has 1.58)
>>
>> When I was using portupgrade, I could type...
>>
>> portupgrade p5-*
>>
>> ...and it would upgrade only the ports that needed upgrading and
>> dependancies. But if I try...
>>
>> portmaster p5-*
>>
>> ===>>> The following actions will be taken if you choose to proceed:
>> Re-install p5-Digest-SHA1-2.13
>> Re-install p5-IO-Compress-2.033
>> Re-install p5-Compress-Raw-Bzip2-2.033
>> Re-install p5-Compress-Raw-Zlib-2.033
>> Re-install p5-HTML-Tagset-3.20
>> Re-install p5-HTML-Parser-3.68
>> Upgrade p5-Digest-SHA-5.50 to p5-Digest-SHA-5.61
>> Re-install p5-Mail-SpamAssassin-3.3.1_3
>> Re-install p5-Archive-Tar-1.76
>> Re-install p5-IO-Zlib-1.10_1
>> Re-install p5-IO-String-1.08
>> Re-install p5-Package-Constants-0.02
>> Re-install p5-Encode-Detect-1.01
>> Re-install p5-ExtUtils-CBuilder-0.2802_1,1
>> Upgrade p5-IPC-Cmd-0.68 to p5-IPC-Cmd-0.70
>> Re-install p5-Locale-Maketext-Simple-0.21
>> Upgrade p5-Module-Load-Conditional-0.38 to
>> p5-Module-Load-Conditional-0.44
>> Upgrade p5-Module-CoreList-2.42 to p5-Module-CoreList-2.45
>> Re-install p5-Module-Load-0.18
>> Upgrade p5-Params-Check-0.26_1 to p5-Params-Check-0.28
>> Re-install p5-version-0.88
>> Upgrade p5-Module-Build-0.3607_1 to p5-Module-Build-0.3624
>> Install devel/p5-CPAN-Meta-YAML
>> Re-install p5-ExtUtils-Install-1.54
>> Re-install p5-ExtUtils-ParseXS-2.22.03
>> Install devel/p5-Module-Metadata
>> Install devel/p5-Perl-OSType
>> Upgrade p5-Test-Harness-3.22 to p5-Test-Harness-3.23
>> Re-install p5-Net-DNS-0.66_1
>> Re-install p5-Net-IP-1.25_2
>> Re-install p5-IO-Socket-INET6-2.65
>> Re-install p5-Socket6-0.23
>> Re-install p5-Digest-HMAC-1.02
>> Re-install p5-Mail-Tools-2.07
>> Re-install p5-TimeDate-1.20,1
>> Re-install p5-NetAddr-IP-4.038
>> Upgrade p5-IO-Socket-SSL-1.38 to p5-IO-Socket-SSL-1.39
>> Re-install p5-Net-SSLeay-1.36
>> Re-install p5-libwww-5.837
>> Upgrade p5-URI-1.56 to p5-URI-1.58
>> Re-install p5-YAML-Tiny-1.44
>> Re-install p5-Time-HiRes-1.9721,1
>> Re-install p5-Locale-gettext-1.05_3
>> Upgrade p5-Math-BigInt-1.99 to p5-Math-BigInt-1.993
>> Re-install p5-ExtUtils-MakeMaker-6.56
>> Re-install p5-MIME-Base64-3.13
>> Re-install p5-YAML-0.72
>> Re-install p5-Error-0.17016
>> Re-install p5-Net-DNS-Resolver-Programmable-0.003
>> Re-install p5-Mail-SPF-2.007
>>
>> ...it wants to upgrade and reinstall every port that I have installed
>> that begins with p5-*
>>
>> Is there a way to get portmaster to behave like portupgrade did and
>> only upgrade what needs to be upgraded?
>>
>
> This is documented in the portmaster(1) manpage. You can use -a to
> update all ports that need to be updated. To update a subset of
> those, you could (1) use -i with -a or a glob (by the way, the *
> isn't needed with portmaster -- see the portmaster(1) manpage), and
> respond in the negative to prompts to update or re-install those you
> wish to exclude; (2) use -x with -a or a glob, to exclude certain
> ports; or (3) feed portmaster a list of globs that match only those
> ports that you want to be updated. In your case, for (3), if you only
> wanted to update those p5-* ports that need to be updated, but not
> other ports that need to be updated, you could use something like:
>
> pkg_version -qos p5- -l '<' | xargs portmaster
>
> Of course, since some new versions of p5-* ports may depend upon new
> versions of other, non p5-* ports, updating only the p5-* ports isn't
> guaranteed to work.
portmaster takes care of that, except if there are downstream
dependencies that stop working with updated ports on your list -- but
that's rather rarely observed and usually documented in
/usr/ports/UPDATING -- but even then, portmaster -a -i would likely help.
--
Matthias Andree
More information about the freebsd-ports
mailing list