Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

sudo apt-get update so với nâng cấp - Sự khác biệt là gì?

sudo apt-get updatesudo apt-get upgrade là hai lệnh bạn có thể sử dụng để cập nhật tất cả các gói của mình trong Debian hoặc bản phân phối Linux dựa trên Debian.

Đây là các lệnh phổ biến cho quản trị viên Linux và những người làm DevOps, nhưng rất hữu ích để biết ngay cả khi bạn không thường xuyên sử dụng dòng lệnh.

Trong bài viết này, tôi sẽ đi sâu vào chức năng của cả hai lệnh này, cách sử dụng chúng và một số câu hỏi thường gặp.

Sự khác biệt giữa sudo apt-get updatesudo apt-get upgrade ?

Sự khác biệt chính là sudo apt-get update tìm nạp phiên bản mới nhất của danh sách gói từ kho phần mềm của bản phân phối của bạn và bất kỳ kho lưu trữ bên thứ ba nào mà bạn có thể đã định cấu hình. Nói cách khác, nó sẽ tìm ra phiên bản mới nhất của mỗi gói và phần phụ thuộc, nhưng sẽ không thực sự tải xuống hoặc cài đặt bất kỳ bản cập nhật nào trong số đó.

Nâng cấp sudo apt-get upgrade lệnh tải xuống và cài đặt các bản cập nhật cho từng gói lỗi thời và phụ thuộc vào hệ thống của bạn. Nhưng chỉ cần chạy sudo apt-get upgrade sẽ không tự động nâng cấp các gói đã lỗi thời - bạn sẽ vẫn có cơ hội xem xét các thay đổi và xác nhận rằng bạn muốn thực hiện nâng cấp.

Cách sử dụng sudo apt-get update Lệnh

Trong bản phân phối Linux dựa trên Debian của bạn (Debian, Ubuntu, Linux Mint, Kali Linux, Raspberry Pi OS, v.v.), hãy mở một cửa sổ đầu cuối.

Tùy thuộc vào bản phân phối của bạn, thiết bị đầu cuối có thể có các tên khác nhau tùy thuộc vào cách bạn mở nó. Ví dụ:trong Ubuntu và Linux Mint, thiết bị đầu cuối mặc định là Gnome Terminal, nhưng có thể được liệt kê trong Thiết bị đầu cuối trong menu ứng dụng.

Trong terminal, nhập sudo apt-get update trong dòng lệnh, nhập mật khẩu quản trị của bạn và nhấn phím Enter.

Nếu có bản cập nhật, bạn sẽ thấy đầu ra tương tự như sau:

kris@pihole:~ $ sudo apt-get update
Hit:1 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease
Get:2 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye InRelease [23.7 kB]       
Get:4 https://packages.azlux.fr/debian buster InRelease [3,989 B]               
Get:5 https://archive.raspberrypi.org/debian bullseye/main armhf Packages [282 kB]
Get:6 https://packages.azlux.fr/debian buster/main armhf Packages [3,418 B]
Fetched 340 kB in 4s (94.8 kB/s)     
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.

Nếu bạn muốn xem gói nào có thể được nâng cấp, hãy chạy apt list --upgradable :

kris@pihole:~ $ apt list --upgradable
Listing... Done
libcamera0/stable 0~git20220426+18e68a9b-1 armhf [upgradable from: 0~git20220303+e68e0f1e-1]
raspi-config/stable 20220425 all [upgradable from: 20220419]
rpi-eeprom/stable 13.13-1 armhf [upgradable from: 13.12-1]

Nhưng nếu không có phiên bản mới hơn của gói hoặc phần phụ thuộc trong kho phần mềm của bản phân phối của bạn, bạn sẽ thấy kết quả như sau:

kris@pihole:~ $ sudo apt-get update
Get:1 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Hit:2 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease           
Hit:3 https://packages.azlux.fr/debian buster InRelease                         
Hit:4 https://archive.raspberrypi.org/debian bullseye InRelease
Fetched 26.7 kB in 3s (8,789 B/s)
Reading package lists... Done

Lưu ý rằng không có đề cập đến các gói có thể được nâng cấp và không có ghi chú nào về việc chạy apt list --upgradable .

Nhưng điều này không nhất thiết có nghĩa là không có phần mềm lỗi thời trên hệ thống của bạn, chỉ là bạn đã có phiên bản mới nhất của danh sách gói. Bạn có thể đã chạy sudo apt-get update nhiều lần.

Bạn luôn có thể chạy apt list --upgradable một lần nữa để xem có thể nâng cấp được gì không.

Hoặc bạn có thể sử dụng sudo apt update hiện đại hơn lệnh thay thế. Lệnh này sẽ luôn hiển thị cho bạn số lượng gói có thể được nâng cấp hoặc ghi chú cho biết mọi thứ đã được cập nhật.

Để biết thêm thông tin về sự khác biệt giữa aptapt-get , hãy xem phần này bên dưới.

Cách sử dụng sudo apt-get upgrade Lệnh

Sau khi chạy sudo apt-get update , trong cùng một cửa sổ dòng lệnh, nhập sudo apt-get upgrade , nhập mật khẩu của bạn nếu cần và nhấn enter.

