2017-09-28 72 views
0

我一直在閱讀關於構建RPM的知識,而且這個過程相當複雜。有沒有像這樣的程序/軟件:如何在沒有規格文件等的情況下從一行中的源代碼生成RPM?

  1. 下載tar.gz文件。解壓到目錄
  2. cd進入目錄
  3. 運行
  4. RPM文件輸出到目錄

是否有這樣的程序存在嗎?看起來好像它應該。畢竟,當我運行make,make install等時,我不需要指定spec文件,提供軟件安裝位置。那麼,爲什麼我必須爲創建RPM做所有這些工作呢?

我使用檢查安裝試過,但我不斷收到類似的錯誤「未找到目錄:/root/rpmbuild/BUILDROOT/hello-2.10-1.x86_64/usr」

那麼,有沒有一種更簡單的方法?

+0

我不知道你問的是否存在,但我不認爲你與make的比較是有效的。當你運行make時,你需要一個Makefile來告訴make各種目標的定義。 你會如何心目中的工具知道: 1.如何構建項目 2.輸出神器(S)是什麼 3.如果這些文物應在目標文件系統被部署 4.什麼文件權限應該等等。 –

+0

嗯。如果我現在可以毫無問題地使用「make」和「make install」,那麼我能記住的工具只是從「make」和「make install」的相同位置獲得他們的信息嗎? 工具「checkinstall」應該做這樣的事情,但我不能讓它爲RPM工作。我有一個解決方法是創建「deb」文件,並使用alien來轉換deb - > rpm。但它是不完美的,當然... 我只是鍵入「checkinstall」並創建rpm/deb(爲rpms竊聽)。不需要spec文件。 –

+1

夠公平了......我明白你的意思了。這個問題的表述方式,我不清楚(無論如何),你想從你的Makefile中的信息創建rpm。這可能是可行的,但它可能會導致一個非常複雜的Makefile。我們在我的項目中維護了很多rpm spec文件,並且誠實地說它們不包含太多冗餘信息。 在任何情況下,這仍然不是真正創造「從源頭上」的rpm。您仍然需要Makefile來提供rpm需要的關於依賴性的所有信息等。如果您需要安裝前/安裝腳本,它會很快變得複雜。 –

回答

0

不,沒有簡單的方法。

上游有時會提供'make rpm'目標。有時檢查安裝工作。但是通常您必須手動創建規格文件。

BTW從檢查安裝的錯誤表明了兩兩件事:

  • 您正在運行的命令,作爲根。這是非常不明智的。
  • 你應該創建幾個構建目錄。運行命令rpmdev-setuptree它會爲你創建它們。
+0

謝謝!我已經設置了這些目錄,當我運行checkinstall作爲另一個用戶時,我只是得到一個類似的錯誤... –

+0

迄今爲止,唯一對我有用的是使用checkinstall創建一個.deb文件,然後使用外來程序convert .deb - > .rpm。如果checkinstall不需要SPEC文件來創建rpms,那麼爲什麼我們需要一個? –

+0

Checkinstall只監視'make install'並將所有已安裝的文件放入%files部分。將所有其他部分保留爲其默認值。對於超級簡單的包來說,這可以很好。但通常需要指定依賴關係,發佈安裝腳本(重新啓動守護進程),在安裝軟件包之前創建用戶,將某些文件標記爲配置....這對於一般軟件來說很難自動完成。 – msuchy

相關問題