Czy „apt-get” jest przestarzałe?


54

Ostatnio widziałem wiele osób

sudo apt

zamiast

sudo apt-get

Ponadto Ubuntu ciągle mówi mi, żebym instalował różne rzeczy sudo apt

The program 'foo' is currently not installed. You can install it by typing:
sudo apt install foo

(pamiętaj, foo jest symbolem zastępczym, a nie aplikacją)

Po tej popularności w społeczności związanej z używaniem aptzamiast apt-get, zaczynam myśleć, że apt-get jest przestarzały i nie może być dłużej używany w moich programach bash.

W moich programach bash

  • czy muszę zastąpić wszystkie apt-getpolecenia apt?
  • jest apt-getniebezpieczny?
  • czy moje programy będą nadal działać?

7
Zobacz ten powiązany post: askubuntu.com/q/445384/295286
Sergiy Kolodyazhnyy

Apt jest ładniejszy niż apt-get
WinEunuuchs2Unix,

2
Powodem, dla którego niektórzy użytkownicy (tacy jak ja) używają aptjest to, że jest krótszy niż apt-get. Mniej naciśnięć klawiszy, mniej czasu. Używam apt-getdo takich rzeczy check.
Gallifreyan,

Odpowiedzi:


36

apt-getjest niższy poziom i kompatybilny wstecz. aptjest lepszy dla użytkowników końcowych i nie wymaga żadnych dodatkowych funkcji, które są w nim zawarte apt-get.

Oba są w porządku. apt-getnie jest przestarzałe, ale instalacja 15.10 to :)

Edycja: Ze strony podręcznika użytkownika apt (8)

Polecenie apt ma być przyjemne dla użytkowników końcowych i nie musi być kompatybilne wstecz jak apt-get (8).

Edycja2: aptzostała zaprojektowana, aby naprawić niektóre podstawowe wady zależności apt-get. Ponieważ jest to opakowanie, aptma wyższy poziom, a także traci pewne kompatybilności wstecz i funkcje skryptowe.


19
Jakich funkcji nie ma w apt-get, a nie w apt? A w jaki sposób apt jest lepszy dla użytkownika końcowego?
Anwar

4
Ponownie, apt-get nie jest niższy poziom niż apt. To wprowadzająca w błąd informacja. apt jest na tym samym poziomie, co apt-get, a apt to nic innego jak opakowanie na apt-get i apt-cache
Anwar

@Anwar: Istnieją różnice. Jeden przykład: apt upgradeapt-get upgrade, ponieważ pierwszy instaluje nowe pakiety, a drugi nie.
Gunnar Hjalmarsson

26
@Anwar Jeśli aptchodzi o opakowanie, apt-getto zdecydowanie jest na wyższym poziomie.
Tavian Barnes

2
@Anwar To właściwie definicja „wyższego poziomu” lub „niższego poziomu”. apt jest na wyższym poziomie, ponieważ otacza apt-get. Pewnym testem jest to, że jeśli twój apt zostanie uszkodzony, apt-get nadal będzie działał - ale nie odwrotnie.
Sir Robert

47

Nie, apt-getnie jest przestarzałe. Strona podręcznika man aptma to do powiedzenia na temat aptvs. apt-get(i apt-cache):

WYKORZYSTANIE SKRYPTÓW I RÓŻNICE OD INNYCH NARZĘDZI APT

Komenda apt (8) została zaprojektowana jako narzędzie użytkownika końcowego i może zmieniać zachowanie między wersjami. Chociaż stara się nie zerwać z kompatybilnością wsteczną, nie jest to również gwarantowane, jeśli zmiana wydaje się korzystna dla interaktywnego użytkowania.

Wszystkie funkcje apt (8) są również dostępne w dedykowanych narzędziach APT, takich jak apt-get (8) i apt-cache (8). apt (8) po prostu zmienia domyślną wartość niektórych opcji (patrz apt.conf (5), a konkretnie zakres binarny). Dlatego powinieneś preferować używanie tych poleceń (potencjalnie z włączonymi dodatkowymi opcjami) w swoich skryptach, ponieważ zachowują one możliwie jak największą zgodność z poprzednimi wersjami.

apt daje również ostrzeżenie, które mówi

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

jeśli wykryje, że jest fajka. Na przykład:

$ apt show python | grep Package

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Package: python
APT-Sources: http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

Jeśli chodzi o twoje pytania,

czy muszę zastąpić wszystkie polecenia apt-get apt?

Nie, nie trzeba wymieniać apt-getz apt. Raczej jeśli używasz go w skryptach, powinieneś trzymać się apt-getgo, ponieważ ma stabilny interfejs API CLI i gwarantuje zgodność wsteczną.

jest apt-getniebezpieczny?

aptjest tak niebezpieczny jak apt-get: powinieneś instalować oprogramowanie tylko z zaufanych źródeł.

czy mogę używać aptw Ubuntu 15.10?

Tak, możesz. Problem polega na tym, że nadal używasz Ubuntu 15.10, który nie jest już obsługiwany! Zaktualizuj do 16.04, która jest wersją LTS.

czy moje programy będą nadal działać?

Przez programy zakładam, że masz na myśli skrypty. Tak, nadal będą działać, ponieważ apt-getnie jest przestarzałe. W rzeczywistości powinieneś używać apt-getskryptów dla kompatybilności wstecznej, jak sugeruje aptstrona man.


7

apti apt-getsą w zasadzie tym samym menedżerem pakietów, to co robią jest takie samo.

Różnica polega na tym, że aptzawiera również funkcje np. apt-cacheI ma ładniejszy wygląd.

Jednak aptnie powinien być jeszcze używany w skryptach, przynajmniej jeśli chcesz przeanalizować jego wynik, ponieważ jest on wciąż w fazie rozwoju, a format wyjściowy może się jeszcze zmienić. Bash-autouzupełnianie tab również nie działa jeszcze z wieloma aptpoleceniami.

Możesz użyć obu, w zależności od tego, co wolisz.


apt zapewnia funkcje apt-cache z dodatkowym opóźnieniem! spróbuj użyć pakietu apt apt i apt-cache search. To samo dotyczy polityki
Anwar

@Anwar Nie widzę żadnej różnicy przy użyciu apt(-cache) policy. Z apt(-cache) search, istnieje różnica prędkości, tak, ale wynik aptjest sortowany i ładnie sformatowany w zamian.
Bajt Dowódca

-1

Jak widać z innych odpowiedzi, możesz użyć jednego aptlub apt-get. Chciałbym dodać, że kiedy próbowałem aptkilka lat temu, zauważyłem, że rozwiązywało konflikty w inny sposób niż apt-getto. Kiedy sytuacja była trudna (coś trzeba było usunąć, pewna paczka została przypięta do konkretnej wersji, obniżyłem klasę pakietu lub użyłem mieszanki paczek z różnych wydań), aptzwykle chciałem usunąć mnóstwo paczek lub nie mogłem rozwiązać problemu konflikt.

Ponieważ apt-getbyło znacznie lepiej w takich sytuacjach i nie miało żadnych wad, poddałem się apti apt-getzamiast tego używałem. To było kilka lat temu, więc mogło się to zmienić, ale jeśli napotkasz podobną sytuację, możesz spróbować obu i sprawdzić, który z nich może lepiej rozwiązać konflikt.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.