스냅 패키지는 공유 종속성을 어떻게 처리합니까?


30

스냅 패키징 형식은 마지막으로 각 패키지에 고유 한 종속성 복사본을 허용함으로써 종속성 문제를 해결합니다. 이 작업을 수행하는 방법에 대한 기술적 세부 사항에 관심이 있습니다. 어떻게 처리합니까?

  • 현재 릴리스의 deb 패키지를 통해 이미 설치된 라이브러리 버전에 따라 스냅됩니까? 설치된 라이브러리를 무시합니까?
  • 동일한 라이브러리의 동일한 버전을 지정하는 다른 스냅? 어떻게 든 중복 제거를 수행합니까?
  • 많은 스냅에서 사용될 수있는 핵심 라이브러리에 대한 업데이트? OpenSSL은 큰 어려움으로 떠 오릅니다.

xdg-app에는 "런타임" 이라는 것이 있습니다 .

xdg-app의 기본 개념은 런타임 / 애플리케이션 분할입니다. 모든 앱은 앱이 의존하는 핵심 라이브러리를 제공하는 런타임에 의존합니다. 런타임은 일반적으로 많은 응용 프로그램에서 공유되지만 사용자는 동시에 여러 개의 런타임을 설치할 수 있습니다.

OpenSSL의 경우 xdg-apps에서 런타임의 일부이므로 OpenSSL 업데이트는 동일한 런타임을 사용하는 모든 xdg-app에 투명하게 영향을 미칩니다.

답변:


9

처음 두 가지 상황은 영리하게 처리됩니다.

흥미로운 기능 중 하나는 Snap 패키지 내의 컨텐츠에 대한 중복 제거 지원입니다. 스냅은 파일 해시를 기반으로 스냅간에 공유되는 공통 파일과 자동으로 중복 제거됩니다. 파일 시스템 계층에 중복 제거, 스냅 다운로드에 대한 중복 제거 (서버 지원 포함) 및 링커에서 매핑 된 라이브러리의 중복 제거가있을 수 있습니다. 중복 제거는 큰 작업 항목이므로 완전히 구현하는 데 시간이 걸릴 수 있지만 그럼에도 불구하고 흥미로운 목표입니다.

출처 : http://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-Snappy-Deduplication

세 번째 상황은 언급 한 런타임과 비슷한 것이 있습니다.

Snapy Machine을 구성하는 3 가지 계층이 있습니다. Canonical에서 제공하는 시스템 계층, Canonical과 협력하여 공급 업체에서 생성 한 기본 시스템을 확장하는 프레임 워크 계층 및 공급 업체에서 직접 제공하는 Snappy 애플리케이션 세트입니다. 조각을 업데이트한다는 것은 새로운 버전의 읽기 전용 이미지를 사용한다는 의미입니다. 이전 버전으로 되 돌리는 것도 쉽습니다.

출처 : http://www.ubuntu.com/cloud/snappy

프레임 워크를 설명하는 좋은 문서는 아직 없습니다. 주로 프레임 워크의 경계를 해결하고있는 것 같습니다. 다음은 메일 링리스트에서 발췌하여 내용을 명확하게하는 데 도움이 될 수 있습니다.

나는 많은 스냅이 필요하지만 업데이트 문제 및 크기로 인해 각 스냅에 포함되어서는 안되는 소프트웨어 및 서비스로 Snappy 기본 시스템을 본질적으로 확장하기 위해 프레임 워크를 실험하고 있습니다. 내가 가지고있는 가장 좋은 예는 openssl 바이너리입니다. 많은 스냅은 키와 인증서를 생성하고 검증하기 위해 이것이 필요합니다.

프레임 워크로 해결하기 위해 묶은 다른 문제는 시스템 전체 리소스, 특히 포트에 대한 액세스입니다. 예를 들어, 웹 서버 프레임 워크는 다른 스냅인이 리버스 프록시를 통해 웹 서버를 실행하는 프레임 워크에 웹 서비스 API 및 엔드 포인트를 주입 할 수있는 방법을 제공합니다.

나는 IRC에 프레임 워크 개념을 악용하고 있다고 들었지만 여전히이 두 가지 문제가 내 책상에 나타납니다.

출처 : https://lists.ubuntu.com/archives/snappy-app-devel/2015-November/000442.html


1
명확히하기 위해, 현재 실제로 존재하는 것은 없습니다. 이것은 계획이며 아마도 첫 번째 줄에서 "처리 된"대신 "처리 될 것"이라고 말해야합니까?
muru

기술적으로는 둘 다 존재합니다. 적어도 도커 프레임 워크가 이미 있으며 설치된 앱이 활용하는 우분투 코어에 포함 된 일부 라이브러리에 대한 링크가 이미 있다는 것을 알고 있습니다. 나는 어느 쪽이 얼마나 멀리 떨어져 있는지 전혀 모른다. 솔루션의 기술적 세부 사항을 간단히 설명하고 있습니다.
cynicist

1
이것들은 영리하게 처리 된 방식이 아니라 영리한 아이디어 일뿐입니다. 예를 들어, 첫 번째 문서가 실제로 어떻게 구현되는지에 대한 공식적인 문서는 없으며, 대화를 가리키는 포로 닉스 기사, 즉 죽은 링크 btw입니다.
bviktor

3

스냅이 이미 설치된 종속성을 확인한다고 생각하지 않습니다. 여기에는 모든 종속성과 런타임 만 포함됩니다 (일부 LibreOffice 스냅은 287MB이고 flatpak은 약 200MB입니다).

스냅에는 소프트웨어를 실행하는 데 필요한 모든 것이 포함됩니다. 나는 스냅간에 아무것도 공유되지 않는다고 생각합니다.

그러나 스냅이 업데이트되면 전체 스냅이 아닌 새로운 종속성 만 다운로드됩니다.


2

스냅 패키징이 공유 종속성을 처리하는 방법에 대한 추가 설명이 필요합니다.

스냅에는 소프트웨어를 실행하는 데 필요한 모든 것이 포함됩니다. 나는 스냅간에 아무것도 공유되지 않는다고 생각합니다.

답변 중 하나에있는이 설명은 부분적으로 사실이지만 코어 스냅을 제외하고 설치된 모든 스냅 패키지는 두 패키지에 의존하며 그 중 하나는 코어 스냅입니다.

  1. snapd- 기본적으로 16.04 이상에 설치되며 14.04에 설치 될 수도 있습니다.

  2. core-    첫 번째로 설치된 스냅 패키지가 설치 될 때 자동으로 다운로드되어 설치되는 (코어 스냅)

코어 자체를 제외한 모든 스냅 패키지는 코어 스냅에 따라 다릅니다. 코어 스냅에 문제가 있으면 다른 스냅의 일부 또는 전부가 작동하지 않습니다. 코어 스냅의 문제는 다음 두 가지 방법으로 해결할 수 있습니다.

  1. 코어 스냅을 업데이트하십시오. 그래도 작동하지 않더라도 다음 명령을 실행하면 문제를 해결하는 데 도움이되는 추가 정보가 제공됩니다.

    sudo snap refresh core  
    
  2. 코어 스냅 및 모든 스냅 패키지를 제거한 후 다시 설치하십시오.

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