Làm thế nào để cài đặt bản cập nhật thông qua dòng lệnh?


692

Khi tôi đăng nhập vào máy chủ web của mình thông qua SSH, tôi thấy thông tin:

88 packages can be updated.
80 updates are security updates

Tôi đã thử apt-get updatesau đó apt-get upgradenhưng mỗi lần đăng nhập tôi vẫn thấy thông báo về các bản cập nhật. Làm thế nào để tôi cài đặt chúng?


1
Bạn đã thử điều này trước chưa: sudo apt-get clean cái này sẽ dọn sạch bộ đệm.
dùng2635584

Câu trả lời:


868

Dùng cái này:

sudo apt update        # Fetches the list of available updates
sudo apt upgrade       # Installs some updates; does not remove packages
sudo apt full-upgrade  # Installs updates; may also remove some packages, if needed
sudo apt autoremove    # Removes any old packages that are no longer needed

Tài liệu về mỗi apttùy chọn có thể được tìm thấy trong các trang dành cho apt . Đây cũng có sẵn bằng cách chạy man apttrong thiết bị đầu cuối của bạn.

Việc sử dụng cả hai upgradefull-upgradecùng nhau thường không cần thiết, nhưng nó có thể giúp ích trong một số trường hợp: xem tài liệu Debian về Nâng cấp từ Debian 9 .


29
Tôi có nên luôn luôn khởi động lại sudo rebootsau nó không?
hellboy

1
Tôi cần thêm -y cho nó hoạt động. Ubuntu 17.10
T04435

124

Thực hiện tất cả các lệnh bằng cách gõ sudomột lần:

sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'

hoặc là

sudo -s -- <<EOF
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -y
EOF

hoặc thậm chí ngắn hơn trong một vòng lặp for (Cảm ơn @dPlay)

sudo bash -c 'for i in update {,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'

3
Bạn có thể kết hợp dist-upgradeautoremovebởi apt-get dist-upgrade --auto-remove.
jarno

3
Không cần phải chạy cả upgradedist-upgrade.
jarno

3
@jarno dist-upgradecó thể loại bỏ các gói. Sử dụng upgradeđầu tiên có thể tránh điều này, chẳng hạn như khi các phiên bản gói mới đáp ứng phụ thuộc dễ dàng hơn so với phiên bản cũ. Tôi không biết mức độ thường xuyên của việc này khi nâng cấp các gói trong bản phát hành ổn định của Ubuntu, nhưng nó được khuyến nghị trong một số bối cảnh khác . Cá nhân, tôi hiếm khi sử dụng dist-upgradetrong Ubuntu và khi tôi làm, tôi không bao giờ vượt qua -y. Nhưng nếu ai đó chạy dist-upgradevà vượt qua -y, tôi nghĩ sẽ hợp lý khi thực hiện upgradehành động trước.
Eliah Kagan

1
@jarno trong khi bạn có thể xâu chuỗi --autoremovecùng với lệnh nâng cấp mà bạn chọn, điều đó không được khuyến khích vì nó có thể kết thúc bạn với trạng thái ô uế khi một trong các gói bị lỗi. Tốt hơn là sử dụng autoremovemột mình trên một dòng riêng biệt sau khi quá trình cập nhật được thực hiện, nếu bạn muốn xóa các tệp cấu hình cũ, bạn có thể xâu chuỗi này với --purge.
Videonauth

@Videonauth oh, nó phụ thuộc vào cách aptthực hiện. Tôi nghĩ rằng nó nên được thực hiện để nó không rời khỏi hệ thống ở trạng thái ô uế.
jarno

91

Đây là hành vi bình thường.

Thông báo bạn thấy khi đăng nhập đã được thêm vào trạng thái máy chủ 'Message-Of-The-Day', chỉ được cập nhật mỗi ngày theo lịch (hoặc khi khởi động / khởi động máy chủ). Có một cái nhìn vào nội dung, sử dụng

cat /etc/motd

Vẫn thấy các bản cập nhật tương tự có sẵn, sau khi chạy

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

