Điểm:22

Tôi đã vô tình xóa /usr/bin/test và bây giờ tôi không thể cập nhật, nâng cấp và cài đặt các gói

lá cờ in

tôi vô tình xóa /usr/bin/kiểm tra và bây giờ tôi không thể cập nhật, nâng cấp và cài đặt các gói.

Tôi đã thử giải pháp ở đây: apt-get tăng /usr/bin/test: Quyền bị từ chối, nhưng đây là kết quả tôi nhận được:

Đọc danh sách gói... Xong
Xây dựng cây phụ thuộc... Xong
Đang đọc thông tin trạng thái... Xong
Các gói sau đã được cài đặt tự động và không còn cần thiết nữa:
  java-common libutempter0
Sử dụng 'sudo apt autoremove' để xóa chúng.
0 đã nâng cấp, 0 mới cài đặt, 1 cài đặt lại, 0 cần gỡ bỏ và 29 chưa nâng cấp.
Cần lấy 1.353 kB tài liệu lưu trữ.
Sau thao tác này, 0 B dung lượng đĩa bổ sung sẽ được sử dụng.
Bỏ qua:1 http://ph.archive.ubuntu.com/ubuntu impish/main amd64 coreutils AMD64 8.32-4ubuntu2
Bỏ qua ...
Bỏ qua ...
Err:1 http://ph.archive.ubuntu.com/ubuntu impish/main amd64 coreutils AMD64 8.32-4ubuntu2
  Không thể kết nối với ph.archive.ubuntu.com:80 (202.79.184.254), hết thời gian kết nối
E: Không thể tìm nạp http://ph.archive.ubuntu.com/ubuntu/pool/main/c/coreutils/coreutils_8.32-4ubuntu2_amd64.deb Không thể kết nối với ph.archive.ubuntu.com:80 (202.79. 184.254), hết thời gian kết nối
E: Không thể tìm nạp một số tệp lưu trữ, có thể chạy apt-get update hoặc thử với --fix-missing?

tôi cũng đã thử Sudo apt update --fix-missing và có đầu ra này:

Err:8 http://ph.archive.ubuntu.com/ubuntu bắt chước InRelease
  Không thể kết nối với ph.archive.ubuntu.com:80 (202.79.184.254), hết thời gian kết nối
Err:9 http://ph.archive.ubuntu.com/ubuntu impish-updates InRelease
  Không thể kết nối với ph.archive.ubuntu.com:http:
Err:10 http://ph.archive.ubuntu.com/ubuntu impish-backports InRelease
  Không thể kết nối với ph.archive.ubuntu.com:http:
Đã tải 125 kB trong 37 giây (3.339 B/s)
sh: 1: /usr/bin/test: không tìm thấy
sh: 1: /usr/bin/test: không tìm thấy
sh: 1: /usr/bin/test: không tìm thấy
Đọc danh sách gói... Xong

Làm ơn giúp tôi.

