2016-01-26 58 views
0

在我運行安裝命令時,spec文件中的哪些位置可以放置指令來安裝/移動文件?在我運行安裝命令時,我可以在spec文件中放置指令來安裝/移動文件?

rpm -ivh myrpm-1.0-12.rpm 

在我轉我充滿了文件(PHP文件)焦油球我想將它們放置到我的服務器上的一組目錄。

我跑。

rpmbuild -ba 

這會執行下面的命令,我不想在這個時候執行。

%install 
mkdir -p $RPM_BUILD_ROOT/usr/local/mypath/here 
cp -r . $RPM_BUILD_ROOT/usr/local/mypath/here 

我想這些命令由最終用戶

rpm -ivh myrpm-1.0-12.rpm 

在RPM文件安裝時它說,對安裝步驟的RPM是執行... 「從包中取出文件並將它們放在適當的位置:」

這是大多數人在考慮安裝軟件時想到的步驟。每個軟件包文件都包含要安裝的文件列表以及系統上的目標文件。另外,許多其他文件屬性(例如權限和所有權)由RPM正確設置。

我不知道把這些命令放在哪裏。

我也試過把這些命令放在%build中,它的行爲也是如此。

回答

1

RPM構建時間是提取這些文件的確切時間。

原始的tar球應該是「源RPM文件」的一部分,「二進制RPM文件」(壞的措辭;也許應該是更好的「在這種情況下安裝RPM文件」)應該保存RPM負責的目標文件系統的確切佈局。

此佈局在%install部分中定義。通常,您的序列號爲%prep%build%install%prep將你的源文件解壓縮到工作目錄中,%build將它們建立起來%install將stoff移動到定義應該存在的文件的「build root」。如果您沒有任何東西需要構建,那麼您可以省略%build,也許只需在%install部分解壓即可。

這也是RPM系統可以知道文件名稱的唯一方法,因此您可以使用rpm -qf $FILENAME來查詢它們的包。 (除了幽靈文件,但這不是很優雅)。

您可以添加一個%post scriptlet,它可以在安裝時解壓縮tarball,但如前所述,這將遠不夠優雅。

+0

謝謝,這有幫助。所以,如果我有一個想要解壓縮的文件夾,說,mydir/index.php我想要在機器上的文件的確切佈局是/usr/local/mypath/here/mydir/index.php,我在哪裏指定?你說,[.rpm文件]應該保存RPM負責的目標文件系統的確切佈局。我在哪裏指定佈局? – Eddie

+1

@Eddie在'%install'部分。這就是'$ RPM_BUILD_ROOT'部分的全部內容。您可以在目標系統上以'$ RPM_BUILD_ROOT'爲前綴創建** exact **佈局,然後'rpmbuild'將該目錄下的所有內容打包爲包。 –

+0

@EtanReisner 因此,當我運行'rpm -ivh myrpm ...'時,%install會運行嗎? 我把一個回聲聲明,我沒有看到它?當我建立rpm時,我確實看到了它(rpmbuild -ba myrpm ....) – Eddie

相關問題