소프트웨어가 단일 파일로 패키지되지 않은 이유는 무엇입니까?


15

대부분의 Windows 소프트웨어는 단일 실행 파일로 패키지되어 있습니다. 설정 파일을 두 번 클릭하면 모든 파일, 바이너리 및 라이브러리가 설정됩니다.

우분투 또는 더 일반적으로 Linux 패키지의 종속성을 이해합니다. 그러나 나는 이것이 왜 존재하는지 궁금합니다. 모든 종속성을 가진 단일 파일을 빌드 할 수 없습니까? 이 방법의 문제점은 무엇입니까?

그 이유를 자세히 설명하십시오.

답변:


17

종속성이 프로그램 자체에 포함되지 않은 주된 이유는 시스템 구성 요소를 쉽게 업데이트 할 수 있기 때문입니다.

하나의 의존성이 5 개의 다른 프로그램에 의해 사용된다고 상상해보십시오. 해당 종속성에서 보안 취약점이 발견되면 5 개가 아닌 1 개만 업데이트하면됩니다.

사용자에게 여러 패키지를 설치해야하는 것은 중요하지 않습니다. 원하는 소프트웨어를 설치하면 종속성이 자동으로 설치됩니다.


.deb와 .exe 패키징의 주요 차이점은 Ubuntu 소프트웨어가 단일 파일로 게시되지 않는다는 것입니다. 가장 큰 차이점은 패키지를 포함하고 업데이트를 쉽게 제공 할 수있는 소프트웨어 리포지토리의 전체 개념입니다.

인터넷에 직접 연결되지 않은 컴퓨터에서는 문제가 될 수 있습니다. 이러한 어려움을 최소화하는 데 도움이되는 APTonCD 와 같은 도구가 있습니다 .


2
인터넷에 제대로 액세스하지 않고 우리와 같은 사용자에게 문제가 발생하는 경우
Anwar

2
인터넷 속도가 느리기 때문에이 기능이 싫습니다. 그리고 공유는 우분투 소프트웨어 (나는 매일 그것을 할 수 있기 때문에 음주 쉽다 - 캐시을 backuping 제안하지), 매우 어려운 다운로드
터키 온

1
그러나 실제로이 기능을 좋아해야합니다! 라이브러리를 다섯 번 다운로드하는 대신 한 번만 다운로드하면됩니다. Ubuntu 설치의 모든 프로그램에 자체 GTK + 또는 Qt 설치가 포함되어 있다고 상상해보십시오! 그것들은 거대 합니다.
Michael Wild

4

그것은 사실이 아닙니다. 우분투 소프트웨어는 일반적으로 하나의 .deb 파일로 제공됩니다. 완전히 단순하고 부정확 한 .deb 파일은 Windows의 해당 .exe 파일입니다. Windows 프로그램을 포함한 모든 프로그램은 운영 체제 (라이브러리)의 다른 파일에 대한 종속성을 사용합니다. 설치 프로세스는 다른 OS에서 다소 명시 적입니다. Ubuntu의 소프트웨어 센터를 사용하여 프로그램을 다운로드하면 시스템에 설치되지 않은 종속성과 실제 프로그램 파일 만 다운로드됩니다. 이로 인해 시스템에 중복 파일과 중복 기능이 오버로드되어 충돌이 발생하지 않습니다.

믿거 나 말거나, Windows 또는 Ubuntu에 프로그램을 설치하는 것의 유일한 차이점은 사용자에게 제공하는 정보의 양입니다. Windows는 사용자가 멍청하다고 생각하며 exe 파일을 실행할 때 무엇을 설치하고 있는지 알고 싶지 않습니다. 리눅스에서는 그 정보를 얻습니다. 일부 사용자에게는 너무 자세한 정보가 있지만 다른 사용자 (대부분)는 그것을 정말로 감사합니다.

이해가 되길 바랍니다.


2
확실히 맞아. 다른 배포판 (우분투만큼 좋지 않은)조차도 .rpms를 사용합니다. .exe, .deb 등에 관한 것은 기본적으로 다른 곳으로 추출되는 큰 .tar입니다! Windows에서는 Program Files로 이동하여 진행률 표시 줄을 표시하지만 Linux에서는 훨씬 더 많이 표시합니다.
WindowsEscapist 2016 년

