Moving from one port to another
Matthew Seaman
m.seaman at infracaninophile.co.uk
Sun Aug 29 19:46:19 UTC 2010
On 29/08/2010 20:20:51, Warren Block wrote:
> On Sun, 29 Aug 2010, Chip Camden wrote:
>> Quoth Eitan Adler on Sunday, 29 August 2010:
>>> On Sat, Aug 28, 2010 at 10:40 PM, Kurt Buff <kurt.buff at gmail.com> wrote:
>>>> Portupgrade won't, AFAIK, cross branches, though I could be wrong
>>>> about that.
>>>>
>>>> There's a 3.0 branch in /usr/ports/www/squid30 and a 3.1 branch in
>>>> /usr/ports/www/squid31, and I want to make the switch to pick up a
>>>> feature.
>>>
>>> portmaster -o www/squid31 www/squid30
>>
>> So, if I understand correctly, I could use this to upgrade from python26
>> to python27? Or perl 5.8.9 to perl 5.12? and everything that depended
>> on the former will be upgraded to the latter? Can I say "sweeeeet" in
>> advance? Is there a way to do that with portupgrade, or is this one of
>> those features that makes portmaster a better mousetrap?
>
> portupgrade has had it for a long time:
>
> man portupgrade | less '+/-o ORIGIN'
Yes. portmaster has pretty much the same '-o' flag.
However, it's not quite so "sweeeeet" (sic) as all that -- all the '-o'
flag does, in either portmaster or portupgrade is transfer the
dependencies to the new package. In very many cases you would still
have to reinstall everything that depends on the replaced package.
Sometimes that's because shlibs have different versions -- eg. if you
upgrade from mysql-5.0.x to mysql-5.1.x[*], then the ABI version changes
and you need to reinstall everything that links against libmysql.
With perl, the reason is even simpler -- the perl version number is
embedded in the library search path, so until you reinstall, even
pure-perl modules are going to be inaccessible. XS modules need
relinking in any case.
Not entirely sure of the details with python, but certainly any module
which is available as dynamically loadable object code will need relinking.
Generally, the advice is to forcibly reinstall everything that depends
on the package you replaced:
portmaster -f -R -r example/port
portupgrade -f -r example/port
Cheers,
Matthew
[*] Which is a slightly trickier exercise than most, given you've got to
update both mysql-client and mysql-server ports using the '-o' thing.
Possibly even the mysql-scripts port if installed. And then you've got
to deal with all the dependencies too.
--
Dr Matthew J Seaman MA, D.Phil. 7 Priory Courtyard
Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey Ramsgate
JID: matthew at infracaninophile.co.uk Kent, CT11 9PW
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 267 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20100829/4beb87c0/signature.pgp
More information about the freebsd-questions
mailing list