apt-get에서 사용할 수 없는 패키지 버전을 설치하는 방법은 무엇입니까?

apt-get에서 사용할 수 없는 패키지 버전을 설치하는 방법은 무엇입니까?

Ubuntu WSL 인스턴스에 libuv를 설치하고 싶고 특히 버전 1.45.0 이상이 필요합니다.

내 이해 (from이 튜토리얼 기사) 설치할 수 있는 패키지 버전을 확인하는 명령은 다음과 같습니다 apt list | grep.

$ apt list | grep libuv

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libuv1-dev/jammy,now 1.43.0-1 amd64 [installed]
libuv1/jammy,now 1.43.0-1 amd64 [installed,automatic]
libuvc-dev/jammy 0.0.6-1.1 amd64
libuvc-doc/jammy 0.0.6-1.1 all
libuvc0/jammy 0.0.6-1.1 amd64

apt-get...1.43.0-1만 설치할 수 있고 이미 설치되어 있다고 생각됩니다 .

하지만libuv GitHub 사이트최신 버전을 사용할 수 있음을 나타냅니다.

Ubuntu 인스턴스에서 libuv v1.45.0(또는 그 이상)을 어떻게 사용합니까 apt-get?

제가 긴급히 필요로 하는 것은 libuv에만 국한된 것이지만 실제로는 Unix/Linux 생태계의 일반적인 측면, 즉 드라이버/패키지/등 간의 관계가 무엇인지 이해하고 싶습니다. 예를 들어 GitHub 페이지에 따라 "게시"된 것으로 보이는 것과 패키지 관리자에게 "사용 가능한" 것으로 보이는 것은 무엇입니까 apt-get? 패키지 관리자가 제공하지 않는 최신 버전의 패키지를 원하는 경우 사용자는 어떻게 해야 합니까? 소스 코드를 다운로드하고 로컬에서 컴파일해야 합니까?


고쳐 쓰다: 1.45.0이 필요한 이유는 무엇입니까? 즉, 패키지 관리자가 제공하는 것보다 더 고급 버전이 필요한 이유는 무엇입니까?

내 Linux 상자는 호스트 컴퓨터로 컴파일해야 하는 개발 환경입니다(즉, 이 질문의 맥락에서 크로스 컴파일은 무시할 수 있습니다). 내가 작성한 것이 아닌 컴파일해야 하는 애플리케이션은 uv_timespec64_tlibuv v1.45.0에 소개된 것으로 보이는 this 에 따라 달라집니다.이 자식 병합/차이점).

따라서 이것이 이 질문의 전제입니다. Linux 배포판의 패키지 관리자가 제공하는 것보다 최신 버전의 libuv 기능에 의존하는 애플리케이션을 (호스트 시스템에) 컴파일해야 합니다.


업데이트: 이 질문에는 관련 후속 질문이 있습니다.Linux 배포판마다 패키지 형식(및 패키지 관리자)이 다른 이유는 무엇입니까?

답변1

줄기와 나무

@TechLoom이 이에 대한 귀하의 질문에 답변하는 동안 libuvLinux 생태계에 대한 귀하의 질문에 답변해 드리겠습니다. 우리부터 시작하자이 사진의 타임라인

새 브라우저 탭에서 열고 5개의 기본 트렁크가 있는지 확인하세요.

  1. 여유 소프트웨어
  2. 더반
  3. Red Hat은 엔터프라이즈 지향적이며 무료 버전은 Fedora라고 합니다.
  4. 에녹은 짧은 생애를 살았고 나중에 젠투가 되었습니다.
  5. 아치

