ELPA/package.el
爲了防止更新通過package.el,添加特殊依存(emacs "24.1")
到Package-Requires
列表。見Library Headers所述的Emacs Lisp手冊中,在Package-Requires:
頭的描述:
[...]包代碼自動定義了一個名爲「emacs的與所述當前正在運行的Emacs的版本號包。這可以用來爲包提供一個最小版本的Emacs。
其爲Emacs 23獨立分佈和下面不不提供這個特殊的包中的package.el。因此,任何試圖在Emacs 23上安裝軟件包的嘗試都會失敗,並顯示一條消息,抱怨「emacs」無法安裝,只保留舊的兼容版本。
然而,使用這種時候,準備處理從Emacs的24的用戶抱怨很多用戶顯然不刪除舊package.el
升級到Emacs的24時,因此老package.el
覆蓋新的內置於一體,leading to spurious errors on installation。
ELGet
我不知道Elget。大概問問作者在這件事情上的幫助。
Git的子模塊,壓縮包等傳統方法
我不認爲,你可以真正防止更新,如果用戶在傳統的方式安裝的軟件包(如Git的子模塊,分發包,等等。)。您只能在之後投訴,因爲您的軟件包已更新,這可能太晚了,因爲不兼容的代碼現在已經存在。
您可以選擇添加一個明確的版本檢查,其中包含詳細的error
。不過,我認爲這是多餘的。如果你真的使用Emacs 24,你將使用不兼容的函數,所以你的包不會成功加載,無論你是否明確地阻止它。所以,拯救自己的多餘代碼:)
TL; DR(+個人經驗)
首先,請不要重命名你的包。幾乎沒有用戶可以關注每個安裝的軟件包的消息。因此,許多用戶不會立即意識到該軟件包已重新命名,並且繼續使用過時的版本,恕不另行通知或警告。實際上,你會懲罰你的軟件包的Emacs 24用戶。
添加特殊依賴關係以防止通過package.el意外更新。添加顯着的文檔,您的軟件包需要Emacs 24,就像在Github自述文件的第一部分中一樣。然後,讓事情休息。其他任何可能更麻煩,這是值得的。
在我的個人的經驗,Emacs的用戶並不愚蠢(好吧,至少大多數不是)。他們閱讀文件。他們理解文檔。
Emacs 23的用戶知道他們的Emacs已經過時。他們中的許多人認爲不兼容和破損。如果軟件包突然中斷,他們會在Github上尋求建議,意識到該軟件包不再適用於Emacs 23,並且可以返回上一個工作版本,或者(希望)升級它們的Emacs。
對於ELPA,您可以使您的軟件包依賴於'emacs-24',但我不確定這是否會提供所需的用戶體驗。 – legoscia