2014-01-17 38 views
11

對於我們的prod應用程序,我們使用RPM管理所有軟件包。在一個完美的純百勝的世界裏,這很好。在RPM環境中管理pip

但是,每種語言或框架最近都在部署他們自己的軟件包管理器。例如,對於python,我幾乎總是使用pip,然後在生產時再次爲rpm生成軟件包。 npm或寶石也一樣。

這是很多人遇到的問題嗎?避免這一切的最好方法是什麼?人們是通過吮吸它並手工打包所有東西來解決這個問題的,還是有一些自動化的方法來整合它們?

我很想聽聽關於此的想法。

回答

8

我已經使用pyp2rpm建立RPM包RSTR模塊和我通過PIP或不喜歡某些文件的隨機安裝:

pyp2rpm -n rstr > ~/rpmbuild/SPECS/rstr.spec 
rpmbuild -ba ~/rpmbuild/SPECS/rstr.spec 

,但我不知道這是不是夠用了您的生產使用。

+0

太好了。必須處理這樣一個事實,即EL6上的RPM沒有定義__python2宏,但除此之外它完美地工作。 – cababunga

1

我更喜歡安裝到不同於默認系統的sitelib。因此,我做的事:

$ pip install --user django 

很不理想,不與DNF /轉/蔭,但在同一時間玩不惹你的系統模塊。你可以隨時擦拭它們。

1

您可以安裝FPM:https://github.com/jordansissel/fpm

包艾芬管理!以非常輕鬆和理智的方式爲多個平臺(deb,rpm等)構建軟件包。 http://fpm.readthedocs.io/en/latest/

接下來,您可以運行:

$ fpm -s python -t rpm pyramid 
no value for epoch is set, defaulting to nil {:level=>:warn} 
no value for epoch is set, defaulting to nil {:level=>:warn} 
Created package {:path=>"python-pyramid-1.9a2-1.noarch.rpm"} 

-s源型
-t類型的包來創建
並作爲最後一個參數封裝

https://fpm.readthedocs.io/en/latest/source/python.html

的名字