각 분기와 모든 하위 분기는 기본적으로 사용 중인 패키지 관리 시스템에 의해 정의됩니다.

  • 기본 Slackware는 zip/unzip/tar를 사용합니다. 패키지의 압축을 풀고 수동으로 컴파일
  • Debian(Ubuntu가 하위 브랜드임)은 APT(제 기억이 맞다면 Advanced Packaging Tool)를 사용합니다.
  • Red Hat/Fedora는 RPM - RPM 패키지 관리자를 사용합니다.
  • Enoch와 그 아이들은 스크립트를 사용하여 모든 것을 처음부터 컴파일합니다. Slackware를 상상해 보세요. 하지만 자동화되고 구성 가능합니다.
  • 아치는 수년에 걸쳐 좋은 성능을 발휘한 하이브리드입니다. 사용자는 완전히 바이너리 패키지 시스템, 즉 Debian과 같은 패키지, Enoch와 같은 완전히 컴파일된 시스템, 또는 이 둘의 혼합을 가질 수 있습니다.

이제 생태계가 어떻게 연결되는지 알아보겠습니다. 각 패키지 관리자는 지정된 패키지 트리(저장소라고도 함)에만 연결하도록 구성됩니다. Debian 기반 시스템은 파일을 다운로드하고 설치할 수 있는 APT 기반 트리에 연결됩니다 .deb. 이러한 각 패키지 관리자를 통해 사용자는 사용자 정의 트리를 설치할 수 있습니다. Ubuntu 기반 시스템은 이를 PPA(Personal Package Archive)라고 부릅니다.

출시 주기

패키지 관리자에 관계없이 모든 배포판에는 릴리스 주기가 있습니다. 릴리스 주기는 "잠긴 저장소"로 생각하거나 트리 비유를 사용하여 "더 이상 자라지 않는 건강한 트리"로 생각할 수 있습니다. 저장소에는 해당 특정 버전에 속하는 패키지만 포함됩니다. 일반적으로 이 버전으로 설치된 패키지는 변경되지 않으며 드문 경우에만 업데이트됩니다. 즉, 중요한 버그 수정이 릴리스되는 경우(그래서 이 버전에서 libuv-1.45를 찾을 수 없습니다 ), 및 jammy을 보면 몇 가지가 있습니다. 다음 버전의 코드명은 다음과 같습니다.manticnoble패키지가 부딪힌 것을 보았습니다.(바라보다새 버전 업데이트다음과 같은). 브라우저 및 메일 클라이언트와 같은 소프트웨어는 일반적으로 저장소를 contrib방해하지 않는 (기여된) 저장소에 게시됩니다 main. 데비안 용어로는 기여 저장소라고 부르는 것 같은데, universe꽤 적절한 표현입니다(하늘 아래 있는 모든 사용자 소프트웨어를 거기에 넣을 수 있습니다). 추가된 각 패키지는 저장소의 라이브러리 및 도구를 기반으로 컴파일 main, 패키지화 및 업로드 됩니다. universe이는 사용자나 회사가 추가한 소프트웨어의 "잠긴 저장소" 개념을 모방합니다.

Ubuntu의 경우 릴리스 주기는 일반적으로 1년에 두 번(마이너 버전 업데이트[세 번째 버전 번호]가 없는 한 4월에 한 번, 10월에 한 번) 발생합니다. 당신은 볼 수 있습니다우분투 배포 목록. 허용되는 관행은 관리자가 업데이트할 때까지 해당 버전에서 사용 가능한 패키지만 사용하는 것입니다.

일부 배포판은 롤링 릴리스 모델, 특히 소스 코드 기반 배포판을 사용합니다.. 소스 컴파일된 젠투 상자에 업데이트 명령을 실행하고, 패키지를 다시 빌드하고, 한 시간 후에 동일한 업데이트를 수행하고, 동일한 패키지를 다시 업데이트할 수도 있습니다.

우리의 친구 또는 적(선호도에 따라)도 Microsoft는 Windows 10부터 릴리스 모델을 채택했습니다. 현재 윈도우 11 버전은 23H2 버전으로 2023년 하반기 출시 예정이다. Windows 10의 첫 번째 주요 버전은 1903으로, 이는 2019년 3월을 의미합니다. Microsoft의 "트리"는 공개적으로 공개되지는 않지만 버그 수정 및 사용자 요청을 기반으로 한 업데이트를 향후 Windows 버전에 통합하는 데 사용됩니다.

