Puncte:22

Am șters accidental /usr/bin/test și acum nu pot să actualizez, să fac upgrade și să instalez pachete

drapel in

Am șters din greșeală /usr/bin/test iar acum nu pot actualiza, upgrade și instala pachete.

Am incercat deja solutia aici: apt-get raises /usr/bin/test: Permisiune refuzată, dar aceasta este rezultatul pe care l-am primit:

Citirea listelor de pachete... Gata
Construirea arborelui de dependență... Gata
Citirea informațiilor despre stare... Gata
Următoarele pachete au fost instalate automat și nu mai sunt necesare:
  java-common libutempter0
Utilizați „sudo apt autoremove” pentru a le elimina.
0 actualizat, 0 nou instalat, 1 reinstalat, 0 de eliminat și 29 neactualizat.
Trebuie să obțineți 1.353 kB de arhive.
După această operație, se vor folosi 0 B de spațiu suplimentar pe disc.
Ign:1 http://ph.archive.ubuntu.com/ubuntu impish/main amd64 coreutils amd64 8.32-4ubuntu2
Ign...
Ign...
Err:1 http://ph.archive.ubuntu.com/ubuntu impish/main amd64 coreutils amd64 8.32-4ubuntu2
  Nu s-a putut conecta la ph.archive.ubuntu.com:80 (202.79.184.254), conexiunea a expirat
E: Nu s-a putut prelua http://ph.archive.ubuntu.com/ubuntu/pool/main/c/coreutils/coreutils_8.32-4ubuntu2_amd64.deb Nu s-a putut conecta la ph.archive.ubuntu.com:80 (202.79. 184.254), conexiunea a expirat
E: Nu se pot prelua unele arhive, poate rulați apt-get update sau încercați cu --fix-missing?

am incercat si eu sudo apt update --fix-missing și am obținut această ieșire:

Err:8 http://ph.archive.ubuntu.com/ubuntu impish InRelease
  Nu s-a putut conecta la ph.archive.ubuntu.com:80 (202.79.184.254), conexiunea a expirat
Err:9 http://ph.archive.ubuntu.com/ubuntu impish-updates InRelease
  Nu se poate conecta la ph.archive.ubuntu.com:http:
Err:10 http://ph.archive.ubuntu.com/ubuntu impish-backports InRelease
  Nu se poate conecta la ph.archive.ubuntu.com:http:
Preluați 125 kB în 37 de secunde (3.339 B/s)
sh: 1: /usr/bin/test: nu a fost găsit
sh: 1: /usr/bin/test: nu a fost găsit
sh: 1: /usr/bin/test: nu a fost găsit
Citirea listelor de pachete... Gata

Vă rog să mă ajutați.

