前不久,朱老師讓寫一個spec。
我之前並沒有寫過spec,根本不知道這是什么,去網上查看了大量的關於spec的博客,遇到的坑很多,但是遇到最大的坑就是%install部分的make install。
網上的資料是這樣說的:
本段是安裝段,其中的命令在安裝軟件包時將執行,如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的寫好就可以,我也不明白是為什么。
后來發現,使用make install是在已經編寫過Makefile的前提下進行的,報錯中的install其實是Makefile中的寫好的target。
舉個例子,在Makefile中編寫,如下:
install-oem:
mkdir -p $(LIBDIR)/xsconsole/plugins-oem
則在%install中就可以這樣寫:
%install
make install-oem DESTDIR=$RPM_BUILD_ROOT
否則,當然會報錯找不到target。
朱老師說現在使用Makefile已經有點過時了。我是覺得Makefile很煩,寫錯了,還要重新打包,生成壓縮文件才行。改多了之后根本受不了,不如直接在%install里面直接寫內容,這樣改起來也方便。
【作為一個菜鳥真心不希望前輩們再不實踐照抄他人博客,坑太多了】