Jak naprawić uszkodzone pakiety w Linuksie

Jak naprawić uszkodzone pakiety w Linuksie

Menedżery pakietów Linuksa, takie jak Apt i DNF, są niezwykle wydajne i intuicyjne, ale to nie znaczy, że nic nie może pójść źle. Czasami instalacja pakietu kończy się niepowodzeniem i trzeba odebrać części. Menedżerowie pakietów mają możliwość naprawy uszkodzonych pakietów i pomijania uszkodzonych aktualizacji, aby przywrócić działanie systemu i uniknąć problemów w przyszłości. W tym artykule opisano, jak naprawić uszkodzone pakiety w systemie Linux.

Te wskazówki i triki powinny w większości przypadków pomóc Ci się uwolnić. Wszystkie są dość uniwersalne, ale każda sytuacja jest inna, więc miej to na uwadze, próbując debugować własną sytuację.

Naprawianie uszkodzonych pakietów w Ubuntu / Mint / Debian

Apt ma kilka flag, których można użyć do naprawienia brakujących zależności lub pakietów, które zostały zepsute z tego czy innego powodu podczas instalacji. Częstym zastosowaniem byłoby tutaj zainstalowanie zewnętrznego pliku .deb i sprawdzenie, że ma on zależności, o których nie wiesz. Te zależności prawdopodobnie nie będą używane samodzielnie i dpkg będzie narzekać, że brakuje na nich paczki. W obu przypadkach możesz wypróbować następujące kroki.

Brak poprawki Ubuntu Apt

Najpierw uruchom aktualizację, aby upewnić się, że nie ma nowszych wersji wymaganych pakietów.

Następnie możesz spróbować zmusić Apt do znalezienia i naprawienia brakujących zależności lub uszkodzonych pakietów, gdy spróbuje ponownie zainstalować problematyczny pakiet. To faktycznie zainstaluje brakujące zależności i naprawi istniejące instalacje.

Innym miejscem, w którym mogą pojawić się błędy instalacji pakietu, jest proces instalacji. Za kulisami dpkg zajmuje się tą częścią, a nie Apt, więc logiczne byłoby myślenie, że gdy pakiet ulegnie awarii podczas konfiguracji, dpkg jest narzędziem, do którego należy się udać, aby go naprawić.

Rekonfiguracja Ubuntu DPKG

Zacznij od próby wymuszenia na dpkg ponownej konfiguracji uszkodzonych lub częściowo skonfigurowanych pakietów.

Jeśli to nie rozwiąże problemu, możesz przyjąć bardziej zdecydowane podejście. Zacznij od wylistowania pakietów, które dpkg oznaczył jako wymagające ponownej instalacji.

Powinieneś zobaczyć tam pakiety z problemami. Dopóki nie ma tam niczego, co nie wydaje się pasować, możesz wymusić usunięcie uszkodzonych opakowań.

Po zakończeniu dpkg spróbuj wyczyścić za pomocą Apt.

Przy odrobinie szczęścia wrócisz tam, gdzie zacząłeś. Nie otrzymasz uszkodzonych pakietów, które próbowałeś zainstalować, ale przynajmniej Apt będzie działał ponownie i możesz go użyć ponownie, aby spróbować zainstalować pakiet i jego zależności.

Stała blokada DPKG

Rzadziej występuje problem z blokadami dpkg, które uniemożliwiają zrobienie czegoś. Za każdym razem, gdy próbujesz użyć Apt lub dpkg, pojawia się błąd, że inna aplikacja już jest… kiedy tak nie jest.

W rzeczywistości łatwo jest usunąć plik blokady, który uniemożliwia korzystanie z Apt i robienie tego, co musisz zrobić ponownie. Czasami te pliki blokujące pozostają na miejscu po awarii instalacji lub awarii zasilania, wykolejając proces i uniemożliwiając automatyczne usunięcie pliku. W takim przypadku będziesz musiał to zrobić sam.

