題 將實用程序腳本放在Debian中但不放在PATH中的位置?


我有一個帶有數據庫後端的Web應用程序。我有一些用於初始化數據庫的實用程序腳本。我想在Debian包中包含這些腳本,但是它們在刪除模式並重新創建時很危險。

所以,我不想把這些腳本放在PATH的目錄中。這種性質的腳本在Debian系統上的位置在哪裡? (請注意,這些腳本是  包維護者腳本。)


2
2018-05-22 17:26


起源




答案:


Debian的功能非常全面 政策 所以通常值得參考。我認為這涵蓋了它,

9.1.1文件系統結構

所有文件和目錄的位置必須符合   文件系統層次結構標準(FHS),版本2.3,但有例外   如下所述,除非這樣做會違反其他條款   Debian政策。

並檢查 FHS 我們發現,

/ usr / lib:用於編程和包的庫

目的

/ usr / lib包括目標文件,庫和內部二進製文件   不打算由用戶或shell腳本直接執行。   [22]

應用程序可以使用/ usr / lib下的單個子目錄。如果   應用程序使用子目錄,所有依賴於體系結構的數據   應用程序專用的必須放在其中   子目錄。

然後回到Debian政策,

對目標文件,內部二進製文件和庫的要求,   包括libc.so. *,直接位於/ lib {,32}下   和/ usr / lib {,32}被修改,允許安裝文件   到/ lib / triplet和/ usr / lib / triplet,其中triplet是值   由dpkg-architecture -qDEB_HOST_MULTIARCH返回   包的架構。包可能無法將文件安裝到任何文件   除了與之相匹配的三重路徑之外的三重路徑   包;例如,一個架構:包含的amd64包   32位x86庫可能無法安裝這些庫   / usr / lib中/ I386-Linux的GNU。 [69]

應用程序也可以使用/ usr / lib / triplet下的單個子目錄。

執行時鏈接器/加載程序ld *仍必須在現有中可用   / lib或/ lib64下的位置,因為這是   該架構的ELF ABI的一部分。


2
2018-05-22 22:02





程序內部可執行文件的常見位置是 /usr/lib/程序/

(舊的Debian系統使用 /usr/libexec/,但這不符合FHS。)

您也可以修改腳本,例如,警告用戶並退出if --force 沒有在命令行中給出。


2
2018-05-22 21:54





你的安裝根在哪裡?如果在/ usr / local中,我個人將它們放在/ usr / local / sbin或/ usr / local / etc / scripts目錄中。普通用戶不應該在他們的PATH中使用sbin,並且肯定沒有任何東西等等。如果它在/ opt中,那麼你甚至更安全,因為人們需要明確地將/ opt / WHATEVER / bin添加到他們的PATH,而你除了垃圾箱,它們可以放在任

你的腳本甚至需要設置執行位嗎?如果你強迫人們跑 bash my_schema_loader.sh 而不是跑步 my_schema_loader.sh 它可以防止大多數無意使用,但不會干擾故意使用。


1
2018-05-22 17:35



許多普通用戶在$ PATH中都有sbin,因為不幸的是這就是這樣的實用程序 ping 要么 ip 是。 - grawity