sudo port upgrade installed

Ryan Schmidt ryandesign at macports.org
Sat Nov 29 22:16:10 PST 2008


On Nov 29, 2008, at 23:40, Frank J. R. Hanstick wrote:

> On Nov 29, 2008, at 6:53 PM, Neil wrote:
>
>> On 29 Nov 2008, at 19:43, Frank J. R. Hanstick wrote:
>>
>>> On Nov 29, 2008, at 2:46 PM, Neil wrote:
>>>
>>>> On 29 Nov 2008, at 16:46, Frank J. R. Hanstick wrote:
>>>>
>>>>> I think preventing usage during an upgrade process would be far  
>>>>> superior to using and having links severed during usage..
>>>>
>>>> Okay, so I'm upgrading gcc43, going from 4.3.1 to 4.3.2  
>>>> (current).  It's going to take 2 hours say.  You find it  
>>>> superior that MacPorts should (somehow) stop me from using gcc  
>>>> 4.3.1 to perhaps write a couple hello-world sized test cases  
>>>> while it's compiling gcc 4.3.2 instead of just compiling 4.3.2  
>>>> elsewhere, and then swapping them out when it's done?
>>>>
>>>> Kindly permit me to draw you an analogy:  You want to buy a new  
>>>> car.  The search for a new car will take 3 weeks.  You find it  
>>>> superior that I take away your current car while you're shopping  
>>>> for the new car, instead of letting you use your current car up  
>>>> until you find a new car, and then swapping them?
>>>>
>>> 	And I will give you an even better example.  Your compilation is  
>>> 30 seconds from finished and the links to gcc are lost, then  
>>> what?  You prefer to have your compilation crash?  Your analogy  
>>> is MBE.  The car you have is not linked to one being upgraded.   
>>> It would be like your current car suddenly quitting while your  
>>> are driving it in the middle of the freeway because the new model  
>>> is now ready.  Get a better analogy.
>>
>> If your compilation is going to take that long, then it wouldn't  
>> finish under either scenario; so there is nothing to lose.  But if  
>> your compilation is 30 seconds shorter, then under your scenario  
>> is fails, and under the current scenario it doesn't.
>
> 	How does not starting anything until the upgrade is finished fail  
> in any manner?  I do not call waiting for something to finish  
> before starting something else a failure.  Personally, when I  
> upgrade, especially when the upgrade is an all encompassing  
> upgrade, I do not have anything running that could be effected by  
> any module being upgraded.  The only time I run multiple processes  
> is when I know the processes are not going to interact in some  
> unpredictable way (unless I am debugging interconnecting processes  
> in which case I am quite prepared for failures).  One process  
> randomly linking and unlinking modules used by other processes does  
> not make for good predictability.
> 	Which leads to a second point.  It does not even have to be a gcc  
> or any other long period upgrade,  It could just as well be from a  
> library reference or some other required linkage that could be lost  
> at the wrong moment.  This is true even from very short time spans  
> between deactivation and activation since everything is running  
> asynchronously.  Trying to simultaneously run and upgrade modules  
> that interlink with each other (either running or being upgraded)  
> is just asking for trouble.

I've been reading the discussion up to this point, just listening to  
what's being said.

I wanted to point out another useful scenario that's possible because  
of the way MacPorts is currently implemented. Imagine you have a  
server that runs MySQL or something. You want to upgrade to the new  
version of MySQL, and you want to do so after hours when the downtime  
will affect fewer people. But MySQL takes a long time to compile. It  
is nice to be able to type "sudo port install mysql5 +server" at some  
point before the scheduled downtime (possibly before you have even  
scheduled the downtime) to build the new version. Then, at the  
scheduled downtime, all you have to do is "sudo port unload mysql5",  
"sudo port deactivate mysql5", "sudo port activate mysql5  
@<new_version>", "sudo port load mysql5" (and probably run  
mysql_upgrade5).

With the proposed changes of deactivating the old version before  
beginning to configure, the server would have to be shut down during  
the MySQL build. In the best case, that means your scheduled downtime  
has to be much longer, long enough to accommodate the build. In a  
worse case, the compilation fails at some point and you have to  
report a bug and continue using the old version of MySQL, and you've  
taken the server offline for nothing.



More information about the macports-users mailing list