我的項目應該在其目錄中有一個spec文件(因此它不在SPECS
目錄中),它可以用於從make rpm
包中構建一個rpm包。使用PHP源代碼創建一個rpm包
該項目本身是一個Symfony應用程序。安裝軟件包因此,當三件事情應該發生:
- 應用程序複製到其目的地(最好是適當的Apache2目錄)
- 複製配置文件
/etc/appname/
- 在
/var/log/appname
創建日誌文件的目錄
該應用程序可以使用make dist
構建,該應用程序構建應用程序並在之後創建dist.tar.gz
文件。
據我瞭解rpmbuild
它應該足以實現我的spec文件的%install
部分。但我的問題是,在本節中,我在~/rpmbuild
目錄內,我的壓縮應用程序和我的源代碼都沒有存在。只是cd
到另一個目錄將無法正常工作,因爲我不知道規範文件被調用的位置(以及項目的其餘部分)。
我要的是這樣的:
Name: appname
# rest of the header (group, summary, ...)
Source: dist.tar.gz
Requires: php >= 7.0, apache2
%description
important words
%install
cp * /var/www/appname # copy the application to its destination
cp docs/config/example /etc/appname/ # copy config to its destination
mkdir -p /var/log/appname # create log directory
另外,我不知道我的%files
應該是在這種情況下,與有關權限什麼。
非常感謝這個答案,我會稍後再試。剩下的一個問題是:在'%files'中列出所有文件將是一個瘋狂的長列表(由於供應商)。有沒有辦法遞歸列出所有文件? – nehalist
是的,引用目錄(您在'%install'中複製了一些文件的位置)就足夠了。 – marbu
使用'$ RPM_BUILD_ROOT'前綴我的dest路徑導致「目錄不存在」錯誤,因爲像'$ RPM_BUILD_ROOT/var/www ...'這樣的東西不存在。爲什麼我必須使用RPM_BUILD_ROOT呢? – nehalist