刪除 Debian 軟體包時,如何同時刪除 Python *.pyc 文件?
我有一個 Debian 軟體包
XYZ.deb
,它會在安裝時複製一些文件。根據關於軟體包解除安裝的 Debian 軟體包政策,只有那些在安裝期間複製的文件將被刪除。Debian 也不會刪除
conf
文件。XYZ 包安裝了一些 Python 腳本,這些腳本在執行時會創建
.pyc
文件。現在在解除安裝時,我想刪除所有文件。乾淨地刪除包的 postrm 腳本是什麼?
關於你的第一個問題:
XYZ 包安裝了一些 python 腳本,這些腳本在執行時會創建 .pyc 文件。現在在解除安裝時我想刪除所有文件。乾淨刪除包的 postrm 腳本是什麼?
一般來說,合適的 postrm 腳本(我相信)是由 debhelper 和朋友自動生成的。請參閱手冊頁
dh_python
。特別是,這個手冊頁說如果某些模組需要在安裝時進行字節編譯,則會生成相應的 postinst 和 prerm 腳本。如果已找到已字節編譯的模組,則將其刪除。
關於你的第二個問題,
XYZ 也是使用 debconf 文件配置的,該文件在安裝包時會提示使用者接受 EULA。如果使用者拒絕 EULA,我該如何退出?
我不知道答案,但請看一下 Debian 中包含的一些專有軟體的 debconf 模板。Sun Java 是一個擁有(擁有?)被 debconf 收購的 EULA 的範例。
附錄:
由於 OP 似乎不相信,這裡是一個名為
python-corrmodel
. 我編寫了軟體以及 Debian 包裝。但是,我並沒有編寫 postinst 和 prerm 腳本,事實上直到現在還沒有看過它們。請注意,prerm 腳本呼叫pyclean
實用程序,它是 Python 的一部分。幫助說:pyclean - 刪除 .pyc 和 .pyo 文件
另請注意,腳本說程式碼是由
dh_python2
.最後一點:我推薦使用
dh
,與老式的 debhelper 相比,它相對較新,但正在迅速普及。基本上,dh
預設情況下會以特定順序在預設模式下呼叫所有 debhelper 規則。如果要自定義特定 debhelper 命令的行為,可以覆蓋它。這是 debhelper 的作者 Joey Hess 對 dh 覆蓋的描述。最大的優點是您的規則文件不那麼混亂,並且您可以確保所有命令都以正確的順序呼叫。這是 prerm 腳本。
#!/bin/sh set -e # Automatically added by dh_python2: if which pyclean >/dev/null 2>&1; then pyclean -p python-corrmodel else dpkg -L python-corrmodel | grep \.py$ | while read file do rm -f "${file}"[co] >/dev/null done fi # End automatically added section
附錄 2:
由於我做廣告
dh
,我將在下面添加我的規則文件。這不是完整的規則文件,但這一行包含主要邏輯。這基本上debhelper
將建構移交給setup.py
腳本,然後由腳本完成繁重的工作。%: dh $@ --with python2 --buildsystem=python_distutils --install-layout=deb