나는 기본적인 개념을 이해하고 있지만 특별한 알고리즘이 사용되었거나 또는 블로그, 논문 또는 심지어 자신의 시스템을 구축하는 누군가의 주제에 관한 책이 있습니까? 이와 같은 시스템을 실제로 구현하는 데는 정보가 거의없는 것 같습니다.패키지 관리자 (aptitude, yum, portage)는 종속성 트리를 어떻게 구성합니까?
답변
종속성 트리 자체는로드하기가 쉽지 않으므로 키 (예 : 이름)에서 개체로의 매핑 만 있으면됩니다.
언어를 지정하지 않았으므로 Python을 선택했습니다. 예상되는 입력은 "[name] : [space separated dependencies]"형식의 행 파일입니다.
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
이 코드는 나열되지 않은 항목이 0 개의 종속성이 없다고 가정하고 원하는 경우 빈 항목을 추가하기 위해 트리를 통과 할 수 있습니다. 적어도 재귀 적 종속성을 확인해야합니다.
예 :
>>> 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, 대체와 vs 대체 등) 시스템에 특정한 객체.
많은 다른 개념은 SNMP MIB 분석, C/C++ 소스 코드 컴파일과 같은 종속성 트리도 포함합니다. 그래서 이것에 대해 이야기하는 다른 자료를 참조 할 수 있습니다.
특별한 점이 있습니까? 내 문제 중 하나는 주변을 인터넷으로 검색하는 것만으로 사람들이 프로그래밍에 관한 문제가 아니라 패키지 관리자 문제에 대해 이야기하게된다는 것입니다. – tedivm
#SNMP Suite를 프로그래밍 할 때 자신의 SNMP MIB 해결 코드를 작성했습니다. 즉, 새로운 재귀 적 알고리즘을 사용하여 새로운 MIB 모듈을로드하기 전에 모든 종속성이 이미 ObjectTree 인스턴스에로드되었는지 확인합니다. 일반적으로 작성하는 것이 그리 어렵지 않으며 항상 원하는 샘플 프로젝트에서 시작할 수 있습니다. –
- 1. 패키지/모듈 종속성 트리를 올바르게 구성하는 방법은 무엇입니까?
- 2. PHP 패키지 관리자
- 3. Python 패키지 외부 종속성
- 4. NuGet + 패키지 관리자 콘솔
- 5. GWT 프로젝트를 어떻게 구성합니까?
- 6. 어떻게 단위 테스트를 패키지로 구성합니까?
- 7. TestSuite는 어떻게 구성합니까?
- 8. UAC 관리자 권한이없는 MSI 패키지
- 9. 문제 Lispy 패키지 관리자 설치
- 10. Makefile에서 종속성 트리를 자동 생성하는 방법이 있습니까?
- 11. 데이터베이스에 종속성 트리를 저장하는 방법은 무엇입니까?
- 12. STL 헤더를 어떻게 구성합니까?
- 13. 수업을 어떻게 구성합니까?
- 14. 어떻게 PHP로 페이지를 구성합니까?
- 15. 유틸리티 기능을 어떻게 구성합니까?
- 16. mod_perl2에서 PerlSections를 어떻게 구성합니까?
- 17. 등급 구현을 어떻게 구성합니까?
- 18. 리소스 파일을 어떻게 구성합니까?
- 19. 종속 소프트웨어의 새로운 버전이있을 때 yum 의존성 검사를 무시합니다.
- 20. 타사 패키지 종속성 참조 버전을 제한하는 방법?
- 21. 아이비로 매핑 된 메이븐 스코프는 어떻게 구성합니까
- 22. C++ 용 소스 코드 종속성 관리자
- 23. 정확히 어떻게 ASP.NET에서 httpOnlyCookies를 구성합니까?
- 24. Buildroot에서 Linux 커널을 어떻게 구성합니까?
- 25. 임시 작업 파일을 어떻게 구성합니까?
- 26. MVC 컨트롤러 테스트를 어떻게 구성합니까?
- 27. 두 DFA의 결합을 어떻게 구성합니까?
- 28. WebLogic 10.3에서 WorkManager를 어떻게 구성합니까?
- 29. 웹 사이트 콘텐츠를 어떻게 구성합니까?
- 30. 토런트 파일 인덱서는 어떻게 구성합니까?
패키지 관리자의 소스 코드를 보려고했을 때 어떤 일이 발생 했습니까? 오픈 소스 도구가 어떻게 쓰여지는지 볼 수 있다는 것이 그들의 이익의 상당 부분입니다! –
나는 그것들을 조사했지만 솔직히 말해서 어떤 것은 매우 혼란스럽고 분석하기가 어렵다. 놀랍게도 나는 PEAR이 훌륭한 자원이라는 것을 알았고 꽤 많이 살펴 보았습니다. – tedivm
질문을 이전 의견의 내용으로 업데이트하는 것이 좋습니다. 연구 관련 정보는 질문에 속합니다. – tzot