ricoPan
December 19th, 2009, 01:05 AM
Moving to my own ubuntu machine from an academic fedora setting where I didn't have root priv. So far installation for this scientific workstation has been a great experience. Now I am running into issues regarding custom package installation, and though I have a work around, I would like to know if there is a better way.
The specifics should not matter much -- but here they are. I use python, and in my case, having numpy built with custom tuned linear algebra libraries (Lapack) is necessary. This means I must build the numpy dependency ATLAS and tune myself, as the ubuntu numpy, as I understand it, will not use my custom ATLAS. Did this without issue, and installed numpy manually. Uses ATLAS tuned threaded libraries.
Next I wanted to install another python package, matplotlib, which requires numpy. The problem is that matplotlib has a bunch of other dependencies, and I want to use apt-get. But apt-get wants the starndard ubuntu python-numpy, which is both an older version than mine and also will not use my tuned ATLAS.
I assume I can install matplotlib with apt-get without overwriting my numpy, but I haven't figured out how. I learned about checkinstall to maintain my manual installations, which seems to work, apt-get, aptitude, and synaptic all are aware of my numpy if I use checkinstall. Great!
I also read that I can use aptitude 'hold' or 'pin' with apt-get, or 'lock' with synaptic to automatic upgrading. However, if I use apt-get or aptitude to install software (eg matplotlib) that needs my manual installation (eg numpy), it continues to overwrite my version, regardless of these holds, pins, locks. Am I failing to do something, or is this expected behavior?
As it is, it seems that once I depart from aptitude /apt-get, I can't easily return to using it, even with checkinstall, as I run the constant risk of overwriting my manual installations. Is this correct? In this example, I can still use aptitude to install each of matplotlib dependencies one by one, avoiding numpy, which is certainly helpful but perhaps more time consuming than need be, and then install matplotlib manually. That works.
Is there a way of telling apt-get /aptitude that my numpy is adequate for matplotlib, and to quit complaining and just use it and never overwrite? Or must I now always be on the look out for installations that will sneak in a numpy overwrite? What are best practices here?
This is what happens when everything is so convenient -- now I want it all.
The specifics should not matter much -- but here they are. I use python, and in my case, having numpy built with custom tuned linear algebra libraries (Lapack) is necessary. This means I must build the numpy dependency ATLAS and tune myself, as the ubuntu numpy, as I understand it, will not use my custom ATLAS. Did this without issue, and installed numpy manually. Uses ATLAS tuned threaded libraries.
Next I wanted to install another python package, matplotlib, which requires numpy. The problem is that matplotlib has a bunch of other dependencies, and I want to use apt-get. But apt-get wants the starndard ubuntu python-numpy, which is both an older version than mine and also will not use my tuned ATLAS.
I assume I can install matplotlib with apt-get without overwriting my numpy, but I haven't figured out how. I learned about checkinstall to maintain my manual installations, which seems to work, apt-get, aptitude, and synaptic all are aware of my numpy if I use checkinstall. Great!
I also read that I can use aptitude 'hold' or 'pin' with apt-get, or 'lock' with synaptic to automatic upgrading. However, if I use apt-get or aptitude to install software (eg matplotlib) that needs my manual installation (eg numpy), it continues to overwrite my version, regardless of these holds, pins, locks. Am I failing to do something, or is this expected behavior?
As it is, it seems that once I depart from aptitude /apt-get, I can't easily return to using it, even with checkinstall, as I run the constant risk of overwriting my manual installations. Is this correct? In this example, I can still use aptitude to install each of matplotlib dependencies one by one, avoiding numpy, which is certainly helpful but perhaps more time consuming than need be, and then install matplotlib manually. That works.
Is there a way of telling apt-get /aptitude that my numpy is adequate for matplotlib, and to quit complaining and just use it and never overwrite? Or must I now always be on the look out for installations that will sneak in a numpy overwrite? What are best practices here?
This is what happens when everything is so convenient -- now I want it all.