前不久,朱老師讓寫一個spec。spa
我以前並無寫過spec,根本不知道這是什麼,去網上查看了大量的關於spec的博客,遇到的坑不少,可是遇到最大的坑就是%install部分的make install。code
網上的資料是這樣說的:blog
本段是安裝段,其中的命令在安裝軟件包時將執行,如make install命令。
%makeinstall 這不是關鍵字,而是rpm定義的標準宏命令。也可使用非標準寫法:引用make DESTDIR=$RPM_BUILD_ROOT install或引用make prefix=$RPM_BUILD_ROOT install 須要說明的是,這裏的%install主要就是爲了後面的%file服務的。因此,還可使用常規的系統命令: 引用install -d $RPM_BUILD_ROOT/ cp -a * $RPM_BUILD_ROOT/
可是我每次使用make install時候都會報錯make: *** No rule to make target 'install'。換成install -d的寫好就能夠,我也不明白是爲何。get
後來發現,使用make install是在已經編寫過Makefile的前提下進行的,報錯中的install實際上是Makefile中的寫好的target。博客
舉個例子,在Makefile中編寫,以下:console
install-oem:
mkdir -p $(LIBDIR)/xsconsole/plugins-oem
則在%install中就能夠這樣寫:class
%install
make install-oem DESTDIR=$RPM_BUILD_ROOT
不然,固然會報錯找不到target。打包
朱老師說如今使用Makefile已經有點過期了。我是以爲Makefile很煩,寫錯了,還要從新打包,生成壓縮文件才行。改多了以後根本受不了,不如直接在%install裏面直接寫內容,這樣改起來也方便。軟件
【做爲一個菜鳥真心不但願前輩們再不實踐照抄他人博客,坑太多了】file