Debian

刪除 Debian 軟體包時,如何同時刪除 Python *.pyc 文件?

  • December 13, 2013

我有一個 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

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