建構 Debian 軟體包

建構 Debian 軟體包

已經待了幾天了,我想是時候得到更有經驗的建議了。

我正在打包一個 perl 應用程式 - 所有檔案都應放置在/var/www/<packagename>系統上的目錄中。

到目前為止,我已經能夠建立該套件 - 但它沒有將我的文件放在這個目錄中,而且我還沒有閱讀任何關於如何執行此操作的簡潔方法。

現在我的套件構建正確 - 除了 lintian 警告之外,但它們主要是我使用 dh_make 中的模板文件,一旦我讓它正常工作,我將更新它。

基本上現在我的結構是這樣的:

ls:

packagedirectory-1.0
 - debian directory with control/copyright/rules/ ...
 - directory belonings to app
 - directory belonging to app
 - files belonging to app
package)1.0-1.tar.gz

我一直在建設

dpkg-buildpackage -us -uc

(暫時不簽名,一旦正確建置就會這樣做)並從套件目錄中執行此操作。這輸出了 my .deb.changes.orig.tar.gz.dsc

任何幫助,將不勝感激。再說一次 - 我在這裡遇到的主要問題是我想/var/www/<packagename>在安裝時將應用程式檔案/目錄放入其中。

答案1

Debian 軟體包不應在 /var/www 下安裝檔案。這不是檔案層次結構標準中的 /var 目錄之一,並且受本機管理員的控制。套件不應假定它是 Web 伺服器的文檔根;使用者更改預設文檔根目錄是很常見的,且套件不應假定使用者將保留任何特定設定。

想要透過已安裝的 Web 伺服器提供檔案的軟體套件應該將本機管理員的說明放在 README.Debian 檔案中,並且最好包含常見 Web 伺服器(例如 Apache)的設定片段。

http://lintian.debian.org/tags/dir-or-file-in-var-www.html

phpldapadmin - 一個流行的基於 php 的 LDAP 管理工具 - 附帶一個包含在 /etc/apache2/conf.d/ 中的文件,有兩個選項:

# Option 1: Define /phpldapadmin alias, this is the default
<IfModule mod_alias.c>
    Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
</IfModule>

# OR Option 2: You can also use phpLDAPadmin as a VirtualHost
<VirtualHost *:*>
 ServerName ldap.example.com
 ServerAdmin [email protected]
 DocumentRoot /usr/share/phpldapadmin/htdocs
 ErrorLog logs/ldap.example.com-error.log
 CustomLog logs/ldap.example.com-access.log common
</VirtualHost>

#Then define the directory options like default index, access control etc.
<Directory /usr/share/phpldapadmin/htdocs/>
 DirectoryIndex ...
 ...
</Directory>

依照此範例,您可以將要在 /var/www/yourpackage 中顯示的檔案安裝到 /usr/share/yourpackage/htdocs 中並編輯你的相應地包括 apache conf。然後將包含的 apache conf 片段保存在 /usr/share/doc/yourpackage/examples/ 中,或將其與套件一起直接安裝到 /etc 中。在README.Debian(同一文件目錄中)中新增說明,讓使用者將/etc/yourapp.conf 或/etc/yourapp/apache.conf 連結到/etc/apache2/conf.d/yourapp.conf 並重新啟動Apache 。

答案2

我最終使用了在此找到的資訊:https://stackoverflow.com/questions/3214319/i-need-my-debian-rules-file-to-simply-copy-files-to-its-target所以問題。雖然這是不是如果您的包要用於外部使用,則將文件放置在 /var/www 文件中的正確方法 - 這對我有用,因為它是內部使用的包。

請參見過度規定的評論考慮到這一點,因為它確實有非常詳細的信息,但它只是沒有被接受,因為它沒有回答實際的問題,只是說我不應該這樣做以及解決它的方法。

相關內容