>

현재 운영 체제 버전에서 사용할 수있는 것보다 최신 버전의 소프트웨어를 원한다면 어떻게해야합니까?

고려해야 할 사항 :

<올>
  • 추가 패키지의 반 공식/공식 소스가 있습니다 해당 버전의 OS에서 사용할 수 있습니다. 예 : 데비안 용 backports.org 또는 우분투 PPA.
  • 최신 버전의 패키지가 없습니다. OS 버전이 있지만 최신 버전이 있습니다. 최신 버전의 OS. 이것은 표준 사례입니다 백 포트.
  • 최신 버전의 패키지 버전이 없습니다. 유효한 소프트웨어. 사용 가능한 옵션은 최신 패키지를 포장하는 것입니다 버전.
  • <시간>

    정규적인 Q&A 목록을 컴파일하자 다음에 대한 정식 답변. 답변은 아마도 커뮤니티 위키 여야합니다.

    • 답변 # 1

      (이 답변에 대한 질문/의견이있는 경우 의견을 추가하십시오. 또는 충분한 답변이있는 경우 채팅으로 나를 핑할 수 있습니다.)

      새로운 버전의 데비안에서 바이너리 꾸러미를 직접 설치하기 – 답이 아닙니다.

      데비안 기반 배포판의 일부 버전을 실행한다고 가정하십시오. 사용 가능한 것보다 최신 버전의 패키지를 원합니다. 모든 초보자가 먼저 Debian 버전에 바이너리 패키지를 직접 설치하려고 시도합니다. 실행중인 버전 및 패키지의 최신 버전에 따라 작동하지 않을 수 있습니다. 일반적으로이 절차는 제대로 작동하지 않습니다.

      예를 들어, 안정에서 직접 테스트/불안정한 바이너리 패키지를 설치하려는 경우를 고려하십시오. 테스트/불안정이 그 순간 안정에 거의 도달하지 않는 한 이것은 잘 진행되지 않을 것입니다. 그 이유는 데비안과 같은 Linux 기반 바이너리 배포판의 특성과 관련이 있습니다. 이러한 운영 체제는 공유 라이브러리에 크게 의존하며 이러한 종속성은 버전에 따라 매우 밀접한 관계가 있습니다. 종종 필요 이상으로 훨씬 더. 데비안은 현재 버전 의존성을 "긴밀하게"만드는 좋은 방법을 가지고 있지 않다. 즉 버전 의존성이 필요한만큼 정확하게 제한적이라고 말하는 짧은 방법이다.

      이것은 사용자에게 무엇을 의미합니까? 예를 들어 slrn 를 설치하려고한다고 가정하십시오.  데비안 불안정에서 데비안 안정. 이것은 어떻게 생겼습니까?

      # apt-get install slrn/unstable
      Reading package lists... Done
      Building dependency tree       
      Reading state information... Done
      Selected version '1.0.1-10' (Debian:testing [amd64]) for 'slrn'
      Some packages could not be installed. This may mean that you have
      requested an impossible situation or if you are using the unstable
      distribution that some required packages have not yet been created
      or been moved out of Incoming.
      The following information may help to resolve the situation:
      The following packages have unmet dependencies:
       slrn : Depends: libc6 (>= 2.15) but 2.13-38+deb7u1 is to be installed
      E: Unable to correct problems, you have held broken packages.
      
      

      apt 가 생성 한 오류에도 불구하고 깨진 패키지가 없습니다. 그래서 무엇이 잘못 되었습니까? 문제는 libc6 의 버전입니다  불안정한 slrn  에 대해 컴파일 된 것은 데비안 안정에서 사용 가능한 것과 다릅니다 (그리고 더 높은 버전 번호를 가짐). (와이즈 와이즈)  GNU C 라이브러리입니다. C 라이브러리는 모든 유닉스 계열 운영 체제의 중심이며 GNU C 라이브러리는 Linux 기반 운영 체제가 일반적으로 사용하는 버전입니다.)

      따라서 불안정한 libc6  더 높은 번호의 slrn 버전이 필요합니다  안정되어 있습니다. 패키지가 상위 버전의 라이브러리에 대해 컴파일되었으므로 반드시 해당 라이브러리의 상위 버전이 필요하지는 않지만 종종 그런 경우가 있습니다.

      구문

      libc6
      
      

      의미 : 불안정한 apt-get install slrn/unstable 사용  그러나 다른 모든 패키지의 경우 안정 버전 만 사용하십시오. 보다 정확하게는 우선 순위 번호를 사용합니다. slrn 참조  자세한 내용은

      하나도 할 수있다

      man apt_preferences
      
      

      이것은 훨씬 효과가 있지만 일반적으로 원하지 않습니다. 왜?

      즉, 꾸러미가 안정된 상태에서모든꾸러미를 불안정한 상태로 임시 처리합니다. 따라서 이것은 불안정한 apt-get install -t unstable slrn 를 끌어 당길 것입니다 버전 번호가 더 높으면 일반적으로 불안정합니다. 여기에는 일반적으로 이미 설명한 이유로 GNU C 라이브러리가 포함됩니다. 이제, 이러한 접근 방식은 일반적으로 의존성이 정의에 의해 충족 될 것이라는 점에서 "성공"합니다 (불안정한 slrn ).  불안정한 것으로 만족되는 종속성이 있지만) 빌드 된 것과 다른 버전의 라이브러리로 갑자기 실행되는 패키지가 혼합되어 있습니다. 아마 잘 끝나지 않을 것입니다.

      답은 ... 백 포트입니다!

      그러면 올바른 방법은 무엇입니까? 일반적으로 "백 포트"로 알려진 최신 버전의 데비안 소스를 다시 빌드하는 것입니다. 다음과 같은 경우를 고려하십시오.

      와이즈 비즈

      첫 번째로 볼 곳은 데비안 백 포트 공식 사이트 인 데비안 백 포트입니다.

      구체적인 예 :

      릴리스에 적합한 백 포트 라인을 추가하고 새 패키지를 찾은 다음 백 포트에서 무언가를 명시 적으로 설치하십시오 (백 포트가 기본적으로 비활성화되어 있기 때문에).

      slrn
      
      

      이것은 스트레치에 포함 된 안정적인 것보다 유용한 새로운 기능을 가진 최신 안정 버전의 git을 얻을 것입니다 (예를 들어 'include'는 여러 구성 파일을 결합하거나 ~/work/projects/vs ~의 사용자 이름을 변경할 수 있습니다 ~/personal/projects /)

      보아야 할 또 다른 곳은 우분투 관리자의 다양한 PPA입니다. "packagename PPA"를 검색 할 수 있습니다.

      와이즈 비즈

      백 포트는 실행중인 버전에서 이후 버전의 데비안에서 데비안 소스를 다시 빌드한다는 것을 의미합니다. 이 절차는 패키지에 따라 쉽고 복잡 할 수 있습니다. 이를 수행하는 방법에 대한 개요는 다음과 같습니다.

      초보자를위한 간단한 백 포트 자습서

      콘크리트를 위해 현재 데비안 스 태블릿을 실행하고 있다고 가정합니다.

      There are semiofficial/official sources of additional packages available for that version of Debian.

      패키지를 사용하겠습니다  예를 들어.

      먼저 모든 데비안 패키징 파일은 echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/stretch-backports.list sudo apt-get update sudo apt-get install -t stretch-backports git 에 있습니다.  소스 디렉토리의 하위 디렉토리.

      첫 번째 단계는 최신 버전이 있는지 확인하는 것입니다.

      There are no more recent versions of the package available for that version of the OS, but there are more recent versions available for more recent versions/releases of the OS. This is the standard case for backporting.

      를 사용 하여이 작업을 수행 할 수 있습니다 .

      slrn
      
      

      debian/ 를 백 포트하고 싶습니다 .

      1 단계 :

      NB : apt-cache policy 가  다운로드하려는 소스 버전의 줄이 apt-cache policy slrn slrn: Installed: 1.0.0~pre18-1.3 Candidate: 1.0.0~pre18-1.3 Version table: 1.0.1-10 0 50 http://debian.lcs.mit.edu/debian/ testing/main amd64 Packages 50 http://debian.lcs.mit.edu/debian/ unstable/main amd64 Packages *** 1.0.0~pre18-1.3 0 500 http://debian.lcs.mit.edu/debian/ wheezy/main amd64 Packages 100 /var/lib/dpkg/status 1.0.0~pre18-1.1 0 500 http://debian.lcs.mit.edu/debian/ squeeze/main amd64 Packages 에 나타납니다. .예를 들어 불안정한 버전의 1.0.1-10 를 다운로드하려는 경우 , 당신은 deb-src 가 필요합니다  불안정한 줄, 또는 작동하지 않습니다. 해당 /etc/apt/sources.list 가 필요하지 않습니다.   slrn 를 통해 소스를 다운로드하는 라인  해당 정보를 사용하므로 해당 deb-src 가없는 경우  선 다음 deb  관련 버전이 표시되지 않습니다. apt-cache policy 가 있다면  라인, deb 의 항목을 사용하여 최신 버전을 고정하는 것을 잊지 마십시오  또는 유사합니다. apt-cache policy 의 항목  예를 들어, 불안정한 경우와 같이 작동합니다.

      deb
      
      

      /etc/apt/preferences 에 줄을 추가하면 /etc/apt/preferences 를 실행하는 것을 잊지 마십시오  나중에.

      Package: * Pin: release a=unstable Pin-Priority: 50 소스 다운로드. 좋은 곳은 /etc/apt/sources.list 입니다 .

      apt-get update
      
      

      2 단계 :

      백 포트를 업스트림 버전과 구별 할 수 있도록 버전 번호를 약간 변경하십시오. slrn 를 실행 /usr/local/src/slrn 에 항목을 자동으로 추가합니다.  파일. 그런 다음 항목을 다음과 같이 변경하십시오.

      apt-get source slrn=1.0.1-10
      
      

      단계 3 :

      소스를 만들려고했습니다. 빌드에 필요한 패키지를 사용할 수 없으면 시도가 실패합니다. 디렉토리를 소스 디렉토리로 변경하십시오. dch -i 사용   debian/changelog 에서  패키지.

      slrn (1.0.1-10.username) UNRELEASED; urgency=low
        * Backport to wheezy.
       -- User <user@domain>  Sun, 02 Feb 2014 23:54:13 +0530
      
      

      빌드 종속성이 충족되면 소스는 소스 디렉토리 위의 레벨에서 일부 뎁을 빌드하고 생성합니다. 이 경우 debuild .

      단계 4 :

      빌드 종속성이 충족되지 않는다고 가정하십시오. 그런 다음 빌드 종속성을 설치해야합니다. 사용중인 버전에 종속 항목을 사용할 수 없거나 사용 가능한 경우 올바른 버전에서 사용하지 못할 수 있으므로 작동하지 않을 수도 있습니다.

      NB : 불행히도 데비안 패키지가 필요한 것보다 높은 빌드 종속성 버전을 요구하는 것은 드문 일이 아닙니다.데비안에서는이를 확인하는 자동화 된 방법이 없으며, 종종 패키지 관리자는 그렇지 않습니다. 해당 버전/릴리스에서 작동하는 한주의하십시오. 따라서 의존성 버전에 회의적인 태도를 취하고 상식을 사용하십시오. 예를 들어, Python 및 GNU 도구와 같이 널리 사용되는 패키지는 데비안 패키지 프로그램의 목록에 상관없이 특정 버전의 종속성에 의존하지 않습니다.

      어쨌든 설치를 시도 할 수 있습니다

      devtools
      
      

      이 작업이 성공하면 패키지 빌드를 다시 시도하십시오 (STEP 2). 실패하면 추가 작업이 필요합니다. cd slrn-1.0.1/ debuild -uc -us 참고   /usr/local/src/slrn 의 빌드 종속성을 살펴 봅니다.  필요한 경우 파일을 변경할 수 있습니다. 이제 그것에 대해 이야기하겠습니다. slrn에 대한 빌드 종속성은 다음과 같습니다.

      apt-get build-dep slrn=1.0.1-10
      
      

      debuild 사용에 대한 대안  

      를 수행하여 수동으로 설치하는 것입니다.
      debian/control
      
      
      제어 파일에서이 값을 변경하기 시작하면 Build-Depends: debhelper (>=9), libslang2-dev, libuu-dev, exim4 | mail-transport-agent, libgnutls-openssl-dev, po-debconf, autoconf, libcanlock2-dev, autotools-dev, dpkg-dev (>= 1.16.0), chrpath, dh-autoreconf, inn2-inews 와 같이 수동 설치로 전환해야합니다.  더 이상 옳은 일을하지 않을 것입니다.

      와이즈 비즈

      대부분의 경우, 새로운 소스와 함께 이전 버전의 소프트웨어에서 패키징을 재사용 할 수 있습니다. 이 방법은 문제를 일으킬 수 있습니다. 특히 이전 버전의 소프트웨어에 적용된 패치는 여기에 적용되지 않을 수 있으므로 소스와 다시 동기화해야 할 수도 있습니다. 현재 표준이되고있는 3.0 (퀼트) 소스 형식은 퀼트를 사용하며 패치는 apt-get build-dep 에 있습니다.  디렉토리.

      이러한 이슈에 대한 자세한 논의는이 글에서 다루지 않습니다.

    • 답변 # 2

      데비안뿐만 아니라 항상 작동하는 한 가지 방법은 필요한 소프트웨어를 직접 컴파일하는 것입니다. (현재 사용 가능한 최신 버전이 필요했을 때와 소프트웨어가 전혀 제공되지 않았을 때 모두 데비안에서이 작업을 해왔습니다.

      Wyzwyz에 로컬로 컴파일 된 패키지를 저장합니다   apt-get install debhelper libslang2-dev ... 사용 하위 디렉토리 트리에 패키지와 관련된 모든 파일을 저장 한 다음 해당 트리에 심볼릭 링크를 만들 수 있습니다. 이렇게하면 컴파일 된 패키지를 쉽게 관리 할 수 ​​있습니다. 설치된 파일이 데비안 제공 파일과 충돌하지 않으며 하나의 명령으로 패키지를 제거 할 수 있습니다.

      apt-get build-dep 와 같이 패키지를 컴파일하고 설치하는 단계 , 일반적으로 다음과 같은 변형입니다.

      <올>

      There are no packaged versions of more recent versions of the software available. Options available are to package the more recent version.

      다운로드   debian/patches 에 파일 등 .

      파일 /use/local 만들기  소프트웨어의 다운로드 위치, 기능, 버전 및 컴파일을 수행하기 위해 수행해야 할 사항이 포함되어 있습니다 (아래 참조).

      stow 의 포장 풀기   some_software 에 제출 .

      또는 저장소에서 컴파일하는 경우 적절한 하위 디렉토리 (예 : .tar )에서 저장소를 체크 아웃하십시오. )로 컴파일하고

      /usr/local/src/  이 디렉토리에 /usr/local/packages/some_software 를보십시오 .tar  등

      대부분의 경우 /usr/local/tmp/some_software 에 대한 autotools 스크립트가 있습니다  패키지. /usr/local/git/some_software 와 통화  파일은이 서브 디렉토리에 설치됩니다. 그렇지 않으면, cd 를 읽으십시오  설치된 파일의 경로를 설정하는 방법을 알아 봅니다.

      README 와 컴파일 .

      INSTALL 로 설치 .

      configure 그런 다음 ./configure --prefix /usr/local/stow/some_software-version

      작동하는지 테스트하십시오.

      종종 첫 번째 시도에서 컴파일이 작동하지 않는 경우 : 패키지에는 라이브러리 및 해당하는 포함 파일이 필요할 수 있으므로 올바른 Makefile 를 설치해야합니다.  데비안에서 패키지. 또는 make  다른 버전의 make install 에 대해 불평 할 수 있습니다.  사용 된 패키지의 저자는 불평하지 않습니다. 따라서 때때로 코드를 읽고 수정해야하지만 너무 자주 발생하지는 않습니다.

      cd /usr/local/stow

    관련 자료

  • 이전 런타임에 설정 한 Xterm 구성을 어떻게 저장합니까?
  • 다음 LVM 스냅 샷과 파일 시스템