Jak zainstalować lokalne pakiety .deb za pomocą apt-get

144

Czy jest jakiś sposób na zainstalowanie pakietu paczek na twoim HD za pomocą apt-get apt-get install ./package.deb?

Jeśli nie, jak radzić sobie z zależnościami w bardzo bardzo prosty sposób?

Louis
źródło
To działa teraz. Jeśli nadal korzystasz z SuperUser, czy możesz zaktualizować zaakceptowaną odpowiedź? Patrz poniżej.
mikemaccana

Odpowiedzi:

121

zazwyczaj to robię dpkg -i <deb file>, nie powie, że potrzebuje zależności. Potem, kiedy to zrobisz apt-get update, powiesz na końcu coś w rodzaju „zależności są gotowe do zainstalowania”. Myślę, że wtedy zaleca się użycie apt-get install -f.

Gdy to zrobisz, używam dpkg -iponownie.

Działa dobrze dla mnie przez ostatnie kilka lat.

edycja: patrząc nieco dalej, najwyraźniej narzędzie o nazwie gdebimoże to zrobić jako gdebi [deb file].

Sirex
źródło
1
Dzięki zrobiłem to samo przez „błąd” dpkg, a następnie apt-get install -f i działało.
Louis,
2
gdebijest dla mnie sprawdzone i najprostsze, jakie do tej pory widziałem.
ctrl-alt-delor
55

Sirex ma mniej więcej rację, ale jego odpowiedź nie jest jasna. Właśnie to rozwiązałem, więc oto co zrobiłem:

sudo dpkg -i /path/to/filename.deb

Jeśli to się nie powiedzie z komunikatem o pakiecie w zależności od czegoś, co nie jest zainstalowane, prawdopodobnie możesz to naprawić, jeśli uruchomisz

sudo apt-get -f install

Spowoduje to zainstalowanie zależności (zakładając, że są one dostępne w repozytoriach, o których wie Twój system) ORAZ pakiet, który pierwotnie chciałeś zainstalować („f” to opcja „fix”, a „y” to „zakładaj tak na pytania” lub „nie pytaj mnie, czy jest w porządku, po prostu zainstaluj to już” - bardzo przydatne w przypadku cichych instalacji ze skryptami). W systemie, w którym byłem, nie było potrzeby ponownego uruchamiania dpkg (Ubuntu lucid 10.04).

Interesujące jest dla mnie to, że jeśli włączysz opcję -f podczas uruchamiania sudo apt-get install, wyświetli ona listę Twojego pakietu jako nieskonfigurowanego z powodu nierozwiązanej zależności, a także zasugeruje pomocne:Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Edytować:

Jeśli chcesz zainstalować bez konieczności odpowiedzieć „y” na wszystkie pytania, można dodać ymodyfikator jak pierwotnie obejmował: sudo apt-get -fy install. Jednak komentator zauważył, że apt czasami sugeruje odinstalowanie całego środowiska pulpitu. Robiłem tę pracę na maszynie wirtualnej i nie miałem tego obawy, ale ten post został zaktualizowany, aby był nieco bardziej ostrożny.

Akrikos
źródło
Jeśli mam wszystkie pliki pakietu już w katalogu, czy istnieje sposób, aby powiedzieć aptowi, że jest to nowe repozytorium, więc nie będę musiał zmuszać go do instalowania czegokolwiek bez zależności?
Berry Tsakala
2
Przepraszam, ale nie wiem. Proponuję zadać to pytanie jako kolejne pytanie na najwyższym poziomie.
Akrikos
Szalony dziwny, że jest to wymagane. W przypadku Raspian będzie to wymagało sudo (zarówno dla dpkg, jak i apt-get): sudo dpkg -i mypackages.debitd.
Brent Faust
@ Dostęp do roota @Rubistro jest wymagany we wszystkich systemach. Sądzę, że w odpowiedziach założono, że polecenia są wykonywane przez roota (np. Z interaktywnej powłoki roota lub skryptu, który wykonuje się jako root).
Amos Shapira,
2
Dla własnego dobra nie dodawaj -yopcji. Często zdarza się, że apt sugeruje na przykład odinstalowanie całego środowiska pulpitu, jeśli spróbujesz tego z niewłaściwym pakietem w niewłaściwym czasie (przynajmniej na Debianie).
oseiskar
45

Możesz również zainstalować plik .deb za pomocą gdebi. Uruchom poniższe polecenia, aby zainstalować gdebi,

sudo apt-get install gdebi-core

Zainstaluj pakiety .deb za pomocą gdebi,

sudo gdebi /path/to/filename.deb

Naprawia także zależności.

Avinash Raj
źródło
4
Zauważ, że gdebi bierze tylko jeden argument i po cichu upuszcza resztę na podłogę. Oznacza to, że jeśli instalujesz wiele debetów jednocześnie (być może dlatego, że są od siebie zależne), musisz ostrożnie tworzyć gdebipolecenia, które pozwolą im zainstalować. imo ta połowa pokonuje cel gdebi, ale nadal może ci się przydać w jednym pliku
Anthony Sottile
@Anthony zatemfind -name *.deb -exec gdebi {} \;
jjmontes
3
@jjmontes, który zadziała tylko wtedy, gdy współzależności są w kolejności alfabetycznej, którą postawiłbym, jest dość rzadki
Anthony Sottile
Śledziłem to freesoftwaremagazine.com/articles/… (błąd lokalnego repozytorium musiał znajdować się w / var / www / html / debs) i synaptic próbował nadal pobierać ze zdalnego, nawet bez internetu, więc gdebi działał świetnie z lokalnym repo ! także pliki .deb musiały byćchmod +r *.deb
Aquarius Power
34

Tak, proponowane polecenie jest poprawne.

sudo apt-get install ./package.deb

lub

sudo apt install ./package.deb

zainstaluje pakiet otrzymany z innego źródła niż APT i jednocześnie użyje możliwości APT, aby automatycznie rozwiązać swoje zależności. Niestety ta apt-getfunkcja nie jest udokumentowana na stronie man .

Zobacz https://askubuntu.com/a/769542/250300 i https://askubuntu.com/a/795048/250300 szczegóły.

Melebius
źródło
8
To powinna być zaakceptowana odpowiedź.
Peter
Która wersja apt-get dodała tę możliwość?
Kurt Fitzner
@KurtFitzner Został dodany w APT 1.1 na ogłoszenie o wydaniu (znalezione poprzez askubuntu.com/a/795048/250300 ).
Melebius