cocomac avatar
drapel cn
Ai vreo șansă să faci un CD live? Dacă da, puteți crea unul cu exact aceeași versiune și aromă de Ubuntu pe care o aveți, porniți pe CD-ul live, montați sistemul de fișiere principal undeva, de exemplu, `/mnt/mainfs`, apoi copiați (nu mutați, copiați) Fișierul `/usr/bin/test` de pe CD-ul live în locul corect în sistemul de fișiere principal (în exemplul meu ar fi acesta: `sudo cp /usr/bin/test /mnt/mainfs/usr/bin/test` ). Pur și simplu luați fișierul `/usr/bin/test` de pe CD-ul live și puneți-l în locul corect pe sistemul de fișiere principal, probabil, vă va rezolva problema.
paolo gonzales avatar
drapel in
Bună, mulțumesc pentru răspuns, dar sunt nou în utilizarea Linux și nu știam ce este CD-ul live, îmi puteți trimite o referință video de urmărit sau ceva despre asta. mulțumesc
cocomac avatar
drapel cn
Voi trimite indicații într-o clipă. Ce versiune exactă de Ubuntu ai? Ubuntu normal? Kubuntu? 20.04? 21.10? Probabil că puteți găsi asta în secțiunea Despre din Setări undeva.
paolo gonzales avatar
drapel in
oh, mulțumesc foarte mult, am avut această versiune ```Ubuntu 21.10 x86_64``` Vă aștept indicațiile
starkus avatar
drapel de
`dpkg -S /usr/bin/test` arată că `/usr/bin/test` este furnizat de pachetul `coreutils`. Ai putea încerca să-l reinstalezi și să-l reconfigurezi.
paolo gonzales avatar
drapel in
@starkus cum îl pot instala și reconfigura?
cocomac avatar
drapel cn
@paologonzales Ești liber să încerci orice vrei. Dar aș sfătui să nu încerci să-l reinstalezi/reconfigurez. Dacă doriți, comanda de reinstalare este `sudo apt install --reinstall coreutils`. Dar cred că ați încercat deja asta și, având în vedere erorile „Nu s-a putut conecta”, nu cred că încercarea de a-l reinstala va funcționa bine. Vă sugerez să încercați ce am spus în schimb.
paolo gonzales avatar
drapel in
și asta cred că de aceea îl întreb ce vrea să spună despre instalarea și reconfigurarea lui. În prezent, instalarea internetului ISO este lentă
starkus avatar
drapel de
ceva cu „sudo dpkg -i /var/cache/apt/archives/coreutils*.deb”
drapel us
Va funcționa `cp /usr/bin/[ /usr/bin/test` pentru interm?
matteol avatar
drapel cz
@doneal24 nu /usr/bin/[ vrea o închidere ]
drapel be
Sunt oarecum surprins că orice încearcă să folosească `/usr/bin/test`, deoarece `test` este încorporat în cele mai comune shell-uri.
drapel ne
majoritatea soluțiilor vor implica descărcarea *ceva*; probabil că va trebui să vă dați seama de ce ați primit „Nu s-a putut conecta la ph.archive.ubuntu.com”. ai conexiune la internet?
drapel tz
@chepner: „test” nu este un sistem încorporat în sh. Majoritatea scripturilor de instalare, din motive de portabilitate, se străduiesc să folosească sh (deoarece sh este singurul shell care se presupune că este întotdeauna prezent) și, prin urmare, trebuie să folosească și programul de testare „posix” (de asemenea, se presupune că este prezent).
drapel be
`sh` nu este cu adevărat un shell (sau cel puțin, shell-ul Bourne care inițial purta numele este rar folosit); este numele umbrelă pentru orice shell compatibil POSIX pe care trebuie să îl ofere un sistem compatibil POSIX.
drapel ag
Și acesta este motivul pentru care ar trebui să fiți atenți când utilizați su și sudo :-( Sunt de acord că cel mai ușor este să copiați binarul dintr-un alt sistem sănătos (inclusiv un cd live). Poate doriți să experimentați reinstalarea Ubuntu deasupra dacă nu faceți pasă de datele din sistem.
drapel ag
@ysth Cred că mesajul de eroare poate induce în eroare dacă programatorul nu se aștepta ca `testul` să lipsească.
Peter - Reinstate Monica avatar
drapel hn
Ai putea oricând să scrii un înlocuitor rudimentar. Sunt șanse ca scripturile de instalare să utilizeze doar un mic subset al funcționalității /bin/test, cel mai probabil verificând fișierele existente.
drapel ne
@ThorbjørnRavnAndersen „conexiunea a expirat” m-a făcut să cred că este puțin probabil să aibă legătură cu testul lipsă
Puncte:50
drapel hr

Ai putea folosi Test comanda oferită de busybox pentru a înlocui temporar o lipsă /usr/bin/test fisier binar.

În primul rând, verificați dacă aveți busybox și că este Test lucrări:

$ /usr/bin/busybox test -x /usr/bin/busybox && echo Works
Lucrări

Apoi creați o legătură simbolică:

$ sudo ln -s busybox /usr/bin/test
$ 
$ fișier /usr/bin/test
/usr/bin/test: link simbolic către busybox

Apoi reinstalați coreutils pachet, care va suprascrie legătura simbolică cu implementarea binară corespunzătoare.

Daca nu ai busybox, ai putea chiar sa creezi /usr/bin/test ca un script shell și să folosească shell-ul Test incorporat:

#!/bin/sh

testează „$@”

(nu uitați să îl faceți executabil, chmod +x /usr/bin/test) reinstalare din nou coreutils imediat dupa.

Quasímodo avatar
drapel jp
Ceva de reținut este că Coreutils Test are unele extensii pe care se poate baza software-ul. Dacă se întâmplă să lipsească din Busybox Test ([care nu pare să fie documentat corespunzător](https://busybox.net/downloads/BusyBox.html)), s-ar putea să rupă unele scripturi. Ca atare, pentru o soluție temporară, folosirea unui script `#!/bin/bash` poate fi mai bună.
drapel cn
„Scripturile de întreținere” Debian (adică scripturile rulate în timpul instalării pachetului) ar trebui să ruleze cu un shell minim compatibil POSIX ca `/bin/sh`. Dacă au nevoie de caracteristici suplimentare, pachetul trebuie să declare o dependență explicită, iar acest lucru este neobișnuit.
Eric Duminil avatar
drapel us
`sudo ln -s busybox /usr/bin/test`. Aștepta. Acest lucru creează un link simbolic care indică către „busybox”, nu? Dar `busybox` poate face mult mai mult decât doar `busybox test`. Deci, cum ar trebui să știe sistemul că „testul busybox” ar trebui să fie numit?
Eric Duminil avatar
drapel us
Super. „Busybox-urile își decid de obicei „funcționalitatea dorită” verificând de unde sunt apelate.” https://android.stackexchange.com/a/64031/292651
drapel in
Nu „de unde sunt chemați”, ci „sub ce nume sunt chemați”, așa cum a pus în `argv[0]` apelantul. Pentru a demonstra diferența, în bash, puteți folosi `exec -a test busybox 1 = 1` pentru a apela binarul `busybox` cu numele `test` în `argv[0]`, în ciuda faptului că nu _ai_ niciun link către busybox sub acel nume există de fapt pe sistemul de fișiere.
Puncte:36
drapel za

Cea mai simplă soluție la care mă pot gândi, fără a folosi managerul de pachete (din moment ce nu mai funcționează):

  1. Descărcați pachetul coreutils:

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

    notă: utilizați browserul dacă nu aveți wget instalat. De asemenea, rețineți că numele exacte sunt din ianuarie 2022 - dacă trebuie să faceți acest lucru la o dată ulterioară, numele fișierelor se vor fi schimbat cel mai probabil pentru a reflecta pachetele actualizate.

  2. Despachetați pachetul descărcat

    dpkg-deb -R coreutils_8.32-4ubuntu2_amd64.deb coreutils_unpacked
    
  3. Copiați binarul de test lipsă

    sudo cp coreutils_unpacked/usr/bin/test /usr/bin/test
    
  4. Adăugați permisiunea executabilă

    sudo chmod +x /usr/bin/test
    

Sau dacă doriți să descărcați fișierul complet .iso

  1. Descărcați fișierul iso de pe site-ul oficial

  2. Creați un director temporar în care să montați fișierul ISO

    mkdir ubuntu_iso_tmp
    
  3. Montați fișierul ISO în directorul nou creat

    sudo mount -o loop ~/Downloads/Ubuntu_whatever.iso ubuntu_iso_tmp
    
  4. Copiați binarul de test lipsă

    sudo cp ubuntu_iso_tmp/usr/bin/test /usr/bin/test
    
Peter Cordes avatar
drapel fr
`cp -a` ar fi o alegere bună pentru a păstra permisiunile, proprietatea și timpul de modificare din fișierul pachetului. (Atunci nu ai avea nevoie de `chmod`). Aproape întotdeauna folosesc `cp -a` pentru orice copiere pe care o fac vreodată; Am uitat care metadate *nu* sunt copiate fără `-a`, dar în mod clar în acest caz doriți să copiați cât mai mult posibil, ca și cum ați extrage direct acolo. Sau pur și simplu utilizați `mv`, deoarece nu mai aveți nevoie să despachetați versiunea.
drapel in
Aș folosi `apt-get download coreutils` în loc să depind de wget o adresă URL care poate dispărea.
drapel cn
@ValentinSolina: Puteți derula înapoi acea modificare (faceți clic pe „editat acum N ore/zile". Braiam poate posta oricând alt răspuns
drapel ag
Revenit la versiunea `wget`, deoarece `apt-get` este întrerupt în acest scenariu particular.
drapel za
În cazul în care linkul de descărcare a pachetului devine invalid sau aveți o altă versiune Ubuntu, căutați coreutils pe site-ul oficial: https://packages.ubuntu.com - așa l-am găsit
Puncte:16
drapel tr

Pentru cazul specific al /usr/bin/test, există un alt program /usr/bin/[ care este identic cu excepția faptului că necesită un ultim argument suplimentar care este ]. Coreutils GNU, care este implementarea acestor programe sub Ubuntu și alte sisteme Linux neîncorporate, livrează acele două programe ca executabile separate, așa că chiar dacă unul este corupt sau lipsește, îl puteți folosi pe celălalt. Crea /usr/bin/test cu urmatorul continut:

#!/bin/sh
/usr/bin/\[ „$@” \]

Faceți-l executabil (chmod a+rx /usr/bin/test) și aveți un înlocuitor complet valabil pentru /usr/bin/test.

Apoi fugi apt reinstall coreutils pentru a ajunge la normal /usr/bin/test înapoi.

Ruslan avatar
drapel bv
De ce trebuie să scape de paranteze?
Gilles 'SO- stop being evil' avatar
drapel tr
@Ruslan În acest script special, parantezele nu trebuie să fie eliminate.
Puncte:13
drapel cn

Vă sugerez să obțineți fișierul șters de pe un USB live și să îl puneți înapoi. Iată cum.

  1. Descărcați ISO Ubuntu pentru versiunea dvs. de Ubuntu. Având în vedere că ai Impish (al tău apt ieșirea indică asta), Ubuntu 21.10 ISO ar trebui să funcționeze pentru dvs. Descărcați imaginea de desktop etichetată ISO de aici.
  2. Descarca balenaEtcher. Obțineți versiunea x64 Linux. Extrageți fermoarul. Într-un terminal, accesați folderul zip extras. Odată ce ai ajuns acolo, dacă o faci ls, ar trebui să vedeți un fișier care se termină în .AppImage. Do chmod +x balenaEtcher-1.7.3-x64.AppImage.
  3. Rulați balenaEtcher cu ./balenaEtcher-1.7.3-x64.AppImage.
  4. Găsiți o unitate flash care are o capacitate mai mare de 8 GB și puneți-o în computer. Toate datele de pe această unitate flash vor fi distruse.
  5. Selectați ISO descărcat și selectați unitatea flash. Apăsați Flash.
  6. După ce ați terminat, reporniți computerul, intrați în meniul de pornire și selectați unitatea flash. Apăsați Încercați Ubuntu.
  7. În sesiunea USB live, montați sistemul principal. S-ar putea să o facă automat și ar putea exista un buton în GUI pentru a face asta. Aflați unde este montat. voi folosi /mnt/mainfs de exemplu, dar ar trebui să utilizați locația reală.
  8. Deschideți un terminal și rulați sudo cp /usr/bin/test /mnt/mainfs/usr/bin/test. A inlocui /mnt/mainfs cu oriunde ați montat sistemul principal.
  9. Ai terminat. Închideți sesiunea live, deconectați unitatea flash și reporniți. Ubuntu normal va reveni și apt ar trebui să funcționeze din nou.
drapel za
Acesta este un răspuns grozav, utilizatorii puțin mai avansați ar putea înlocui utilizarea balenaEtcher cu un singur dd cmd care este instalat implicit: $ dd if=path/to/ubuntu.iso of=/dev/sdX bs=1m Răspuns detaliat: https://unix.stackexchange.com/a/179146
drapel za
Btw. dacă încă aveți un Ubuntu funcțional, nici măcar nu este nevoie să utilizați o unitate flash, puteți doar să montați fișierul .iso. $ mount -o buclă fișier.iso /mnt/dir https://unix.stackexchange.com/a/316407
cocomac avatar
drapel cn
@ValentinSolina Nu stiam asta, poti sa postezi un raspuns?
drapel za
Aici @cocomac https://askubuntu.com/a/1389039/1564755
Someone avatar
drapel my
Dacă inscripționați fișierul ISO într-un USB, atunci termenul corect este Live „USB” nu „CD”.
cocomac avatar
drapel cn
@Cineva Hopa, nu știam asta. Simțiți-vă liber să [sugerați o modificare](https://askubuntu.com/posts/1388900/edit)
Someone avatar
drapel my
Am editat *(Am mai mult de 2k rep, așa că editările mele sunt aplicate imediat, nu ezitați să derulați înapoi)* răspunsul dvs. și am înlocuit Live CD-ul cu sesiune live, deoarece pare mai potrivit. De asemenea, am schimbat capacitatea minimă la 8 GB, deoarece sesiunea live pe un USB de 4 GB se va rupe singură.
cocomac avatar
drapel cn
@Cineva Citește-l și editarea ta are sens. Mulțumiri!
ChanganAuto avatar
drapel us
#4 este încă greșit Ubuntu 21.10 ISO are 2,9 GB) și recomandarea unui software terță parte atunci când Startup Disk Creator este instalat implicit nu are sens.
Puncte:5
drapel de

Puteți reinstala pachetul principal și lăsați declanșatorii să facă treaba. În acest caz coreutils și orice instrument furnizat al acestuia va fi reinstalat de scripturile de coreutils. Nu numai Test.

  1. Descărcați versiunea instalată pe sistemul dvs
    wget http://ph.archive.ubuntu.com/ubuntu/pool/main/c/coreutils/coreutils_8.32-4ubuntu2_amd64.deb
    
  2. Despachetați-l până la destinație
    sudo dpkg --unpack coreutils_8.32-4ubuntu2_amd64.deb
    
  3. Configurați-l sau reconfigurați-l folosind declanșatoarele sale:
    sudo dpkg --configure coreutils
    

Terminat.

starkus avatar
drapel de
Am menționat la început că acest lucru nu restaurează doar `testul`. Te referi la altceva?
drapel ag
da ai făcut. Nu știu de ce am citit-o greșit - poate am derulat la începutul unei alte întrebări. Comentariul a fost șters.
Puncte:0
drapel cn

Pur și simplu instalați versiunea OS local pe virtualbox și copiați și încărcați binarul în sistemul căruia îi lipsește.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.