apt-get을 사용하여 단일 패키지를 업그레이드하는 방법은 무엇입니까?


827

단일 패키지를 어떻게 업데이트합니까? 지금까지로는 man apt-get말한다 apt-get upgrade매개 변수로 패키지의 패키지 / 목록을지지 않습니다 :

업그레이드

upgrade는에 나열된 소스에서 시스템에 현재 설치된 모든 패키지의 최신 버전을 설치하는 데 사용됩니다 /etc/apt/sources.list. 사용 가능한 새 버전으로 현재 설치된 패키지를 검색하고 업그레이드합니다. 어떠한 경우에도 현재 설치된 패키지가 제거되지 않았거나 이미 설치되지 않은 패키지가 검색 및 설치되지 않았습니다. 다른 패키지의 설치 상태를 변경하지 않고 업그레이드 할 수없는 현재 설치된 패키지의 새 버전은 현재 버전으로 유지됩니다. apt-get이 새로운 버전의 패키지를 사용할 수 있도록 업데이트를 먼저 수행해야합니다.

답변:


1027

당신은 할 필요가 있습니다 apt-get install --only-upgrade <packagename>. 단일 패키지 만 설치되며 패키지가 설치된 경우에만 업그레이드됩니다.

패키지가 존재하지 않는 경우 설치하거나 존재하는 경우 업그레이드하려면 생략 할 수 있습니다 --only-upgrade.


88
apt-get install --only-upgrade <packagename>새로운 패키지를 설치하지 않습니다
taneli

9
install필요한 경우 명령은 또한 단일 패키지의 종속성을 업그레이드?
피노

7
@Pino 그렇게하는 것이 합리적입니다. 업그레이드하려는 버전이 최신 버전의 다른 패키지에 의존하는 경우 어떻게합니까? 둘 다 업그레이드하지 않으면 문제가 발생합니다. 이것이 install직관적이지 않은 것처럼 보이더라도 이것이 올바른 명령 인 이유 입니다.
매트 닷지

6
"자동"마크가 제거됩니까? 라이브러리를 특별히 설치할 때 패키지가 수동으로 설치된 것으로 표시되는 경우가 있습니다. 이런 이유로 라이브러리에서 'install'을 실행하는 것을 좋아하지 않습니다.
isaaclw

3
모든 정보가 매우 모호하기 때문에 방금 테스트했습니다. Ubuntu 16.04 ( apt 1.0.1)에서 패키지를 사용하여 업그레이드 apt install해도 공급 auto여부에 관계없이 마크에 영향을 미치지 --only-upgrade않습니다. 물론 --only-upgrade새로운 것을 설치하고 싶지 않다면 사용하는 것이 합리적입니다. 또한 필요한 종속성을 업그레이드합니다 .
13:01에 듀얼

129

CLI를 사용하여 단일 패키지를 업데이트하려면 다음을 수행하십시오.

sudo apt-get install --only-upgrade <packagename>

예를 들어 sudo apt-get install --only-upgrade ack

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Skipping **ack**, it is not installed and only upgrades are requested.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

11
이 명령에 오류가 있습니다.E: Sense only is not understood, try true or false.
Michael

1
이전 주석가의 오류가 발생한 사람들은 아래의 답변을 참조하십시오 .
golem

3
이전 답변에서 새로운 정보를 추가하지 않았
으므로 하향 투표 됨

1
당신은 통과해야 --only-upgrade하는 install직접적으로, 부속 명령 apt-get다음 추가 할 필요가 없습니다 것입니다, true.
Ruslan

55

내가 생각할 수있는 두 가지 방법이 있습니다.

  1. sudo apt-get install nameofpackage

    패키지가 이미 설치되어 있어도 패키지를 업그레이드합니다.

    ~$ sudo apt-get install emesene
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following packages will be upgraded:
      emesene
    1 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.
    Need to get 1,486 kB of archives.
    After this operation, 696 kB disk space will be freed.
    Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
    
  2. 사용 Synaptic Package Manager: 마우스 오른쪽 버튼을 클릭 → 업그레이드 표시 :

    여기에 이미지 설명을 입력하십시오

    참고 : 때로는 추가 패키지 또는 종속성이 필요할 수 있습니다. 이는 정상입니다.


1
그래, sudo apt-get install whatever그 자체로 업그레이드해야한다.
Binarylife

4
upgrade패키지 인수를 사용하지 않습니다.
ℝaphink

25

Ubuntu 12.04 LTS에 대한 경험에서 별도의 PPA를 사용하는 경우 아래 명령을 사용해도 패키지가 업그레이드되지 않습니다.

sudo apt-get --only-upgrade install <packagename>

마찬가지로 업그레이드 명령을 실행하고 싶지 않아 서버의 모든 패키지를 업그레이드합니다.

sudo apt-get dist-upgrade

예를 들어, PHP 5.3이 설치되어 있고 -drej를 사용하여 ondrej PPA를 apt.sources에 추가했습니다.

sudo add-apt-repository ppa:ondrej/php5

내가 달리면

sudo apt-get install php5

PHP 5.3을 다시 설치합니다.

먼저 업그레이드 할 버전 번호를 결정해야합니다.

sudo apt-cache policy php5

사용 가능한 모든 버전 번호가 나열됩니다. 업그레이드하려는 버전 번호를 찾은 다음이를 참조하는 전체 문자열을 복사하십시오. 예를 들어, 우분투에서 PHP 5.5의 문자열은 "5.5.16 + dfsg-1 + deb.sury.org ~ precise + 2"입니다.

이제 특정 버전 번호와 함께 apt-get install 명령과 voila를 실행할 수 있습니다!

sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2

다른 곳에서는이 정보를 찾을 수 없었기 때문에 이것을 추가했습니다!


16

우분투 9.04 Jaunty에서

apt-get --only-upgrade install <package>

수율 :

E: Sense only is not understood, try true or false.

명령

apt-get --only-upgrade true install <package>

내 경우에는 일했다.


4
당신은 통과해야 --only-upgrade하는 install직접적으로, 부속 명령 apt-get다음 추가 할 필요가 없습니다 것입니다, true.
Ruslan

10

패키지가 아직 설치되지 않은 경우 패키지를 설치하지 않는 명령 줄 솔루션의 경우 :

dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>

다음과 같은 스크립트로 쉽게 만들 수 있습니다.

upgrade-package.sh :

#!/bin/bash

[[ -z $1 ]] && { echo "Usage: $(basename $0) package"; exit 1; }

if dpkg -s "$1" 2>/dev/null | grep -q Status.*installed; then
    echo "Attempting to upgrade $1"
    sudo apt-get install "$1"
else
    echo "Package $1 is not installed"
fi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.