danh sách cập nhật / nâng cấp apt-get mà không thay đổi bất cứ điều gì


21

Tôi muốn xem những gói nào có sẵn để cập nhật / nâng cấp mà không thực sự thay đổi bất kỳ tập tin nào vì có một số gói tôi không muốn cập nhật. Sau đó có thể cập nhật apt-get với các ngoại lệ.


apt cần biết về các bản cập nhật có sẵn thông qua apt-get update, và điều đó sẽ thay đổi một vài điều. Câu hỏi tuyệt vời mặc dù ... tìm thấy thông tin liên quan ở đây
bvj

Câu trả lời:


9

Tôi sử dụng apt list --upgradable.
Thay thế tiếp theo là apt-get --simulate upgrade. (dựa trên @EightBitTony)
Đây là kết quả đầu ra từ các tùy chọn khác nhau (hy vọng nó sẽ giúp được ai đó):

me@machine:~$ apt list --upgradable
    Listing... Done
    kubernetes-cni/kubernetes-xenial 0.7.5-00 amd64 [upgradable from: 0.6.0-00]
    N: There are 3 additional versions. Please use the '-a' switch to see them.
me@machine:~$ apt-get --simulate upgrade
    NOTE: This is only a simulation!
          apt-get needs root privileges for real execution.
          Keep also in mind that locking is deactivated,
          so don't depend on the relevance to the real current situation!
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Calculating upgrade... Done
    The following packages will be upgraded:
      kubernetes-cni
    1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Inst kubernetes-cni [0.6.0-00] (0.7.5-00 kubernetes-xenial:kubernetes-xenial [amd64])
    Conf kubernetes-cni (0.7.5-00 kubernetes-xenial:kubernetes-xenial [amd64])
me@machine:~$ apt-get -u upgrade --assume-no
    E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
    E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
me@machine:~$ sudo apt-get -u upgrade --assume-no
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Calculating upgrade... Done
    The following packages will be upgraded:
      kubernetes-cni
    1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Need to get 6,473 kB of archives.
    After this operation, 4,278 kB of additional disk space will be used.
    Do you want to continue? [Y/n] N
    Abort.
me@machine:~$ sudo apt-get -u -V upgrade
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Calculating upgrade... Done
    The following packages will be upgraded:
       kubernetes-cni (0.6.0-00 => 0.7.5-00)
    1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Need to get 6,473 kB of archives.
    After this operation, 4,278 kB of additional disk space will be used.
    Do you want to continue? [Y/n] n
    Abort.

Chào mừng bạn.
bvj

32

Từ trang apt-get man,

   -s, --simulate, --just-print, --dry-run, --recon, --no-act
       No action; perform a simulation of events that would occur
       but do not actually change the system. Configuration Item:
       APT::Get::Simulate.

       Simulation run as user will deactivate locking (Debug::NoLocking)
       automatic. Also a notice will be displayed indicating that this
       is only a simulation, if the option APT::Get::Show-User-Simulation-Note
       is set (Default: true). Neither NoLocking nor the notice will be
       triggered if run as root (root should know what he is doing without
       further warnings by apt-get).

       Simulate prints out a series of lines each one representing a
       dpkg operation, Configure (Conf), Remove (Remv), Unpack (Inst).
       Square brackets indicate broken packages and empty set of square
       brackets meaning breaks that are of no consequence (rare).

Vì vậy, chỉ cần chắc chắn rằng bạn apt-get -s upgrade.

Nếu bạn muốn nâng cấp các gói nhất định, chỉ apt-get install <package name>và nó sẽ cập nhật nếu gói đã được cài đặt. Tuy nhiên, nó cũng sẽ phải cập nhật tất cả các phụ thuộc, và tùy thuộc vào chúng là gì, có thể xếp thành nhiều bản cập nhật.

Nếu tôi chậm trễ trong các bản cập nhật gói, tôi sẽ thực hiện một apt-get installsố trong những bản lớn (có thể là php, apache2, v.v.) để tôi có thể giữ chúng và kiểm tra mọi vấn đề, sau đó apt-get upgradetôi đã hoàn thành.


8

Để liệt kê các gói được nâng cấp với các phiên bản của chúng:

$ sudo apt-get -u -V upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have been kept back:
   mysql-client-5.5 (5.5.29-0ubuntu0.12.04.2 => 5.5.32-0ubuntu0.12.04.1)
   mysql-server-5.5 (5.5.29-0ubuntu0.12.04.2 => 5.5.32-0ubuntu0.12.04.1)
   mysql-server-core-5.5 (5.5.29-0ubuntu0.12.04.2 => 5.5.32-0ubuntu0.12.04.1)
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

Sau đó, bạn có thể chọn những gì để nâng cấp:

$ sudo apt-get --only-upgrade install mysql-client-5.5
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
firefox-globalmenu
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
libterm-readkey-perl
The following NEW packages will be installed:
libterm-readkey-perl
The following packages will be upgraded:
mysql-client-5.5
1 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 8,123 kB of archives.
After this operation, 139 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/main libterm-readkey-perl i386 2.30-4build3 [28.4 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main mysql-client-5.5 i386 5.5.32-0ubuntu0.12.04.1 [8,094 kB]
...

Nếu có bất kỳ phụ thuộc cũ nào bị xóa, thì bạn có thể chạy apt-get autoremovevà như bạn thấy, mọi phụ thuộc mới sẽ được nhắc cài đặt. Các --only-upgradelá cờ là không cần thiết, nhưng tốt đẹp nếu bạn muốn đảm bảo rằng bạn không vô tình cài đặt một gói phần mềm mới thay vì nâng cấp là một hiện có, tức là bạn có một trong những khoảnh khắc và vô tình gõ gói sai:

$ sudo apt-get --only-upgrade install mysql-proxy
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Skipping mysql-proxy, it is not installed and only upgrades are requested.
The following package was automatically installed and is no longer required:
firefox-globalmenu
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

1

Nó có giúp bạn phát hành apt-get -s upgrademà chỉ mô phỏng không? Và sau đó bạn có thể cập nhật từng gói mong muốn với apt-get install <thepackage>.

Nếu bạn muốn tương tác với GUI CLI đẹp thì hãy sử dụng aptitude. Nếu nó chưa được cài đặt thì hãy cài đặt nó apt-get install aptitude.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.