Właśnie dodałem repozytorium PPA dla wersji programistycznej GIMP, ale pojawia się ten błąd:
$ apt-get update && apt-get upgrade
...
The following packages have been kept back:
gimp gimp-data libgegl-0.0-0 libgimp2.0
Dlaczego i jak mogę to rozwiązać, aby móc używać najnowszej wersji zamiast tej, którą mam teraz?
apt
package-management
jfoucher
źródło
źródło
Odpowiedzi:
Zgodnie z artykułem na debian-administration.org ,
Ostrożne rozwiązanie 1:
Zgodnie z odpowiedzią Pablo możesz uruchomić
sudo apt-get --with-new-pkgs upgrade
, a on zainstaluje pakiety, które pozostały z powrotem.Ma to tę zaletę, że nie oznacza zatrzymanych pakietów jako „ręcznie zainstalowanych”, co może zmusić więcej interwencji użytkownika w dół linii (patrz komentarze).
Jeśli rozwiązanie Pablo działa dla Ciebie, proszę go głosować. Jeśli nie, proszę skomentować, co poszło nie tak.
Ostrożne rozwiązanie 2:
Ostrożnym rozwiązaniem jest uruchomienie
sudo apt-get install <list of packages kept back>
. W większości przypadków zapewni to zatrzymanym pakietom to, czego potrzebują do udanej aktualizacji.Agresywne rozwiązanie:
Uruchomione zostanie bardziej agresywne rozwiązanie
sudo apt-get dist-upgrade
, które wymusi instalację tych nowych zależności.Ale
dist-upgrade
może być dość niebezpieczne . W przeciwieństwie do aktualizacji może usuwać pakiety w celu rozwiązania złożonych sytuacji zależności. W przeciwieństwie do ciebie, APT nie zawsze jest wystarczająco inteligentny, aby wiedzieć, czy te dodatki i usunięcia mogą siać spustoszenie.Jeśli więc znajdziesz się w miejscu, w którym „ostrożne rozwiązanie” nie działa,
dist-upgrade
może działać ... ale prawdopodobnie lepiej jest dowiedzieć się nieco więcej o APT i rozwiązać problemy z zależnościami „ręcznie”, instalując i usuwając pakiety na zasadzie indywidualnej.Pomyśl o tym jak o naprawie samochodu ... jeśli masz czas i poradzisz sobie z kluczem, poczujesz spokój, czytając i wykonując naprawę samodzielnie. Jeśli masz szczęście, możesz zostawić samochód z kuzynem
dist-upgrade
i mieć nadzieję, że zna się na rzeczy.źródło
dist-upgrade
w stabilnym systemie, jak wskazało wiele innych odpowiedzi poniżej. Osobiście uważam, że istnieje prostsza / bezpieczniejsza odpowiedź, która wymaga wypromowania: apt-get install <lista pkgs>sudo apt-get dist-upgrade
można również usuwać pakiety. W związku z tym najlepiej zawsze sprawdzać listę zmian, które zostaną wprowadzone przed ich wyrażeniem zgody podczas działaniasudo apt-get dist-upgrade
.apt-get upgrade
mogę usunąć pakiety? Zawsze tak będzie, gdy w przeciwnym razie wystąpi konflikt wersji. Pomyśl ollvm3.6
vs.llvm3.6v5
(z „v5” oznacza, że został skompilowanygcc 5
). Te dwa nie mogą współistnieć , tylko jedno z nich może być przechowywane w systemie. Tak, więcdist-upgrade
może również usunąć niektóre pakiety, ale nie tylkodist-upgrade
to by to zrobiło; w pewnych okolicznościachupgrade
również.Ilekroć otrzymasz od polecenia
apt-get upgrade
wiadomośćnastępnie, aby zaktualizować jeden lub wszystkie zatrzymane pakiety, bez przeprowadzania aktualizacji dystrybucji (to jest to
dist-upgrade
, o ile dobrze pamiętam), wydaje polecenie:rozwiąże to problemy z wycofaniem i poprosi o zainstalowanie dodatkowych pakietów itp., jak wyjaśniono w innych odpowiedziach.
źródło
apt-get upgrade <list of packages>
, jeśli je powtórzęapt-get upgrade
, wyświetli listę tych pakietów, które nie są już wymagane, i których mogę użyćapt autoremove
do ich usunięcia, co robię, a następnie jeden ostatniapt-get upgrade
i nie są one już wymienione jako powstrzymywane ... Bardzo dziwne. jakieś pomysły?apt-get install
usuwa również pakiety, gdy jest to konieczne do rozwiązania poważnych zależności, czy też musiałbyś uruchomić osobneapt-get remove
polecenie, aby wykonać tę część procesu aktualizacji?apt autoremove
następnie usuwa te nieużywane zależności.sudo apt-get --with-new-pkgs upgrade
co nie miałoby skutków ubocznych powodujących oznaczanie pakietów jako zainstalowane ręcznieapt-get dist-upgrade
jest niebezpieczny dla stabilnego środowiska,Przypadek użycia: aktualizacja jądra nie jest przechowywana, po prostu chcesz zaktualizować jądro, nie chcesz aktualizować całej dystrybucji.
Lepszy sposób obsługi zatrzymanego pakietu:
Jeśli zatrzymałeś pakiet, powinieneś zobaczyć pakiety z możliwością aktualizacji na górze listy.
Zainstalowano Twój pakiet wycofany.
źródło
apt-get dist-upgrade
jest niebezpieczne tylko wtedy, gdy masz złe repozytoria/etc/apt/sources.list*
. Warto wiedzieć, żedist-upgrade
uaktualnia wszystkie pakiety, ale przy domyślnych repozytoriach powinno to być w porządku. Nie używającdist-upgrade
może być niebezpieczne, ponieważ może pominięcia aktualizacji zabezpieczeń.apt-get dist-upgrade
można usuwać i dodawać pakiety, ale nie jest to naprawdę niebezpieczne. Każde polecenie instalacji pakietu może spowodować poważne szkody, jeśli masz problemy zsources.list
plikiem ! Zwykłeapt-get upgrade
polecenie zainstaluje dowolny pakiet z dowolnego włączonego źródła oprogramowania;dist-upgrade
nie jest w ten sposób wyjątkowy. Ponadto używanieaptitude
do wykonywania dowolnej operacji, przynajmniej na amd64, jest znacznie bardziej niebezpieczne niż uruchamianieapt-get dist-upgrade
w wydaniu, w którym błąd 831768 nie został naprawiony.sudo aptitude safe-upgrade
Dlaczego nie wypróbujesz tej odpowiedzi na Unix SE :
apt
polecenie ( przyjazna alternatywa dlaapt-get
) udostępnij tę opcję.Użycie
apt install <pkg>
zamiast tego oznaczy pkg jako „ręcznie zainstalowany” !! Aby oznaczyć go ponownie jako „automatycznie zainstalowany”, użyjapt-mark auto <pkg>
(zobacz także podkomendęshowmanual
). Więcej informacji na temat tej odpowiedzi .źródło
apt-mark auto <pkg>
powinno być konieczne jedynie do oznaczenia pakietu jako automatycznie zainstalowanego ( tutaj strona man ).sudo apt-get --with-new-pkgs upgrade
nadal wyświetla paczki jako „cofnięte”. Brak komunikatu o błędzie.Zwykle są dwa powody, dla których możesz zobaczyć tę wiadomość.
Jeśli aktualizacja programu (przez
sudo apt-get upgrade
) spowoduje dodanie lub usunięcie pakietów, program zostanie wstrzymany. Możesz użyćsudo apt-get dist-upgrade
w tym przypadku, który następnie zaoferuje dodanie lub usunięcie dodatkowych programów.Jest to dość powszechne i zwykle nie stanowi problemu. Czasami (szczególnie podczas Ubuntu alpha)
dist-upgrade
zaoferuje usunięcie wielu innych programów, w którym to przypadku prawdopodobnie chcesz je anulować.Jeśli program zależy od pakietów lub wersji, które nie są dostępne, program zostanie wstrzymany. Naprawdę nie możesz nic zrobić, tylko czekać w takich okolicznościach, ponieważ pakiet zasadniczo nie nadaje się do odinstalowania. Może się to zdarzyć, gdy pakiety zostaną dodane do repozytorium w niewłaściwym porządku, gdy nazwa pakietu zostanie zmieniona lub gdy pakiet przestanie zapewniać pakiet wirtualny.
źródło
apt-get dist-upgrade
odmówił instalacji. Sprawdzanie pakietu za pomocą aptitude wykazało, że zależy to od pakietu, który nie jest dostępny. Chyba będę musiał poczekać.Możesz także spróbować:
sudo aptitude safe-upgrade
.Jest to bezpieczniejsze niż
full-upgrade
(pierwotnie nazwana dist-upgrade), ponieważ „pakiety nie zostaną usunięte, chyba że nie będą używane”.Od
man aptitude
:źródło
Najprawdopodobniej pakiety te są wstrzymywane, ponieważ ich instalacja spowodowałaby niespójności zależności. Może się to zdarzyć, ponieważ używasz archiwów w ramach aktywnego programowania, ppas, lub ponieważ używane lustro nie jest w pełni zaktualizowane.
W ostatnim przypadku wystarczy poczekać, gdy zależności zostaną rozwiązane, zostanie ono zainstalowane następnym razem.
Edytować:
Istnieje inna możliwość, pakiety mogą zostać wstrzymane, jeśli zostaną na nich wstrzymane lub zostaną przypięte.
źródło
dist-upgrade
. Jeśli nadal chceszdist-upgrade
, przejrzyj NOWE pakiety do zainstalowania i pakiety do usunięcia, zanim przejdziesz dalej.apt-get install --reinstall <packages>
.Dzieje się tak zwykle dlatego, że pakiet dodał zależność, a aktualizacja nie chce dodawać go bez pozwolenia.
Jeśli uruchomisz:
Następnie nowe wersje powinny zostać zainstalowane wraz z ich nową zależnością.
źródło
To zadziałało dla mnie
źródło
aptitude upgrade
dla mnie pracował.Ubuntu 14.04
i nie mamaptitude
wiersza poleceniaapt-get dist-upgrade
przekazał mi tę samą wiadomość, ale to dla mnie rozwiązało. Miałem pakiet, który łamał aktualizację innego pakietu. Nie potrzebowałem tego, który zainstalowałem, więcaptitude full-upgrade
dałem mi możliwość usunięcia go, aby mógł zaktualizować wszystko inne.Przekonałem się, że aptitude lepiej radzi sobie z aktualizacją pakietów, jeśli wersje różnią się tylko nieznacznie. Miałem taką sytuację:
To spowodowało, że apt-get wstrzymał aktualizację, ale aptitude zaktualizował ją w porządku. Nie jestem pewien, którego algorytmu używa się do ustalenia, czy pakiet powinien zostać zaktualizowany, czy nie. Myślę, że ci dwaj mieli tę samą wersję, tylko inny „kwalifikator”. Ale w każdym razie apt-get nie zaktualizowałby go, ale aptitude zrobiłby to.
źródło
W moim przypadku wstrzymywane były pakiety związane z nagłówkami Linuksa i jądrem. Doszedłem do tego, próbując rozwiązać problem z czerwonym wykrzyknikiem w obszarze powiadomień i niemożnością aktualizacji pakietów.
Aby go rozwiązać, nie musiałem używać ani dist-upgrade ani manual apt-get install xxx .
To, co zrobiłem i pomogłem, było proste i czyste :
Musiałem ręcznie potwierdzić aktualizację Grub i jej konfigurację.
Potem przez chwilę pracowałem z komputerem, a potem znów pojawiło się standardowe okno dialogowe aktualizacji zawierające sekcję „Ubuntu base” z jądrem i powiązane. Aktualizacja została wykonana bez żadnych problemów i nie widzę już żadnych wstrzymanych pakietów.
Ponadto bardzo ważne jest, aby pamiętać, że te * aktualizacje buntu, w tym aktualizacje jądra, są wrażliwe na hibernację - mam ten problem kilka razy i zawsze rozwiązuję go poprzez ponowne uruchomienie komputera i wykonanie powyższych kroków.
Więc może to wystarczy ?!
(opisana tutaj sytuacja dotyczy mojego Xubuntu 15.10 pod koniec grudnia 2015 r.)
źródło
Natknąłem się na ten problem, gdy wydano nowe jądro. (Być może dlatego, że mam włączone aktualizacje niestabilne.) Znalazłem najprostszy sposób, aby przeprowadzić instalację za pomocą graficznego instalatora Ubuntu (
update-manager
).źródło
Natknąłem się na ten problem za pomocą synaptic, ponieważ wydawało się, że się zawiesił i aby spróbować naprawić, uruchomiłem ponownie i spróbowałem ponownie.
Potem odkryłem wiadomość informacyjną jako część pakietu z instrukcjami dla mnie po instalacji.
Musiałem nacisnąć „ szczegóły ”, a następnie „ q ”, aby wyjść po przeczytaniu wiadomości, a potem wszystko poszło normalnie.
źródło
Wygląda to na prawidłowy sposób ponownej instalacji zatrzymanego pakietu:
apt-get install --reinstall libjpeg-progs
Przynajmniej działało to dla mnie, kiedy
libjpeg-progs
utknąłem po aktualizacji z Ubuntu 14.04 do 16.04. Jestem pewien, że możesz zrobić to samo z każdą inną aplikacją, która została cofnięta, npgimp
.Źródło: https://ubuntuforums.org/showthread.php?t=2321702&p=13476183#post13476183
źródło
--reinstall
.W rzeczywistości potrzebny jest przełącznik,
dselect-upgrade
który instaluje / usuwa zależności dla danego zestawu pakietów.źródło
Przeczytałem wszystkie posty i odkryłem, że istnieje wiele interesujących wyjaśnień. Próbowałem ich wszystkich, ale nie przyniosłem żadnych rezultatów. Mam problem z narzędziami mysql, których nie mogłem zaktualizować. Aktualizacja została zaproponowana przez system. Więc chcę pokazać kilka kroków, aby to zrobić. Oczywiście powtórzę za chwilę wszystkie wyżej wymienione posty. Oto mój błąd, tak, znalazłem go już w istniejących postach, ale co powinienem zrobić dalej?
Następnym krokiem jest:
Wyniki możemy zobaczyć na obrazku poniżej. Usuwam pakiet i sprawdzam to za pomocą polecenia:
Wyniki - w porządku! Później poprawnie zainstalowałem nową wersję pakietu.
W ten sposób myślę, że może pomóc większej liczbie nowych osób, ponieważ mając inne pakiety, możemy wykonać te same kroki.
Raz przepraszam, kiedy powtórzyłem w niektórych miejscach inne posty.
źródło
{}
przycisk w edytorze, aby go poprawnie sformatować.Ubuntu 18.04 zapewnia nowszą, usprawnioną składnię, dzięki
apt
której można zamiast tego użyćapt-get
.źródło