cocomac avatar
lá cờ cn
Bất kỳ cơ hội nào bạn có thể tạo một đĩa CD trực tiếp? Nếu vậy, bạn có thể tạo một cái có cùng phiên bản và hương vị của Ubuntu mà bạn có, khởi động vào đĩa CD trực tiếp, gắn hệ thống tệp chính của bạn vào đâu đó, chẳng hạn như `/mnt/mainfs`, sau đó sao chép (không di chuyển, sao chép) tệp `/usr/bin/test` từ đĩa CD trực tiếp đến đúng vị trí trong hệ thống tệp chính (trong ví dụ của tôi, nó sẽ là: `sudo cp /usr/bin/test /mnt/mainfs/usr/bin/test` ). Chỉ cần lấy tệp `/usr/bin/test` từ đĩa CD trực tiếp và đặt nó vào đúng vị trí trên hệ thống tệp chính chắc chắn sẽ khắc phục được sự cố của bạn.
paolo gonzales avatar
lá cờ in
xin chào, cảm ơn bạn đã phản hồi nhưng tôi mới sử dụng Linux và tôi không biết CD trực tiếp là gì, bạn có thể gửi cho tôi video tham khảo để theo dõi hoặc bất cứ điều gì về điều đó không. Cảm ơn
cocomac avatar
lá cờ cn
Tôi sẽ gửi hướng dẫn trong giây lát. Bạn có phiên bản Ubuntu chính xác nào? Ubuntu bình thường? Kubfox? 20.04? 21.10? Bạn có thể tìm thấy điều này trong phần Giới thiệu trong Cài đặt ở đâu đó.
paolo gonzales avatar
lá cờ in
oh cảm ơn bạn rất nhiều Tôi đã có phiên bản này ```Ubuntu 21.10 x86_64``` Tôi sẽ chờ chỉ dẫn của bạn
starkus avatar
lá cờ de
`dpkg -S /usr/bin/test` cho thấy rằng `/usr/bin/test` được cung cấp bởi gói `coreutils`. Bạn có thể thử cài đặt lại và cấu hình lại nó.
paolo gonzales avatar
lá cờ in
@starkus làm cách nào tôi có thể cài đặt và định cấu hình lại?
cocomac avatar
lá cờ cn
@paologonzales Bạn có thể tự do thử bất cứ thứ gì bạn muốn. Nhưng tôi khuyên bạn không nên cố gắng cài đặt lại/cấu hình lại nó. Nếu bạn muốn, lệnh để cài đặt lại nó là `sudo apt install --reinstall coreutils`. Nhưng tôi nghĩ rằng bạn đã thử điều đó rồi và do lỗi `Không thể kết nối`, tôi không nghĩ rằng việc cố gắng cài đặt lại nó sẽ hoạt động tốt. Tôi đề nghị thử những gì tôi nói thay vào đó.
paolo gonzales avatar
lá cờ in
đó cũng là những gì tôi nghĩ đó là lý do tại sao tôi hỏi anh ấy ý anh ấy là gì về việc cài đặt và cấu hình lại nó. Tôi hiện đang cài đặt ISO internet chậm
starkus avatar
lá cờ de
một cái gì đó với 'sudo dpkg -i /var/cache/apt/archives/coreutils*.deb'
lá cờ us
`cp /usr/bin/[ /usr/bin/test` có hoạt động trong kỳ không?
matteol avatar
lá cờ cz
@doneal24 không /usr/bin/[ muốn đóng cửa ]
lá cờ be
Tôi hơi ngạc nhiên khi bất cứ điều gì đang cố gắng sử dụng `/usr/bin/test`, vì `test` là phần mềm tích hợp sẵn trong hầu hết các trình bao phổ biến.
lá cờ ne
hầu hết các giải pháp sẽ liên quan đến việc tải xuống *thứ gì đó*; bạn có thể cần tìm ra lý do tại sao bạn nhận được `Không thể kết nối với ph.archive.ubuntu.com`. bạn có kết nối internet không?
lá cờ tz
@chepner: "thử nghiệm" không được tích hợp sẵn trong sh. Hầu hết các tập lệnh cài đặt, vì lý do di động, cố gắng sử dụng sh (vì sh là trình bao luôn được cho là có mặt), và do đó cũng phải sử dụng chương trình thử nghiệm "posix" (cũng được cho là có mặt).
lá cờ be
`sh` không thực sự là một trình bao (hoặc ít nhất, trình bao Bourne thực sự ban đầu mang tên này hiếm khi được sử dụng nữa); đó là tên chung cho bất kỳ lớp vỏ nào tương thích với POSIX mà hệ thống tuân thủ POSIX bắt buộc phải cung cấp.
lá cờ ag
Và đây là lý do tại sao bạn nên cẩn thận khi sử dụng su và sudo :-( Tôi đồng ý rằng cách dễ nhất là sao chép tệp nhị phân từ một hệ thống lành mạnh khác (bao gồm cả đĩa cd trực tiếp). Bạn có thể thử cài đặt lại Ubuntu trên đầu trang nếu không quan tâm đến dữ liệu trên hệ thống.
lá cờ ag
@ysth Tôi nghĩ rằng thông báo lỗi có thể gây hiểu lầm nếu lập trình viên không ngờ rằng `test` có thể bị thiếu.
Peter - Reinstate Monica avatar
lá cờ hn
Bạn luôn có thể viết một sự thay thế thô sơ. Rất có thể các tập lệnh cài đặt chỉ sử dụng một tập hợp con nhỏ của chức năng /bin/test, rất có thể là kiểm tra các tệp hiện có.
lá cờ ne
@ ThorbjørnRavnAndersen, "kết nối đã hết thời gian chờ" khiến tôi nghĩ rằng nó không liên quan đến việc mất kiểm tra
Điểm:50
lá cờ hr

Bạn có thể sử dụng kiểm tra lệnh được cung cấp bởi hộp bận rộn để tạm thời thay thế một mất tích /usr/bin/kiểm tra tập tin nhị phân.

Trước tiên, hãy kiểm tra xem bạn có busybox không và kiểm tra làm:

$ /usr/bin/busybox test -x /usr/bin/busybox && echo Hoạt động
Làm

Sau đó tạo một liên kết tượng trưng:

$ sudo ln -s busybox /usr/bin/test
$ 
tệp $ /usr/bin/kiểm tra
/usr/bin/test: liên kết tượng trưng tới busybox

Sau đó cài đặt lại coreutils gói, sẽ ghi đè lên liên kết tượng trưng bằng cách triển khai nhị phân thích hợp.

Nếu bạn không có hộp bận rộn, bạn thậm chí có thể tạo /usr/bin/kiểm tra dưới dạng tập lệnh shell và tận dụng shell kiểm tra được xây dựng trong:

#!/bin/sh

kiểm tra "$@"

(đừng quên làm cho nó có thể thực thi được, chmod +x /usr/bin/kiểm tra) một lần nữa cài đặt lại coreutils ngay sau khi.

Quasímodo avatar
lá cờ jp
Một điều cần lưu ý là Coreutils Test có một số phần mở rộng mà phần mềm có thể dựa vào. Nếu những thứ đó không có trong Kiểm tra Busybox ([có vẻ như không được ghi lại chính xác](https://busybox.net/downloads/BusyBox.html)), nó có thể phá vỡ một số tập lệnh. Như vậy, đối với giải pháp tạm thời sử dụng tập lệnh `#!/bin/bash` có thể tốt hơn.
lá cờ cn
"Tập lệnh bảo trì" Debian (tức là tập lệnh chạy trong khi cài đặt gói) được cho là chạy với hệ vỏ tuân thủ POSIX tối thiểu là `/bin/sh`. Nếu họ cần các tính năng bổ sung, gói cần khai báo một phụ thuộc rõ ràng và điều này là không phổ biến.
Eric Duminil avatar
lá cờ us
`sudo ln -s busybox /usr/bin/test`. Đợi đã. Điều này tạo ra một liên kết tượng trưng trỏ đến `busybox`, phải không? Nhưng `busybox` có thể làm được nhiều điều hơn là chỉ `busybox test`. Vậy làm thế nào để hệ thống biết rằng `busybox test` được cho là được gọi?
Eric Duminil avatar
lá cờ us
Ồ tuyệt. "Busybox thường quyết định" chức năng mong muốn" của chúng bằng cách kiểm tra xem chúng được gọi từ đâu." https://android.stackexchange.com/a/64031/292651
lá cờ in
Không phải "họ được gọi từ đâu", mà là "họ được gọi theo tên nào", như được người gọi đặt trong `argv[0]`. Để chứng minh sự khác biệt, trong bash, bạn có thể sử dụng `exec -a test busybox 1 = 1` để gọi nhị phân `busybox` với tên `test` trong `argv[0]`, mặc dù không _có_ bất kỳ liên kết nào tới busybox bên dưới tên đó thực sự tồn tại trên hệ thống tập tin.
Điểm:36
lá cờ za

Giải pháp đơn giản nhất tôi có thể nghĩ ra mà không cần sử dụng trình quản lý gói (vì nó không hoạt động nữa):

  1. Tải xuống gói coreutils:

    wget http://de.archive.ubuntu.com/ubuntu/pool/main/c/coreutils/coreutils_8.32-4ubuntu2_amd64.deb
    

    lưu ý: sử dụng trình duyệt nếu bạn chưa cài đặt wget. Ngoài ra, xin lưu ý rằng tên chính xác là vào tháng 1 năm 2022 - nếu sau này bạn cần thực hiện việc này, tên tệp rất có thể đã thay đổi để phản ánh các gói được cập nhật.

  2. Giải nén gói đã tải xuống

    dpkg-deb -R coreutils_8.32-4ubuntu2_amd64.deb coreutils_unpacked
    
  3. Sao chép nhị phân thử nghiệm bị thiếu

    Sudo cp coreutils_unpacked/usr/bin/test/usr/bin/test
    
  4. Thêm quyền thực thi

    Sudo chmod +x /usr/bin/test
    

Hoặc nếu bạn muốn tải xuống tệp .iso đầy đủ

  1. Tải xuống tệp iso từ trang web chính thức

  2. Tạo một thư mục tạm thời để gắn tệp iso vào

    mkdir ubuntu_iso_tmp
    
  3. Gắn tệp iso vào thư mục mới tạo

    Sudo mount -o loop ~/Downloads/Ubuntu_whthing.iso ubuntu_iso_tmp
    
  4. Sao chép nhị phân thử nghiệm bị thiếu

    Sudo cp ubuntu_iso_tmp/usr/bin/test/usr/bin/test
    
Peter Cordes avatar
lá cờ fr
`cp -a` sẽ là một lựa chọn tốt để duy trì quyền, quyền sở hữu và thời gian sửa đổi từ tệp gói. (Sau đó, bạn sẽ không cần `chmod`). Tôi hầu như luôn sử dụng `cp -a` cho bất kỳ việc sao chép nào mà tôi từng thực hiện; Tôi quên siêu dữ liệu nào *không* được sao chép mà không có `-a`, nhưng rõ ràng trong trường hợp này bạn muốn sao chép càng nhiều càng tốt, giống như bạn đang trích xuất trực tiếp vào đó. Hoặc chỉ cần sử dụng `mv` vì bạn không cần phải giải nén phiên bản nữa.
lá cờ in
Tôi sẽ sử dụng `apt-get download coreutils` thay vì phụ thuộc vào việc quên một url có thể biến mất.
lá cờ cn
@ValentinSolina: Bạn có thể khôi phục bản chỉnh sửa đó (nhấp vào "đã chỉnh sửa N giờ/ngày trước". Braiam luôn có thể đăng câu trả lời khác
lá cờ ag
Đã quay trở lại phiên bản `wget`, vì `apt-get` bị hỏng trong trường hợp cụ thể này.
lá cờ za
Trong trường hợp liên kết tải xuống gói không hợp lệ hoặc bạn có phiên bản Ubuntu khác, hãy tìm kiếm coreutils trên trang web chính thức: https://packages.ubuntu.com - đó là cách tôi tìm thấy nó
Điểm:16
lá cờ tr

Đối với trường hợp cụ thể của /usr/bin/kiểm tra, có một chương trình khác /usr/bin/[ giống hệt nhau ngoại trừ việc nó yêu cầu một đối số cuối cùng bổ sung đó là ]. GNU coreutils, là việc triển khai các chương trình này trong Ubuntu và các hệ thống Linux không được nhúng khác, vận chuyển hai chương trình đó dưới dạng các tệp thực thi riêng biệt, vì vậy ngay cả khi một chương trình bị hỏng hoặc bị thiếu, bạn vẫn có thể sử dụng chương trình kia. Tạo ra /usr/bin/kiểm tra với nội dung như sau:

#!/bin/sh
/usr/bin/\[ "$@" \]

Làm cho nó có thể thực thi được (chmod a+rx /usr/bin/test) và bạn có một sự thay thế hoàn toàn hợp lệ cho /usr/bin/kiểm tra.

Sau đó chạy apt cài đặt lại coreutils để có được bình thường /usr/bin/kiểm tra trở lại.

Ruslan avatar
lá cờ bv
Tại sao một người cần phải thoát khỏi dấu ngoặc?
Gilles 'SO- stop being evil' avatar
lá cờ tr
@Ruslan Trong tập lệnh cụ thể này, không cần phải thoát dấu ngoặc.
Điểm:13
lá cờ cn

Tôi khuyên bạn nên lấy tệp đã xóa từ USB trực tiếp và đặt lại. Đây là cách.

  1. Tải xuống Ubuntu ISO cho phiên bản Ubuntu của bạn. Cho rằng bạn có Impish (của bạn đúng cách đầu ra chỉ ra điều đó), ISO Ubuntu 21.10 sẽ phù hợp với bạn. Tải xuống Hình ảnh Máy tính để bàn có nhãn ISO từ đây.
  2. Tải xuống balenaEtcher. Tải phiên bản Linux x64. Giải nén zip. Trong một thiết bị đầu cuối, hãy vào thư mục zip đã giải nén. Một khi bạn đã ở đó, nếu bạn làm ls, bạn sẽ thấy một tệp kết thúc bằng .AppImage. Làm chmod +x balenaEtcher-1.7.3-x64.AppImage.
  3. Chạy balenaEtcher với ./balenaEtcher-1.7.3-x64.AppImage.
  4. Tìm một ổ đĩa flash có dung lượng lớn hơn 8GB và đặt nó vào máy tính của bạn. Tất cả dữ liệu trên ổ đĩa flash này sẽ bị hủy.
  5. Chọn ISO đã tải xuống và chọn ổ đĩa flash. Nhấn Flash.
  6. Sau khi hoàn tất, hãy khởi động lại máy tính của bạn, vào menu khởi động và chọn ổ đĩa flash. Nhấn Dùng thử Ubuntu.
  7. Trong phiên USB trực tiếp, hãy gắn hệ thống chính. Nó có thể tự động làm điều đó và có thể có một nút trong GUI để làm điều đó. Tìm ra nơi nó được gắn kết. tôi sẽ sử dụng /mnt/mainfs làm ví dụ, nhưng bạn nên sử dụng vị trí thực.
  8. Mở một thiết bị đầu cuối và chạy sudo cp /usr/bin/test /mnt/mainfs/usr/bin/test. Thay thế /mnt/mainfs với bất cứ nơi nào bạn gắn hệ thống chính của mình.
  9. Bạn đã hoàn tất. Tắt phiên trực tiếp, rút ​​ổ đĩa flash và khởi động lại. Ubuntu bình thường sẽ trở lại và đúng cách nên hoạt động trở lại.
lá cờ za
Đây là một câu trả lời tuyệt vời, những người dùng cao cấp hơn một chút có thể chỉ cần thay thế việc sử dụng balenaEtcher bằng một dd cmd duy nhất được cài đặt theo mặc định: $ dd if=path/to/ubuntu.iso of=/dev/sdX bs=1m Câu trả lời chi tiết: https://unix.stackexchange.com/a/179146
lá cờ za
btw. nếu bạn vẫn có Ubuntu đang hoạt động thì thậm chí không cần sử dụng ổ Flash, bạn chỉ cần gắn tệp .iso. $ mount -o vòng lặp file.iso /mnt/dir https://unix.stackexchange.com/a/316407
cocomac avatar
lá cờ cn
@ValentinSolina Tôi không biết điều đó, bạn có thể đăng câu trả lời không?
lá cờ za
Đây @cocomac https://askubuntu.com/a/1389039/1564755
Someone avatar
lá cờ my
Nếu bạn đang ghi tệp ISO vào USB thì thuật ngữ chính xác là "USB" Trực tiếp chứ không phải "CD".
cocomac avatar
lá cờ cn
@Ai đó Rất tiếc, tôi không biết điều đó. Vui lòng [đề xuất chỉnh sửa](https://askubuntu.com/posts/1388900/edit)
Someone avatar
lá cờ my
Tôi đã chỉnh sửa *(Tôi có hơn 2 nghìn đại diện nên các chỉnh sửa của tôi được áp dụng ngay lập tức, vui lòng quay lại)* câu trả lời của bạn và thay thế Live CD bằng phiên trực tiếp vì điều đó có vẻ phù hợp hơn. Tôi cũng đã thay đổi dung lượng tối thiểu thành 8GB vì phiên trực tiếp trên USB 4GB sẽ tự hỏng.
cocomac avatar
lá cờ cn
@Ai đó Chỉ cần đọc qua nó và bản chỉnh sửa của bạn có ý nghĩa. Cảm ơn!
ChanganAuto avatar
lá cờ us
# 4 vẫn sai Ubuntu 21.10 ISO là 2,9 GB) và đề xuất phần mềm bên thứ 3 khi Startup Disk Creator được cài đặt theo mặc định là vô nghĩa.
Điểm:5
lá cờ de

Bạn có thể cài đặt lại gói chính và để trình kích hoạt thực hiện công việc. Trong trường hợp này coreutils và mọi công cụ được cung cấp của nó sẽ được cài đặt lại bởi các tập lệnh của coreutils. Không chỉ kiểm tra.

  1. Tải xuống phiên bản được cài đặt trên hệ thống của bạn
    wget http://ph.archive.ubuntu.com/ubuntu/pool/main/c/coreutils/coreutils_8.32-4ubuntu2_amd64.deb
    
  2. Giải nén nó đến đích của nó
    sudo dpkg --unpack coreutils_8.32-4ubuntu2_amd64.deb
    
  3. Định cấu hình hoặc định cấu hình lại nó bằng trình kích hoạt của nó:
    sudo dpkg --configure coreutils
    

Xong.

starkus avatar
lá cờ de
Tôi đã đề cập ngay từ đầu rằng điều này không chỉ khôi phục `test`. Bạn có ý gì khác không?
lá cờ ag
có bạn đã làm. Tôi không biết tại sao tôi lại đọc sai - có lẽ đã cuộn đến phần đầu của một câu hỏi khác. Bình luận đã bị xóa.
Điểm:0
lá cờ cn

Chỉ cần cài đặt hương vị hệ điều hành cục bộ trên hộp ảo, sao chép và tải tệp nhị phân lên hệ thống đang thiếu nó.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.