Pobiegłem sudo pacman -Syu
i dostałem kilka interesujących błędów odczytu:
błąd: nie udało się zatwierdzić transakcji (pliki powodujące konflikt)
i długą listę plików, po której następuje exists in filesystem
. Pełne wyjście znajduje się tutaj: http://ix.io/lLw
Wygląda na to, że wiele z tych plików nie jest skojarzonych z pakietem, gdy je sprawdziłem pacman -Qo <path-to-file>
, ale nie sprawdziłem ich wszystkich. Miałem słabe połączenie, gdy uruchomiłem pacman -Syu
, ale otrzymuję te same błędy, kiedy zaktualizowałem później: http://ix.io/lLx
Co powinienem zrobić? Czy powinienem sprawdzić wszystkie pliki i usunąć te, które nie mają powiązanego pakietu? Czy powinienem wymusić aktualizację (z sudo pacman -S --force <package-name>
?)
Aktualizacja
Próbowałem uruchomić sudo pacman -S --force <package-name>
i otrzymałem to:
[my-pc]/home/average-joe$ pacman -Qo /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info
error: No package owns /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info
Wygląda na to, pacman -S --force <package
że nie zastępuje katalogów zawierających pliki. Od mężczyzny:
Użycie opcji --force nie zezwoli na zastąpienie katalogu plikiem lub instalowanie pakietów zawierających sprzeczne pliki i katalogi.
Czy powinienem po prostu usunąć sprzeczne katalogi? (nie mają powiązanych pakietów)
źródło
/usr/local/
zamiast/usr/
)sudo pip install -U docker-compose==1.5.0rc3
na tej stronie . Być możesudo pip install
koliduje z Pacmanem?-S
aktualizacje (częściowe instalacje itp.) pozwolą ci na taki scenariusz. Sprawa mnie--force
działała cały czas.Odpowiedzi:
Ok, wygląda na to, że
sudo pacman -S --force <package-name>
działa, ale nie rozwiązuje konfliktów katalogów. W takich przypadkach uruchamianiesudo rm -rf
w katalogach będących w konflikcie, a następniesudo pacman -S --force <package-name>
prace.Teraz moje
pacman -Syu
postanawia dobrze.źródło
sudo pacman -Syu --force
pracował dla mnie, ale nadpisywanie nie zostało rozpoznane.tl; dr: przed uruchomieniem odinstaluj aplikację powodującą konflikt
pacman
.pacman
(i inni menedżerowie pakietów) przechowują indeks pakietów i plików , którymi zarządzają (pacman --query --list
). Niektóre pliki, takie jak konfiguracja, zostaną oznaczone jako modyfikowalne i nie zostaną nadpisane podczas aktualizacji (z wyjątkiem szczególnych okoliczności, w których menedżer pakietów zazwyczaj usuwa stary plik przed utworzeniem nowego). Inne pliki zostaną oznaczone jako niemodyfikowalne. Jeśli inna aplikacja zmieni te pliki w jakikolwiek sposób bez odpowiedniej aktualizacji indeksu, menedżer pakietów nie będzie wiedział, co zrobić z tymi plikami podczas aktualizacji.Wiele aplikacji zainstalowanych przy użyciu standardowego
./configure && make && sudo make install
wzorca można odinstalować za pomocąsudo make uninstall
. Jeśli aplikacja została zainstalowana w inny sposób, być może będziesz musiał ją odinstalować. Zasadniczo dobrym pomysłem może być przechowywanie kopii plików instalacyjnych gdzieś (na przykład~/install
), aby w takich przypadkach móc je niezawodnie odinstalować. Usunięcie konfliktu plików prawdopodobnie spowoduje pozostawienie innych plików, co może spowodować inne problemy.Podczas instalowania oprogramowania za pomocą innych menedżerów pakietów istnieją sposoby odizolowania ich od plików systemowych. Jest to sprawdzona najlepsza praktyka, na przykład podczas tworzenia oprogramowania, w której naprawdę chcesz zachować spójność wersji i unikać konfliktów z innym oprogramowaniem. Przykłady obejmują:
źródło
sudo pip install
rozkazu. Być może powinienem unikać używania pip z sudo?Z tego powodu instalowałem pakiety, które zwykle instaluję za pomocą pip za pomocą pacmana. Ale niektórych pakietów nie można znaleźć w repozytoriach Pacman. Myślę, że powinniśmy unikać instalowania pipa z uprawnieniami sudo i istead:
Flaga --user powoduje, że zamiast tego instaluje się pakiety instalacyjne w katalogu domowym, co nie wymaga żadnych specjalnych uprawnień. https://stackoverflow.com/questions/42988977/what-is-the-purpose-pip-install-user
źródło
TLDR;
sudo pacman -Syu
ponownie.edytowane, aby dodać TLDR i naprawić literówki
Chociaż jestem całkiem pewien, że nie robiłem nic głupiego, miałem ten problem może za każdym razem, gdy próbowałem zaktualizować, odkąd korzystałem z Manjaro; trzy lub cztery razy w ciągu dwóch miesięcy. Chodzi o to, że to naprawia.
Uzyskaj listę swoich plików.
Gdy aktualizacja nie powiedzie się w oknie terminala, otrzymasz:
... i dużo więcej.
Skopiuj dane wyjściowe z terminala i umieść je w pliku. Użyłem nano i nazwałem moje „pliki” jak w ~ / work / files .
Usuń obce informacje:
cat files | awk '{print $2}' >> ~/work/files2
To pobiera drugie „słowo” z każdej linii i drukuje je do plików2.
Zajmij się plikami
Możesz je usunąć, przenieść lub zmienić ich nazwę.
Jeśli coś się psuje, najłatwiej to naprawić, jeśli zepsujemy go, przenosząc go zamiast usuwając lub zmieniając jego nazwę:
mkdir ~/work/oldfiles while read -r file; do sudo mv -- "$file" ~/work/oldfiles/$file; done < files2
Jeśli naprawdę chcesz je usunąć, czego nie ma powodu ( NIEBEZPIECZEŃSTWO NIEBEZPIECZEŃSTWO ): podczas odczytu pliku -r; do sudo rm - "$ file"; zrobione <pliki2
Aktualizacja
Aby - overwrite zadziałało, co musimy zrobić, aby Pacman zdał sobie sprawę, że pakiet nie jest uszkodzony, potrzebujesz następującej składni:
sudo pacman -S package_name --overwrite /location/of/thing
sudo pacman -S libidn2 --overwrite /usr/lib/libidn2.so.0
sudo pacman -S libx000 --overwrite /usr/lib/libx000.so.f.u.loser
Miałem ładny problem, gdy po usunięciu dowiązania symbolicznego libidn2.so.0 nic nie działało, a kiedy go odłożyłem, pojawia się błąd „istnieje w systemie plików”. Powyższe, z opcją --overwrite, działało dla mnie.
Wreszcie:
sudo pacman -Syu
źródło
Po tym, jak pacman w końcu wycofał
--force
opcję i aby--overwrite
opcja zastępcza działała zgodnie z oczekiwaniami, należy odnotować następujący wzór użycia.Równoważne polecenie odtworzenia
--force
opcji, która ślepo zastąpi wszystko, co powoduje konflikt, będzie:Lub
Najtrudniejszą częścią jest ucieczka przed globem, aby najpierw nie rozwinąć powłoki.
źródło
Jeśli masz wiele plików takich jak ja,
rozwiązuje wszystkie problemy.
źródło