1
exe 파일이 큰 tar 파일과 같다는 제안은 단순화 방향으로 너무 멀리 가고 있다고 생각합니다. tar 파일은 실행할 수 없습니다. exe 파일은 당연합니다. 즉 (실제로 이는 DEB 파일을,이다 타르 파일)이 패키지 관리자입니다 시스템은 매우 우아 것들의 위에 유지할 수 있도록, 주위에 파일을 이동하는 실제 프로세스 핸들. 설치 프로그램 (예 : Windows)을 사용하면 설치 프로그램 자체가이를 수행합니다. 깔끔하게 유지하기 위해 일부 시스템 구성 요소와 대화 할 수 있지만 느낌이 좋을 때만 가능합니다.
Dylan McCall 2016 년

1
이를 종합하는 가장 좋은 방법은 Windows에 InstallShield 및 NSIS와 같은 설치 프로그램 제조업체가 있다는 것입니다. 리눅스를위한 도구도 있습니다. MojoSetup은 많이 사용됩니다. 여기에서 프로그램을 다운로드하는 경우가 있으며 실행 파일 (보통 .sh 또는 .run로 끝나는 파일)이 있으며 마법사가 약간 있습니다. 이들은 일반적으로 패키지 관리자와 대화하지 않으며 Windows의 설치 프로그램과 매우 유사하게 작동합니다. 그 메모에서, (자신의 .msi 파일 포함) Windows Installer는 자신의 말에 그 혼란을 정리하기위한 시도의 무언가이다)
딜런 맥콜

Linux 방식이 Windows 방식보다 훨씬 낫다고 생각합니다. 그러나 예 Windows 방법은 간단하고 쉬운
안와르

2
해당 Windows 파일 형식 .deb.msi입니다.
Eliah Kagan 2016

3

우분투에서는 대부분의 소프트웨어가 단일 파일로 제공됩니다. *.deb패키지 관리자에서 다운로드하여 압축을 풀고 설치 한 데비안 패키지 파일입니다.

Ubuntu가 대부분의 Windows 소프트웨어와 같이 자동 압축 풀기 실행 파일에서 소프트웨어를 설치하지 않는 이유는 무엇입니까?

자동 압축 풀림 *.exe파일은 매우 위험한 제안입니다.

자동 압축 풀기 실행 파일과 데비안 / 우분투 시스템과 같은 패키징 시스템의 가장 중요한 차이점은 다음과 같습니다.

  • 보안
  • 투명도
  • 보다 세밀한 제어

더 자세하게:

보안

창문 세계에서 당신은 그 단일을 신뢰해야 *.exe 파일 합니다. 어떻게 믿을 수 있는지 어떻게 확신 할 수 있습니까? 그것이 무언가를 설치한다는 것을 어떻게 알 수 있습니까? 등 뒤에서 다른 일을하지 않는 것을 어떻게 확신 할 수 있습니까?

우분투에서 모든 패키지는 디지털 서명되므로 별도의 패키지 파일 (패키지 관리자 (muon, synaptic, aptitude 또는 apt apt))을 사용하여 설치가 완료 되기 전에 패키지를 풀기 전에 내용을 확인할 수 있습니다. 물론 이것은 리포지토리를 신뢰한다고 가정합니다. 차라리 우연히 다운로드 할 수있는 수백 가지의 다른 소스보다 우분투 리포지토리 (단일 권한)를 신뢰하고 싶습니다.

세분화 된 제어

A를 *.exe파일, 당신은 본질적으로 한 가지 작업을 수행 할 수 있습니다를 실행합니다. 우분투에서는 설치 여부를 결정 하기 전에 패키지 관리자의 편리함에서 패키지의 내용, 설명, 구성, 개별 파일, 최신 변경 사항, 버그 수정 등을 검사 할 수 있습니다 .

*.exe파일 에서 설치하는 경우 '제거'후크도 신뢰해야합니다 (모든 *.exe파일에 파일이있는 것은 아닙니다 ). 우분투에서 패키지 관리자가 설치 한 표준 패키지에 속하는 모든 파일은 패키지 자체가 아니라 패키지 관리자의 기능이기 때문에 항상 제거 할 수 있습니다. 패키지 관리자는 별도의 신뢰할 수있는 응용 프로그램으로 설치 관리자와 제거 관리자를 모두 제공하므로 패키지에서 제거 후크를 제거 할 수 없습니다. 물론, 악의적 인 패키지는 설치 후 작업을 통해 내용을 몰래 숨길 수 있지만, 공식 저장소 시스템과이를 관리 할 수있는 직원이 동일한 이유입니다.

투명도