Sau đó, bạn sẽ thấy một kết quả tương tự như sau:

kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Ở cuối đầu ra, bạn sẽ thấy các gói sẽ được nâng cấp:

The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Lượng dữ liệu cần được tìm nạp và dung lượng lưu trữ mà các gói nâng cấp sẽ sử dụng sau khi cài đặt:

Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.

Và cuối cùng, bạn sẽ thấy một lời nhắc hỏi bạn có muốn tiếp tục nâng cấp không:

Do you want to continue? [Y/n] 

Bạn có thể nhập y , Y hoặc yes để tiếp tục nâng cấp hoặc n , N hoặc no thoát ra khỏi upgrade lệnh.

Nếu bạn chọn thoát ra, bạn sẽ thấy một đầu ra như thế này:

kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.

Nếu bạn chọn tiếp tục nâng cấp, bạn sẽ thấy một đầu ra dài như thế này:

kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 https://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 https://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
Fetched 2,616 kB in 3s (1,019 kB/s)   
Reading changelogs... Done
(Reading database ... 43496 files and directories currently installed.)
Preparing to unpack .../libcamera0_0~git20220426+18e68a9b-1_armhf.deb ...
Unpacking libcamera0:armhf (0~git20220426+18e68a9b-1) over (0~git20220303+e68e0f1e-1) ...
Preparing to unpack .../raspi-config_20220425_all.deb ...
Unpacking raspi-config (20220425) over (20220419) ...
Preparing to unpack .../rpi-eeprom_13.13-1_armhf.deb ...
Unpacking rpi-eeprom (13.13-1) over (13.12-1) ...
Setting up rpi-eeprom (13.13-1) ...
Setting up libcamera0:armhf (0~git20220426+18e68a9b-1) ...
Setting up raspi-config (20220425) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...

Và sau khi hoàn tất, tất cả các gói và phụ thuộc đã lỗi thời sẽ được cập nhật.

Một điều quan trọng cần nhớ về sudo apt-get upgrade lệnh là nó chỉ nâng cấp những gì nó có thể mà không loại bỏ bất cứ thứ gì.

Ví dụ:nếu nâng cấp yêu cầu phụ thuộc mới, thì upgrade lệnh sẽ tải xuống và cài đặt nó, nhưng nó sẽ không xóa phần phụ thuộc cũ. Việc xóa các phần phụ thuộc cũ yêu cầu một lệnh khác. Bạn sẽ thấy điều này rất nhiều khi nâng cấp lên phiên bản hạt nhân mới.

Nếu bạn thấy một thông báo tương tự như thế này sau khi nâng cấp:

The following packages were automatically installed and are no longer required:
  g++-8 gir1.2-mutter-4 libapache2-mod-php7.2 libcrystalhd3
Use 'sudo apt autoremove' to remove them.

Bạn có thể làm theo gợi ý và sử dụng sudo apt autoremove để loại bỏ những gói không cần thiết đó.

Cách Sử dụng Tùy chọn Đặc biệt Với ​​sudo apt-get upgrade Lệnh

Có một số tùy chọn hoặc thông số đặc biệt mà bạn có thể sử dụng với sudo apt-get upgrade nhưng có hai lệnh nổi bật:--dry-run--yes .

Cách sử dụng --dry-run Tùy chọn:

--dry-run (cách khác, -s hoặc --simulate ) tùy chọn mô phỏng những gì sẽ xảy ra trong quá trình nâng cấp, nhưng không thực sự thay đổi bất kỳ điều gì trên hệ thống của bạn:

kris@pihole:~ $ sudo apt-get upgrade --dry-run
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst libcamera0 [0~git20220303+e68e0f1e-1] (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Inst raspi-config [20220331] (20220425 Raspberry Pi Foundation:stable [all])
Inst rpi-eeprom [13.12-1] (13.13-1 Raspberry Pi Foundation:stable [armhf])
Conf libcamera0 (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Conf raspi-config (20220425 Raspberry Pi Foundation:stable [all])
Conf rpi-eeprom (13.13-1 Raspberry Pi Foundation:stable [armhf])

Mặc dù một lần nữa, mặc dù các bản phân phối dựa trên Debian và Debian rất ổn định, tùy chọn này hữu ích nếu bạn muốn đảm bảo không có xung đột trong quá trình nâng cấp.

Cách sử dụng --yes Tùy chọn:

--yes (cách khác, -y hoặc --assume-yes ) tùy chọn tự động trả lời có cho bất kỳ lời nhắc nào nếu bạn làm như vậy là an toàn:

kris@pihole:~ $ sudo apt-get upgrade --yes
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Get:1 https://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 https://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...

Lưu ý rằng Do you want to continue? [Y/n] được bỏ qua ở trên và tất cả các gói đều được nâng cấp.

Câu hỏi thường gặp

sudo là gì và apt-get ?

Một điều quan trọng cần lưu ý về sudo apt-get updatesudo apt-get upgrade là cả hai lệnh đều được tạo thành từ ba phần:sudo , apt-getupdate hoặc upgrade .

sudo là viết tắt của "superuser do" và cho phép bạn chạy các chương trình có đặc quyền của người chủ hoặc quản trị viên.

Ví dụ:khởi động lại hệ thống yêu cầu đặc quyền cấp siêu người dùng / cấp gốc, vì vậy hãy chạy reboot trong terminal có thể trả về các lỗi tương tự như sau:

Failed to set wall message, ignoring: Interactive authentication required.
Failed to reboot system via logind: Interactive authentication required.
Failed to open initctl fifo: Permission denied
Failed to talk to init daemon.

Nhưng nếu bạn chạy sudo reboot , sau đó nhập mật khẩu quản trị của bạn, bạn sẽ chạy reboot với tư cách là superuser và hệ thống của bạn sẽ khởi động lại ngay lập tức.

apt-get là một công cụ dòng lệnh trong các bản phân phối Linux dựa trên Debian và Debian mà bạn sử dụng để cài đặt và quản lý các gói.

Sự khác biệt giữa apt-getapt ?

apt là một công cụ hiện đại hơn để cài đặt và quản lý các ứng dụng trên Debian và các bản phân phối dựa trên Debian.

Đối với hầu hết các phần, aptapt-get có thể được sử dụng thay thế cho nhau - sudo apt updatesudo apt-get update cả hai đều cập nhật danh sách gói trên hệ thống của bạn.

Sự khác biệt chính mà bạn sẽ nhận thấy là apt dễ nhập hơn, đầu ra của nó nhìn chung hữu ích hơn và nó bao gồm một số tính năng thân thiện với người dùng như thanh tiến trình khi cài đặt các gói.

Mặc dù hầu hết các ví dụ trong bài viết này sử dụng apt-get , Tôi thực sự khuyến khích bạn sử dụng apt thay vào đó.

sudo apt-get updatesudo apt-get upgrade Sử dụng an toàn?

Có, các bản phân phối dựa trên Debian và Debian thường rất ổn định và updateupgrade lệnh an toàn để sử dụng. Điều này là do các bản cập nhật lớn cho các gói / phần phụ thuộc và bản thân các bản phân phối, chỉ được phát hành một hoặc hai lần một năm.

Nhược điểm là, không giống như với các bản phân phối hiện đại như Arch Linux, nếu bạn muốn sử dụng phiên bản mới nhất của một gói, bạn có thể cần phải thực hiện thêm một số công việc. Bạn có thể cần phải định cấu hình kho lưu trữ của bên thứ ba thông qua PPA, sử dụng hệ thống đóng gói thay thế như Snap of Flatpak hoặc tự biên dịch gói.

Nhưng sự ổn định đi kèm với phần mềm cũ hơn một chút là đáng giá, ít nhất là theo ý kiến ​​của tôi.

Bạn có thể xâu chuỗi sudo apt-get update không và sudo apt-get upgrade Lệnh?

Có thể bạn đang nghĩ, chạy sudo apt-get update có tẻ nhạt không , đợi quá trình đó hoàn tất, sau đó chạy sudo apt-get upgrade ?

Trong khi cả sudo apt-get updatesudo apt-get upgrade chạy khá nhanh, đôi khi việc thực thi một chuỗi lệnh dễ dàng hơn và kiểm tra lại chúng sau vài phút.

Với && , bạn có thể xâu chuỗi nhiều lệnh lại với nhau như sau:

sudo apt-get update && sudo apt-get upgrade

Điều quan trọng cần nhớ với && là lệnh sau toán tử chỉ chạy nếu lệnh trước đó thành công.

Sử dụng ví dụ trên, sudo apt-get upgrade chỉ chạy nếu sudo apt-get update thành công. Nếu có một số loại lỗi, chẳng hạn như sự cố mạng khi cập nhật danh sách gói, thì hãy sudo apt-get update bị bỏ qua.

Là gì sudo apt-get dist-upgradesudo apt full-upgrade và Chúng có An toàn để Sử dụng không?

Theo chuỗi Stack Overflow này, các lệnh này thực hiện điều tương tự - chúng nâng cấp các gói lỗi thời và cũng loại bỏ một số gói một cách thông minh bất cứ khi nào cần thiết.

Về cơ bản, chúng giống như sự kết hợp của sudo apt-get upgradesudo apt autoremove lệnh.

Chạy các lệnh này nên an toàn trong hầu hết các trường hợp.

Nhưng rất nhiều người, bao gồm cả tôi, khuyên bạn nên sử dụng sudo apt-get updatesudo apt-get upgrade thay vì. Bạn có nhiều cơ hội hơn để xem lại các thay đổi sắp tới và kể từ khi upgrade không bao giờ loại bỏ các gói, nó ít phá hủy hơn.

./thanks_for_reading.sh

Nếu bạn tìm thấy bảng phân tích này trên sudo apt-get updatesudo apt-get upgrade hữu ích, hãy chia sẻ nó với bạn bè của bạn để nhiều người có thể hưởng lợi từ nó.

Ngoài ra, vui lòng liên hệ trên Twitter và cho tôi biết suy nghĩ của bạn.