Na wszelki wypadek usuń blokadę w pamięci podręcznej.

Naprawianie uszkodzonych pakietów w Fedorze / CentOS / RHEL

Naprawianie uszkodzonych pakietów w Fedorze / CentOS / RHEL jest mniej powszechne, ponieważ yum i dnf wykonują świetną robotę, upewniając się, że pakiety instalują się poprawnie. Jednak czasami rzeczy się mieszają z używaniem paczki. Polecenie to zrobić w systemach opartych na RPM to:

Napraw uszkodzone pakiety Linux Rpm Va

ten -V Opcją jest weryfikacja, co oznacza, że ​​przejrzy i porówna informacje w zainstalowanych plikach z informacjami przechowywanymi w rpm Baza danych. Jest to trochę bezużyteczne, ponieważ zwykle daje długą listę plików, ale może dać ci miejsce do rozpoczęcia, jeśli masz problemy z konkretną aplikacją. Możesz uruchomić dnf reinstall w każdym pakiecie, który widzisz na tej liście, który może powodować problemy.

To spowoduje, że wszystkie metadane wygasną, więc będą przeszukiwać każde włączone repozytorium i szukać nowej wersji tego pakietu. Jeśli stwierdzi, że z tym pakietem są zepsute zależności, DNF prawdopodobnie poskarży się i poprosi o użycie --skip-broken flaga. Może to również oznaczać, że nie masz włączonego konkretnego repozytorium umożliwiającego zaewidencjonowanie zależności, więc może być konieczne przeprowadzenie tam pewnych badań.

Czytać  Dlaczego i jak edytować plik Sudoers w systemie Linux

Napraw uszkodzone pakiety w Arch

Chociaż menedżer pakietów Archa ma wiele podobieństw do Debiana, jest to zupełnie inna bestia. Pierwszym krokiem w diagnozowaniu problemu jest upewnienie się, że repozytoria są aktualne i wypróbowanie pełnej aktualizacji:

Jeśli twoje próby zainstalowania pakietu lub aktualizacji systemu nadal kończą się niepowodzeniem, musimy ustalić przyczynę zgodnie z tym, co powiedział terminal:

„Nieprawidłowa lub uszkodzona paczka”

Wprowadzanie zmian w „pacman.conf” w jakikolwiek sposób może spowodować problemy powodujące problemy pacman niepoprawnie oznaczać pakiety jako uszkodzone. Najbardziej prawdopodobnym winowajcą jest tutaj częściowy plik („.part”) w pamięci podręcznej menedżera pakietów, a Twoim rozwiązaniem jest jego usunięcie:

Zawsze istnieje możliwość, że pakiet, który próbujesz zainstalować, jest rzeczywiście uszkodzony i nie dostarcza prawidłowych metadanych do Arch. W takim przypadku będziesz musiał poczekać, aż opiekun pakietu go zaktualizuje. Jeśli pakiet jest zainstalowany w systemie i powoduje problemy podczas aktualizacji, usuń go za pomocą:

„Nie można zablokować bazy danych”

Podobnie jak Debian apt, menedżer pakietów Arch tworzy plik blokady podczas operacji. Jeśli wystąpiła awaria zasilania lub pacman doświadczyłeś silnego przerwania, z którego nie byłeś w stanie usunąć blokady, najprawdopodobniej zostawiasz plik blokady.

Najpierw sprawdź, czy jakiś proces na Twoim komputerze nadal używa tego pliku:

Pakiety Linux Lockpid

Na powyższym obrazku proces o identyfikatorze 121497 używa blokowania plików. Jeśli jesteś ciekawy procesu i chcesz uzyskać więcej informacji, użyj ps:

Pakiety Pspid dla Linuksa

W moim przypadku właścicielem pliku blokady jest inna instancja pacmana. Najbezpieczniejszym sposobem usunięcia blokady jest najpierw zabicie tego procesu:

Teraz, gdy proces jest martwy, usuń plik blokady:

Jesteś gotowy do drogi!