sẽ được mong đợi Nếu sau đó bạn chạy lại lệnh này, bạn sẽ chỉ được nhắc về bất kỳ cập nhật nào nữa nếu các bản cập nhật mới hơn (mới hơn) đã được phát hành.


Tôi nhận thấy rằng bất kỳ thay đổi tệp nào trong toàn hệ thống sẽ không hiển thị cho đến ngày theo lịch tiếp theo, có cách nào để "làm mới" để bắt đầu thấy các thay đổi ngay lập tức không?
aljuaid86

Bạn có nghĩa là cập nhật cho nội dung của Tin nhắn trong ngày , hoặc không nhận được những gì bạn muốn sau khi chạy sudo apt-get update && sudo apt-get upgrade?
david6

3
Điều này không còn đúng vào ngày 16.04. Sau khi "apt-get dist-Nâng cấp" và khởi động lại tôi thấy "0 gói có thể được nâng cấp".
Bogdan Calmac

1
Câu lệnh '.. hoặc trên máy chủ khởi động lại ..' ở trên không bao gồm điều đó.
david6

3
cat: / etc / motd: Không có tệp hoặc thư mục như vậy
xApple

11

Khi đăng nhập vào máy chủ của bạn, hãy chạy lệnh bên dưới.

sudo apt-get upgrade

Nó sẽ làm các trick. Có lẽ bạn chỉ cần khởi động lại máy chủ của bạn.


3
Cảm ơn câu trả lời của bạn nhưng tôi đã thử nâng cấp sudo apt-get. Khởi động lại máy chủ là không cần thiết bởi vì tôi có các trang web trên đó.
Marlin

3
nếu bạn đã cài đặt bản cập nhật ảnh hưởng trực tiếp đến kernel hoặc đó là bản cập nhật trình điều khiển hoặc đó là bản cập nhật bảo mật quan trọng, bạn cần khởi động lại máy chủ.
Evandro Silva

Có lẽ bạn nên xem xét một lỗi 503 trong một phút. Bạn có biết đây là loại cập nhật gì không?
NorTicUs

1
Làm thế nào bạn có thể cung cấp cho 503 nếu máy chủ ngoại tuyến?
lạc

8

Trong trường hợp của tôi, tôi đã có một URL không chính xác hoặc không thể truy cập trong /etc/apt/source.list. Sau khi xóa URL này, tôi đã có thể cập nhật tất cả các gói thành công.

Các lệnh:

sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade

7

Giải pháp của tôi (rất muộn, tôi thích huy hiệu necromancer :-)):

  1. Cài đặt wajig (một lần):

    sudo apt-get install wajig 
    
  2. Khi bạn muốn cập nhật / nâng cấp đầy đủ hệ thống của bạn

    wajig dailyupgrade
    

    (nó sẽ yêu cầu mật khẩu nếu cần và thực hiện tất cả các bước cập nhật, nâng cấp, nâng cấp và tự động cho bạn).



1

tập lệnh này có ích để tự động hóa các bản cập nhật bao gồm loại bỏ các gói không cần thiết và chỉ thực hiện khởi động lại nếu HĐH muốn

remote_user=usernamehere
remote_host=example.com

ssh -A -n -o StrictHostKeyChecking=no ${remote_user}@${remote_host} && \
sudo apt-get update && \
sudo apt-get -f install -y && \
sudo apt-get -o Dpkg::Options::="--force-confnew" -yy dist-upgrade -y && \
sudo apt-get autoremove -y && \
[ -f /var/run/reboot-required ] && \
echo "sudo reboot now" && \
sudo reboot now 

để chạy trên hộp cục bộ của bạn, hãy bỏ dòng đầu tiên đang thực hiện ssh

đây là bí danh tôi lưu trong ~ / .bashrc

alias doit='echo; kill $( ps -eafww|grep update-manager|grep -v grep | grep update-manager | tr -s " " |cut -d" "  -f2 ) > /dev/null 2>&1;  echo "sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo";echo;sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo '

sau đó trên thiết bị đầu cuối tôi chỉ phát hành doit


0

Nếu bạn chạy apt-get updatelại sau khi apt-get upgradeđã kết thúc, những tin nhắn khi đăng nhập ssh sẽ biến mất.

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.