我使用Adobe CQ的CQ Blueprints maven archetype在CQ5.6.1中部署OSGi軟件包。該原型使用Maven Sling Plugin通過將它們複製到我的內容存儲庫的安裝目錄中來部署這些包。
我正在使用maven版本插件更改每個版本的捆綁版本號。因此,每次部署時,都會安裝一個具有新文件名的捆綁包,如commons-services-1.0.30.jar
。我的問題是,當前舊版軟件包版本(如commons-services-1.0.29.jar
)在安裝較新版本時不會被刪除。
我想避免舊的捆綁版本在我的安裝文件夾中堆積。因此,我的問題是:在安裝新版本時卸載/刪除這些較舊版本的最佳方法是什麼?如何在安裝新版本後卸載舊的OSGI捆綁軟件版本?
回答
我通過我的myproject,所有模塊在配置filter.xml(見CQBlueprints description for the purpose of this module)刪除我的包的內容安裝文件夾解決了這個問題。這樣,在安裝新捆綁軟件之前總是刪除舊捆綁軟件。
要刪除我的安裝文件夾的內容,添加以下行到我的filter.xml文件:
<filter root="/apps/myapp/install">
使用curl命令刪除特定的捆綁軟件版本。
curl -u admin:admin -daction=uninstall http://localhost:4505/system/console/bundles/"name of bundle"
編輯:刪除清除,因爲這不適用於osgi包。
捆綁在一個安裝文件夾堆砌是不是一個真正的問題 - 他們將只使用空間,但它們是由CQ用來檢測和安裝包Apache的吊索安裝OSGI忽略。安裝程序僅考慮軟件包的最新版本(基於其OSGi版本標頭),並忽略舊版本。
如果你真的想刪除舊的包文件,最好的辦法可能是創建一個小工具,它可以通過遍歷安裝它們的JCR樹(我假設的/ apps)來找到它們,並刪除除最新版本以外的所有文件。如果軟件包文件名一致地包含版本號,則可以使用正確的比較器對其名稱進行排序,並刪除除最後一個之外的所有文件名。如果你想要非常強大,你需要閱讀包的元數據來了解它的版本號。
如果您希望這種情況發生時,你可以註冊一個OSGi EventHook安裝了新的包時,發現定期自動運行您的工具,並引發了清理運行。
對不起,如果這聽起來有點複雜 - 但再次捆綁文件沒有真正的問題。
非常感謝你爲您的詳細答案。我希望有一個更直接的方式來刪除舊版本,但我認爲你的建議是可靠的。您對Apache Sling OSGI安裝程序選擇基於OSGi版本頭的最新版本的評論使我認爲,如果捆綁包的文件名不包含版本號,也可以解決問題,但我不確定是否存在可以使用Maven Bundle插件將其保留在OSGi標頭中,從文件名中刪除版本號。 – raro 2014-10-01 01:56:31
你說得對,爲所有版本使用相同的文件名將解決清除問題,但在替換文件時可能會出現暫時性問題,我不確定安裝程序是否乾淨地處理該文件。如果你想玩文件名,最好的辦法可能是使用交替的文件名(bundleA,bundleB,然後回到A),所以你只有一個剩餘的,沒有瞬態問題。 – 2014-10-01 06:08:06
在我們的開發版本中,我們不會更改捆綁的文件名。它們始終包含相同的(x.x.x-SNAPSHOT)版本號。到目前爲止,我們沒有任何問題,所以我猜安裝程序能夠處理這種情況。 – raro 2014-10-01 14:02:41
- 1. 如何卸載較新版本的java並安裝舊版本?
- 2. osgi在felix中的捆綁包版本在aem包卸載後
- 3. 在安裝新版本之前卸載舊版本
- 4. Openshift pip卸載舊軟件包版本
- 5. 安裝和部署不想卸載舊版本並安裝新版本
- 6. Maven的:版本:更新父隨後安裝安裝舊版本
- 7. 如何刪除Java的舊版本,然後安裝新版本
- 8. 舊版Ruby版本在安裝最新版本之後顯示
- 9. 升級我的R版本後,如何輕鬆重新安裝舊版本中安裝的所有軟件包?
- 10. 舊版Android版本的捆綁通知
- 11. 安裝捆綁的較新版本的捆綁
- 12. 在安裝新版本之後,Ruby默認爲舊版本
- 13. iOS:AppStore安裝舊版本,然後提供更新到新版本
- 14. 卸載Ruby去舊版本
- 15. WIX-Setup卸載舊版本
- 16. 如何卸載舊版本的dnx?
- 17. 如何卸載舊版本的Sourcetree
- 18. 如何卸載舊版本的xcode
- 19. SWT的OSGI捆綁版本4.4.2
- 20. 如何讓msi安裝程序在較新的版本上安裝舊版本?
- 21. 在Mac OSX上卸載Redis。舊版本在安裝更新後運行
- 22. 如何知道舊Fedora版本的最新軟件包版本
- 23. Wix 3.8:安裝程序不卸載以前的版本或安裝新版本
- 24. 檢查已安裝版本的R軟件包並更新舊版本
- 25. 如何卸載以前的版本,並與維克斯捆綁
- 26. 如果在Windows安裝了較舊版本的軟件,如何停止安裝?
- 27. Windows 3.1安裝程序卸載後立即重新安裝舊版本,而不是安裝新的升級
- 28. 如何安裝舊版本的django軟件包?
- 29. 如何通過NuGet安裝舊版本的軟件包?
- 30. 在舊版本上安裝新版本的部署項目
我不認爲這個問題有什麼與JCR VersionManager,它是關於OSGi捆綁版本,而不是JCR節點版本。 – 2014-09-29 09:31:53
@BertrandDelacretaz其實我在想這個包將作爲jcr節點安裝,所以我們可以使用清除來清除,但我無法獲得版本號,所以第二部分不工作。我們可以做的是創建一個新的調度程序,我們可以安排在特定時間間隔後運行。在此調度程序中,我們將從安裝文件夾中刪除舊節點,並使用pattermather保留所有包的最新版本,或者使用split功能從版本號中提取數字值。 – amitdeol 2014-09-29 10:13:43
任何方式捲曲部分工作正常我們可以使用捲曲刪除舊版本 – amitdeol 2014-09-29 10:14:22