對於我們的prod應用程序,我們使用RPM管理所有軟件包。在一個完美的純百勝的世界裏,這很好。在RPM環境中管理pip
但是,每種語言或框架最近都在部署他們自己的軟件包管理器。例如,對於python,我幾乎總是使用pip,然後在生產時再次爲rpm生成軟件包。 npm或寶石也一樣。
這是很多人遇到的問題嗎?避免這一切的最好方法是什麼?人們是通過吮吸它並手工打包所有東西來解決這個問題的,還是有一些自動化的方法來整合它們?
我很想聽聽關於此的想法。
對於我們的prod應用程序,我們使用RPM管理所有軟件包。在一個完美的純百勝的世界裏,這很好。在RPM環境中管理pip
但是,每種語言或框架最近都在部署他們自己的軟件包管理器。例如,對於python,我幾乎總是使用pip,然後在生產時再次爲rpm生成軟件包。 npm或寶石也一樣。
這是很多人遇到的問題嗎?避免這一切的最好方法是什麼?人們是通過吮吸它並手工打包所有東西來解決這個問題的,還是有一些自動化的方法來整合它們?
我很想聽聽關於此的想法。
我已經使用pyp2rpm建立RPM包RSTR模塊和我通過PIP或不喜歡某些文件的隨機安裝:
pyp2rpm -n rstr > ~/rpmbuild/SPECS/rstr.spec
rpmbuild -ba ~/rpmbuild/SPECS/rstr.spec
,但我不知道這是不是夠用了您的生產使用。
我更喜歡安裝到不同於默認系統的sitelib。因此,我做的事:
$ pip install --user django
很不理想,不與DNF /轉/蔭,但在同一時間玩不惹你的系統模塊。你可以隨時擦拭它們。
您可以安裝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類型的包來創建
並作爲最後一個參數封裝
太好了。必須處理這樣一個事實,即EL6上的RPM沒有定義__python2宏,但除此之外它完美地工作。 – cababunga