Ubuntu

Debian 軟體包問題:文件正在安裝到 ‘/’

  • June 24, 2011

我最近一直在嘗試打包一個小的 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/textreviseroot:rootand 模式 0755(以及目錄$(DESTDIR)/usr$(DESTDIR)/usr/bin)擁有。

您可能想看看 install命令,它可以讓您更好地控制已安裝文件的所有者、組和模式,以編寫更簡潔的 Makefile 節。

引用自:https://unix.stackexchange.com/questions/15557