나는 꽤 오랫동안 리눅스를 사용해 왔으며, 항상 Windows가 apt-get , aptitude , Pacman , yum 및 기타 패키지 관리자와 같은 프로그램 문제를 어떻게 처리 할 수 있는지 궁금 했습니다. 때때로, 패키지 관리자가이 버전의 해당 라이브러리가이 패키지에 필요했거나 충돌이있을 수 있다고 알려줄 것입니다.
Windows는이 모든 것을 어떻게 처리합니까?
나는 꽤 오랫동안 리눅스를 사용해 왔으며, 항상 Windows가 apt-get , aptitude , Pacman , yum 및 기타 패키지 관리자와 같은 프로그램 문제를 어떻게 처리 할 수 있는지 궁금 했습니다. 때때로, 패키지 관리자가이 버전의 해당 라이브러리가이 패키지에 필요했거나 충돌이있을 수 있다고 알려줄 것입니다.
Windows는이 모든 것을 어떻게 처리합니까?
답변:
그렇지 않습니다. 컴파일러에 따라 프레임 워크 버전 X를 설치하도록 요청 하는 .NET 에 대해 이야기하지 않는 한 .
다른 모든 것들은 단지 오류를 던집니다. 행운을 빕니다 missing dll xxxx.dll
. 그러나 대부분의 설치 프로그램에는 소프트웨어를 실행하는 데 필요한 라이브러리가 포함되어 있습니다.
2014 년 4 월 4 일 수정 : 안녕하세요. 오늘 출시 된 내용을 확인하세요.
나는 단지 대답에 약간의 확장을 원했습니다. 세부 사항에 대해서는 조금 드문 일이기 때문입니다. 필리페의 대답은 Windows가 실제로 그 전략에 대한 언급도하지 않습니다 않는 구성 요소 가게처럼 해결하거나 완화 프로그램 의존성 문제로 사용을 (WinSxS에, 등) 전역 어셈블리 캐시는 MSI 시스템을, 그러나 다른 한편으로 그는의 기본적 권리에 앱에 사용자 지정 라이브러리를 포함시키고 설치 트랜잭션을 커밋하기 전에 종속성이 있는지 확인하는 것은 개발자의 책임입니다.
Windows는 Linux보다 모듈식이 적으며, 장점과 단점이 있습니다. 단점은 Windows가 더 모 놀리 식 (monolithic)이므로 운영 체제의 구성 요소가 Linux에서와 같이 제거 가능하거나 선택적으로 상대적으로 적다는 것입니다. (그러나 Windows는 천천히 그것에 대해 나아지고 있습니다.)
그러나 반대로, 개발자는 사용자가 자신의 컴퓨터에 어떤 라이브러리를 가지고 있는지에 대해 훨씬 더 많은 가정을 할 수 있습니다. 그리고 일단 설치되면 해당 라이브러리의 다양한 버전이 구성 요소 저장소 에 나란히 저장되어 더 이상 crapDLL.dll 필요에 대한 App1 짖는 소리와 같은 시간에 crapDLL.dll의 다른 버전이 필요하다는 App2 짖는 소리가 없습니다 시간 등
Windows에서는 라이브러리의 버전 관리를 제공하는 것은 소프트웨어 제작자에게 달려 있습니다. Windows에는이를 지원하는 몇 가지 기능이 있습니다.
설치 프로그램 (.msi)과 상호 작용하는 Windows Installer 및 Trusted Installer 서비스 버전 관리 충돌을 분류하는 데 도움이되는 격리 된 응용 프로그램 및 단계별 어셈블리라는 지원 기술도 있습니다.
.NET 프레임 워크 응용 프로그램의 경우 전역 어셈블리 캐시, 강력한 이름의 어셈블리 및 핵심 매니페스트가 있습니다.
Windows 8 및 8.1에는 Windows 런타임 라이브러리 (win32 API 교체)와 함께 Windows App Store가 있습니다.
편집 : 이러한 기술의 대부분은 다른 데이터 중에서도 버전 번호, 작성자, 종속 어셈블리 및 해당 버전을 제공하는 임베디드 파일 인 어셈블리 매니페스트입니다.
다른 답변은 패키지 관리와 OS가 별도의 아이디어이지만 해결책을 언급하지 않았다는 것을 올바르게 지적했습니다.
Windows에서 apt-get 또는 yum과 가장 유사한 패키지 관리 시스템은 현재 Chocolatey 입니다. 사람들이 패키지 (msi, exe, powershell scripts)를 설치 / 제거 할 수 있으며,이 패키지에는 Chocolatey가 자동으로 해결할 수있는 종속성에 대한 정보가 포함될 수 있습니다.
패키지에는 일반적으로 설치 프로세스를 관리하기위한 바이너리 및 스크립트에 대한 링크가 포함되어 있습니다. 패키지에는 바이너리 또는 기타 필요한 파일이 포함될 수도 있습니다 (종속성은 별도의 패키지에 있어야 함). Chocolatey는 Microsoft의 Web Platform Installer , Ruby Gems, Python 등과 같은 외부 패키지 관리 시스템을 사용할 수도 있습니다 .
내가 이해 한 바에 따르면 Windows가 처리하는 유일한 종속성은 Microsoft 특정 라이브러리입니다. 예를 들어 Blender와 같은 Windows에 오픈 소스 프로그램을 설치하면 libavcodec 및 ffmpeg 라이브러리가 별도의 dll 파일에 설치되고 OpenShot을 설치하면 자체 사본이 설치됩니다. libavcodec는 자체 디렉토리에 있으며 완전히 다른 버전 일 수 있습니다. 남은 정크를 정리하기 위해 소프트웨어를 제거 할 때 악몽이 될 수 있으며 라이브러리 중복성을 통해 더 많은 디스크 공간을 차지합니다.