我理解這些基本概念,但是有沒有使用特殊算法,或者有些博客,論文甚至是關於這個主題的書籍,可以讓他們構建自己的系統?實際上實施這樣的系統似乎沒有什麼信息。包管理器(aptitude,yum,portage)如何構建它們的依賴樹?
回答
依賴關係樹本身加載是微不足道的,所有你需要的是從鍵(如名稱)到對象的一些映射。
你還沒有指定任何語言,所以我選擇了Python。期望的輸入是以「[name]:[空格分隔的依賴關係]」形式的行文件。
def load_depends(file):
depends = {}
for line in file:
line = line.strip()
if not line or line.startswith("#"): # allow blanks and comments
continue
name, _, deps = line.partition(":")
deps = deps.strip()
assert deps, "invalid input" # most basic input error-checking
depends[name] = set(deps.split())
return depends
此代碼假定未列出的項目具有零點的依賴,你可以遍歷樹如果需要添加空項。至少你應該檢查遞歸依賴關係。
例子:
>>> input = """\
... a: b c
... b: c
... c: d
... e: a
... """.split("\n")
>>> from pprint import pprint
>>> pprint(load_depends(input))
{'a': set(['b', 'c']),
'b': set(['c']),
'c': set(['d']),
'e': set(['a'])}
[注:我走了一條捷徑,因爲我真的不要求行的文件,但行的迭代(該文件符合),所以我通過列表]
你可以在這個基本結構的基礎上構建各種函數,然後將它和那些概念封裝起來(比如依賴vs建議和建議,甚至是衝突vs替換等)特定於您的系統的對象。
許多其他概念還涉及依賴關係樹,如SNMP MIB解析,C/C++源代碼編譯。所以你可以參考任何其他材料,談論這個:)
你有什麼具體的想法?我的問題之一是,搜索只會導致人們談論他們自己的軟件包管理器問題,而不是編程。 – tedivm 2009-11-30 08:32:37
當我編程#SNMP Suite時,我編寫了自己的SNMP MIB解析代碼。在加載新的MIB模塊之前,利用一個簡單的遞歸算法來檢查是否所有的依賴項都已經加載到了ObjectTree實例中。 一般來說,寫起來並不難,而且您總是可以從您喜歡的語言的小樣本項目開始。 – 2009-11-30 09:13:42
- 1. 如何構建管理依賴項的自包含OSGi包?
- 2. 構建依賴樹
- 3. 如何管理包含重複依賴關係的依賴關係樹? (XCode,iOS)
- 4. 如何在構建服務器上管理自動構建的依賴關係?
- 5. Javascript的依賴管理器?
- 6. Gradle中的構建依賴關係樹
- 7. 如何管理OSGi構建依賴關係?
- 8. 依賴管理
- 9. 語言/平臺/構建無關依賴關係管理器
- 10. Maven構建與依賴樹不同
- 11. 如何理解Maven依賴關係樹
- 12. Matlab依賴管理
- 13. 依賴管理EAR
- 14. Maven:依賴管理
- 15. Java依賴管理
- 16. Python包依賴關係樹
- 17. 管理軟件包依賴關係
- 18. 管理巧克力包依賴項
- 19. Javascript依賴性管理和包裝
- 20. 的WebPack,如何管理依賴
- 21. Maven-2:如何管理依賴依賴的地方?
- 22. Git子模塊vs Git子樹vs依賴管理器CocoaPods
- 23. RequireJS僅包含構建中的依賴
- 24. 如何創建與構建依賴關係的deb包
- 25. Javascript編譯器/依賴管理器?
- 26. JavaScript的依賴管理和構建工具
- 27. 用於構建和測試的SBT依賴項管理分離
- 28. 是否有VC++的依賴管理器?
- 29. Web的依賴關係管理器
- 30. PowerShell的依賴管理
當您試圖查看這些軟件包管理器的源代碼時發生了什麼?能夠看到如何編寫開源工具是他們的一大好處! – 2010-02-22 11:41:58
我已經檢查過他們,但說實話,有些非常混亂,很難分析。令人震驚的是,我發現PEAR是一個很好的資源,並且已經對它進行了相當多的研究。 – tedivm 2010-02-23 18:47:39
我建議你用你之前評論的內容更新你的問題。與研究有關的信息屬於這個問題。 – tzot 2011-11-13 07:53:04