Ubuntu
Debian 軟體包問題:文件正在安裝到 ‘/’
我最近一直在嘗試打包一個小的 Python 實用程序來放在我的 PPA 上,我幾乎可以讓它工作,但是我在使包安裝二進製文件(一個 chmod +x Python 腳本)時遇到了問題
/usr/bin
。相反,它安裝在/
. 我有這個目錄結構-> http://db.tt/0KhIYQL。我的包 Makefile 是這樣的:
TARGET=usr/bin/txtrevise make: chmod +x $(TARGET) install: cp -r $(TARGET) $(DESTDIR)
我使用過
$(DESTDIR)
,據我了解,在執行 debuild 時將文件放在 debian 子目錄下。我有 txtrevise 腳本,我的執行檔,
usr/bin
位於我的包根目錄下的文件夾下。我也有 Makefile 和usr/bin/textrevise
我的 tarball:txtrevise_1.1.original.tar.gz。但是,當我建構它並查看 Debian 軟體包內部時,txtrevise 始終位於軟體包的根目錄而不是 usr/bin 下,並且將安裝到 / 而不是 /usr/bin。
如何進行 debuild 以將腳本放在正確的位置?
問題出在
cp $(TARGET) $(DESTDIR)
呼叫中:這將複製目錄textrevise
下的文件$(DESTDIR)
,即跳過/usr/bin
前綴。您需要保留目錄結構,例如:install: # ensure the destination directory exists mkdir -p $(DESTDIR)/usr/bin # copy the program to its final destination cp $(TARGET) $(DESTDIR)/$(TARGET) # ensure the program and directories have the correct permissions chmod a+rx $(DESTDIR)/$(TARGET)
請注意,在建構供他人使用的軟體包時,您還必須確保根據Debian 策略設置所有目錄和二進製文件的權限;在這種情況下,您希望
$(DESTDIR)/usr/bin/textrevise
由root:root
and 模式0755
(以及目錄$(DESTDIR)/usr
和$(DESTDIR)/usr/bin
)擁有。您可能想看看 install命令,它可以讓您更好地控制已安裝文件的所有者、組和模式,以編寫更簡潔的 Makefile 節。