Czytać  Jak wybrać dystrybucję Linuksa (bez wypróbowywania ich wszystkich)

„Pliki w konflikcie / Plik istnieje w systemie plików”

Dzieje się tak podczas aktualizacji, w których pacman wykrywa konflikt. Zanim cokolwiek naprawisz, zwróć uwagę na ścieżkę do pliku, na który narzeka menedżer pakietów.

Pierwszą rzeczą, którą musimy dowiedzieć się, do kogo należy plik:

Jeśli jest własnością użytkownika, a nie innego pakietu, po prostu go usuń:

Jeśli należy do innego pakietu, najbezpieczniej jest poczekać, aż opiekun pakietu sam rozwiąże ten konflikt. Czasami jednak to nie wchodzi w grę i chcesz coś zrobić Teraz.

Najprostszym sposobem na osiągnięcie tego jest użycie --overwrite flaga w pacman. Po prostu wiem, że to jest ogólnie niebezpieczne i może to spowodować nieprawidłowe działanie niektórych aplikacji w systemie. Proponuję zrobić kopie zapasowe przed uruchomieniem tego.

ten --overwrite flaga pozwala menedżerowi pakietów Archa zignorować zasady własności dla konkretnego pliku i po prostu kontynuować aktualizację. Przykład:

Jeśli powyższe polecenie nie działa, zastąp nazwę pliku jego bezwzględną ścieżką. Niektórzy użytkownicy zgłaszali, że usunięcie ukośnika („/”) przed ścieżką powoduje, że polecenie działa, gdy jest uparte.

Częste pytania

1. Czy mogę zastosować poprawki Arch z pomocnikiem AUR?

Generalnie tak. Zastąp „pacman” swoim pomocnikiem AUR w poleceniach w tym przewodniku. Przykład:

2. Czy te instrukcje są bezpieczne?

W większości przypadków każda instrukcja tutaj jest tak samo bezpieczna, jak każda inna operacja zarządzania pakietami. Głównym wyjątkiem jest usuwanie plików blokady. Jeśli masz na to sposób, zawsze ważne jest, aby zabić wszystkie procesy, które mogą używać tych plików, przed ich usunięciem. Bądź świadomy tego, co robi twój system. Być może zapomniałeś o działającej gdzieś instancji apt lub pacman!

Najlepszą praktyką byłoby zawsze wykonanie kopii zapasowej systemu przed każdą aktualizacją.

3. Co powinienem zrobić, jeśli przerwę aktualizację?

Przerwij proces aktualizacji, naciskając kontrola + C , zabicie procesu menedżera pakietów lub przedwczesne zamknięcie terminala spowoduje pewien poziom uszkodzenia bazy danych pakietów, co może utrudnić ci pracę podczas próby zainstalowania czegoś innego. Aby to naprawić, wyczyść pamięć podręczną i powtórz aktualizację.

Na Debianie / Ubuntu / Mint / Pop! _OS / itp.:

W Fedorze / CentOS / RHEL:

W łuku:

Kończący się

Mam nadzieję, że jedna z tych poprawek zadziałała i będzie działać normalnie na twoim systemie Linux. Pamiętaj, że najlepszym sposobem radzenia sobie z całkowicie wymykającą się spod kontroli sytuacją jest próba powrotu do poprzedniego stanu. Nie próbuj przechodzić i dodawać więcej, aby rozwiązać przerwę, dodając więcej, chyba że wiesz dokładnie, co robisz. Najprawdopodobniej skończysz z bałaganem zepsutych rzeczy, które będą trudniejsze do rozwiązania.

Może być również konieczne wyczyszczenie systemu Linux, aby pozbyć się niepotrzebnych i uszkodzonych pakietów. Jeśli przyczyną jest stary komputer, który nie jest zgodny z nowszym oprogramowaniem, możesz również skorzystać z tych trzech sposobów, aby dobrze wykorzystać stary komputer.

Czy ten artykuł jest przydatny?