How can I simplify my package of package managers?
I don't know how it happened. I am a web developer and I am using Ubuntu and here are just a few of the package managers I use.
- apt-get for system-wide packages
- npm for node packages
- pip for python packages
- pip3 for python 3 packages
- cabal for haskell packages
- composer for php packages
- bower for front-end packages
- gem for ruby packages
- git for other things
When I start a new project on a new virtual machine, I have to install apparently a dozen package managers from a dozen different locations and use them all to create a development environment. It just gets out of hand.
I found that basically I can avoid installing and using pip / pip3 by simply installing the python packages from apt for example sudo apt-get install python3-some-library
. This eliminates the need for a single package manager. It's amazing. But then I got stuck with the Ubuntu versions of these packages, which are often very old.
I am wondering if there is a meta package manager that can help me replace some of these parts so my development environment is not that hard to replicate?
source to share
I got the idea to make a package manager to manage them all for this reason. Never finished, although too much effort to remain compatible. For every package manager, you have a huge community to support them.
The best advice I have is to try to reduce your toolchain for each type of project. Ideally, you don't need to work in every language you know for every project you work on. How many projects are you running using both python 2 and python 3 at the same time?
Keep using apt
for your system packages and install with it git
. From there, try to stick to one language for each project. AFAIK all of the package managers listed support installing packages from git
. All the languages you mentioned have comparable toolsets, so use the target link for the target language.
I worked with a team that used the composer
, npm
, bower
, bundler
, maven
and tar.gz
for front-end SPA, because the tools that they knew. Apart from all this, they vagrant
just used it as a deployer. We looked at our toolchain and described our need and realized that it could be expressed in one language once we adopted the appropriate tools for the task.
source to share