더 나아갑니다. 우분투에서는 소프트웨어를 여러 수준에서 확인할 수 있기 때문에 시스템을 실제로 신뢰할 수 있습니다. 궁극적 인 수준은 소스 코드를 볼 수있는 것입니다. 이진 패키지에는 해당 소스 패키지가 있습니다. 실제로 소스를 볼 수 있습니다 (예 : ' apt-get source bash '는 bash 쉘에 대한 전체 소스를 제공합니다). * .exe 파일의 세계에는 일반적으로 이진 파일 만 있으며 실제로 어떤 작업을 수행하는지 누가 알 수 있습니까?

즉, 규칙에는 항상 예외가 있지만 보안 및 신뢰의 경우 시스템에 구성 요소를 설치하는 표준 방법으로 확인하기 어려운 수백 가지 소스의 바이너리를 실행할 수 없다는 것을 의미합니다.


2

다른 사람들이 말한 것 외에도 모든 기능이 모든 사용자와 관련이있는 것은 아니기 때문에 단일 소프트웨어가 여러 패키지로 분할되는 경우가 있습니다. 예를 들어, 프로그램 문서가 방대한 경우 일반적으로 별도의 패키지로 제공됩니다. 이를 통해 이러한 선택적 기능에 관심이없는 사용자는 디스크 공간과 대역폭 / 시간을 절약 할 수 있습니다.


0

의존성에 대한 나의 이해를 공유해 보자 . 내 친구) .

Windows 소프트웨어는 대부분 단일 파일로 패키지됩니다. 이것이 의존성이 없다는 것을 의미합니까?

아니요, 거의 모든 소프트웨어가 다른 일부 소프트웨어에 종속되어 있습니다. (소프트웨어가 매우 저수준이고 운영 체제 자체와 같은 하드웨어와 직접 통신 할 수있는 경우가 아니라면) . Microsoft의 소프트웨어에는 의존성이 없습니다. 중요한 질문은 어떻게 처리 하는가?

답 : 그들은 이것을 전통적인 방식으로 처리합니다. 대부분의 사용자를 멍청하다고 가정하면 모든 종속성을 단일 파일에두기 만하면 더 큰 크기의 (1 파일) 소프트웨어가 만들어집니다.
예를 들어, Microsoft 용으로 출시 된 게임을 참조하십시오. 거의 모든 게임에는 DirectX 설정이 포함되어 있지만 사용자가 이미 버전을 업데이트했을 수도 있습니다.

DirectX가 모든 게임에 포함되는 이유에 대해 Google에서 찾은 내용은 다음과 같습니다.

최신 버전의 바이너리가 이미 설치되어 있어도 해당 버전을 사용할 수 없으며 DirectX 설치가 최신 버전 인 경우에도 최신 버전의 설치 관리자를 모두 실행하지 않아도되므로 최신 버전 인 경우에도 이전 버전. 더 나쁜 것은 x86 용 버전이 설치된 경우 x64 용으로 동일한 버전이 설치되었다고 보장하지 않으므로 64 비트 및 32 비트 게임은 동일한 정확한 설치 프로그램 버전을 실행해야하지만 실행될 때 다른 플랫폼을 대상으로해야 할 수도 있습니다.

전체 기사를 보려면 여기클릭하십시오 . 그들이 의존성을 다루는 데있어 잘하지 못하는 것은 분명하다.

대부분의 경우 이미 의존성에 관계없이 사용자에게 단순성을 제공합니다 . 또한 .NET 런타임 구성 요소를 포함하는 테마가 몇 개인 지 확인하십시오.
내 경험의 또 다른 예 : 일단 MS 소프트웨어를 다운로드하여 설치했습니다. 프로세스가 만족 스러우면 아이콘을 클릭하여 소프트웨어를 연 다음 "Java를 실행해야합니다"라는 메시지가 표시됩니다. Linux 환경에서는 패키지 관리를 통해 이러한 상황이 발생하지 않습니다. (저장소 사이트에서 .deb 파일을 다운로드하고 MS 방식으로 두 번 클릭하여 설치하지 않는 한) .

리눅스가이 의존성 문제를 어떻게 처리합니까?

Linux 또는 Ubuntu는 소프트웨어를 사용하기 위해 종속성을 설치해야한다는 사실을 숨기지 않습니다 (Microsoft 방식과 달리). 그러나 구성 요소를 설치할 때 동일한 구성 요소에 종속 된 다른 소프트웨어는 이전에 설치 한 설치된 장치를 사용합니다 (모든 것을 포함한 MS 소프트웨어와 달리).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.