버전 잠금이 중요한 이유

잠금 개념이 왜 그렇게 중요한지 이해하려면, 당신이 BMW 자동차를 소유하고 있다고 상상해 보십시오. BMW는 대부분 수작업으로 제작되고 튜닝됩니다. BMW와 먼저 소통하지 않고 2023년에 구매하는 모델에 2025년형 모델의 기능 X를 추가하기로 결정했다고 가정해 보겠습니다.

  • 기능 X를 활성화하는 데 필요한 부품을 웹에서 구매합니다.
  • 우리는 부품을 대시보드에 설치하고 전기 시스템에 연결했는데, 기능 X가 있는 부품에는 특수 커넥터가 필요하다는 것을 깨달았습니다.
  • 커넥터 없이 Function X가 있는 부품을 연결하려고 했으나 결국 6자형 자동차가 손상되었습니다.
  • 우리는 BMW에 연락하여 기능 X 연결을 시도했지만 업그레이드보다 더 많은 피해를 입혔다고 말했습니다. BMW는 우리에게 커넥터를 보냈고 공인 정비사에게 모든 것을 조립하라고 말했습니다.

나는 그것을 모두 하나로 묶기 위해 마지막 총알을 굵게 표시했습니다. 위의 "업그레이드"에서 BMW는 "잠긴 저장소"의 관리자입니다. BMW는 문의 시 대부분의 자동차에 대한 모든 부품을 보유하고 있거나 얻을 수 있습니다. 트리 외부에는 특수 커넥터가 존재하지 않습니다. 마찬가지로 소프트웨어가 저장소에 있는 경우에만 Ubuntu 버전(이 이야기의 자동차)에 소프트웨어를 추가하거나 업그레이드할 수 있습니다. 서로 다른 버전의 저장소를 혼합하면 완전한 손상이 발생할 수 있습니다. Feature X를 추가하거나 이전 버전에서 업그레이드해야 하는 경우 소프트웨어는백포트main, 해당 특정 버전(기계 장치)의 저장소 에 get이 추가되었으며 해당 버전은 예상대로 계속 실행되었습니다(자동차가 수정되었습니다).

새 버전 업데이트

버전 업그레이드(예: 1.43에서 1.45로)는 일반적으로 다음과 같이 수행됩니다.

  1. 관리자가 새 버전을 확인하거나 사용자가 관리자에게 버전 업데이트 요청을 제출합니다.
  2. 요청된 빌드는 안정성 테스트를 위해 베타 빌드로 전송됩니다. 우분투에서는 이것을 향후 릴리스라고 합니다.
  3. 패키지는 테스트를 거쳐 철회되거나 승인되어 향후 버전이 최신 버전이 되면 출시됩니다.

LTS 버전

안정성이 필요한 사용자를 위해 일부 배포판에서는 장기 서비스 릴리스 개념을 사용합니다. 이는 일반적으로 웹 서버, 방화벽 또는 도메인 컨트롤러와 같은 업무상 중요한 응용 프로그램이 있는 영역에 선호됩니다.

답변2

github 페이지에서 소스코드를 다운로드 받으실 수 있습니다.

https://github.com/libuv/libuv/releases

그런 다음 소스 파일을 추출하고 프로그램을 컴파일한 다음 설치하십시오. 모든 단계는 github 페이지에 있습니다.

https://github.com/libuv/libuv#build-instructions

$ sh autogen.sh
$ ./configure
$ make
$ make check
$ make install

또 다른 옵션은 프로젝트에 대한 저장소가 있는 사람이 있는지 확인하는 것입니다. 그런 다음 "add-apt-repository"를 사용하고 원하는 대로 apt를 사용할 수 있습니다.

관련 정보