Dpkg -i veya apt ile deb dosyası nasıl kurulur?


601

Kurulum için bir deb paketim var.

Ben tarafından yüklemek Shall dpkg -i my.debveya apt tarafından?

Her ikisi de yazılım bağımlılığı problemini iyi idare edecek mi?

Eğer apt ise, deb'den apt ile nasıl yükleyebilirim?


aptitudeGereksiz paketleri de kaldıran kullanabilirsiniz .
Ramesh

2
Doğrudan kullanmamanı tavsiye ederim dpkg. Tek borç durumunda, gdebi ile gidin ve çoklu borç durumunda APT yerel deposuna gidin .
Pandya

5
why ......... @Pandya
Tim

2
@Tim çünkü dpkgbağımlılıkları çözmez.
Pandya

1
@Tim gdebi, eksik bağımlılıkları tanımlar, indirebilir ve kurabilir (apt kullanarak), install & configuration (dpkg kullanarak).
Pandya

Yanıtlar:


771

Bir aptpaketi yüklemek için kullandığınızda, kaputun altında kullanır dpkg. Apt kullanarak bir paket kurduğunuzda, önce tüm bağımlılıkların bir listesini oluşturur ve onu depodan indirir.

İndirme işlemi bittiğinde dpkg, tüm bağımlılıkları yerine getirerek tüm bu dosyaları kurmaya çağırır .

Eğer bir .debdosyanız varsa:

  • Aşağıdakileri kullanarak kurabilirsiniz:

    sudo dpkg -i /path/to/deb/file
    sudo apt-get install -f
    
  • sudo apt install ./name.deb(Veya sudo apt install /path/to/package/name.deb) kullanarak yükleyebilirsiniz .

    Eski apt-getversiyonlarda, önce deb dosyanızı /var/cache/apt/archives/dizine taşımalısınız . Her ikisi için de, bu komutu yürüttükten sonra, bağımlılıklarını otomatik olarak indirecektir.

  • gdebi.Deb dosyanızı kurun ve açın ( Sağ tıklayın -> Birlikte aç ). .Deb paketinizi tüm bağımlılıkları ile kuracaktır.

    ( Not : APT, /etc/apt/sources.listdosyada ve /etc/apt/sources.list.ddizinde tanımlanan repoda bulunan mevcut paketlerin bir veritabanı olan paket dizinini korur . Deb'in gerektirdiği bağımlılıklar paket dizininde mevcut değilse, tüm bu yöntemler yazılım bağımlılığını karşılamaz. .)


Neden sudo apt-get install -fsonra kullanmalısudo dpkg -i /path/to/deb/file (ilk yöntemde belirtilen)?

Kimden man apt-get:

 -f, --fix-broken
           Fix; attempt to correct a system with broken dependencies in place.

Bir dpkgpaket kurduğunda ve bir paket bağımlılığı sağlanamadığında, paketi "yapılandırılmamış" bir durumda bırakır ve bu paketin bozuk olduğu kabul edilir.

sudo apt-get install -f Komutu, eksik bağımlılığı yükleyerek bu bozuk paketi düzeltmeye çalışır.


2
@Tim, apt-get depodan paketleri yüklemek için tasarlanmıştır. Paket listesini ve depo adreslerini tutar. Bu nedenle, apt paket listesinde bulunmayan bir .dev dosyasını taşımak, / var / cache / apt / archives dizininde çalışmayacaktır. Çünkü bu paketi apt-get kullanarak ne zaman kurmaya çalışırsanız bulunmayan havuzunu arar. Bunun için işe yaramaz olduğunu düşündüğüm yerel bir depo oluşturmalısınız.
g_p

1
@g_p teşekkür ederim! im yukarıdaki cevabınıza biraz karıştı. Siz yazıyorsunuz: "(.deb paketi uygun paket listesinde mevcutsa çalışacaktır)" - Burada ne anlama geldiğini anlamıyorum. Bir .deb paketinin apt paket listesinde bulunmasını nasıl sağlayabiliriz?
BKSpurgeon

1
@ BKSpurgeon, cevabımda biraz bilgi ekledim. Bir paketin indekste mevcut olup olmadığını öğrenmek için apt-cache search <package name>. Ayrıca apt-cache policy <package name>bazı ek bilgiler verecek olanı da kullanabilirsiniz .
g_p

1
Bu yöntemler yine de apt tarafından yapılan imza kontrolünü yapacak mı? Veya, kurcalanmış bir .deb dosyasının bu şekilde yüklenmesi mümkün mü?
Boann,

8
Modern apt-get, basitçe bir paket kurmak için kullanılabilir apt-get install /path/to/package/name.deb. Bu cevabın yazarı bunu entegre etmeye karar verdiyse, derli toplu olur.
Sam Hartman

91

foo.debDosyanızı ile yükleyin dpkg -i foo.deb. Çözümlenmemiş bağımlılıkları olan bazı hatalar varsa, apt-get install -fdaha sonra çalıştırın .


Ben var Unable to locate packagebu şekilde çalışıyor ve şaşkın gördü. Arşiv klasörüne geçtikten sonra Windows gibi paketin adını kullandım. ./<file name>Geçerli klasör veya tam yoldaysa Unix için olmalıdır . Yani debiçinde mevcut klasörde değilse PATH.
Alexei Martianov

60

İşte bir .debdosyayı Ubuntu'ya komut satırından kurmanın en iyi yolu :

sudo gdebi skype.deb

Henüz gdebiyüklemediyseniz, kullanarak kurun sudo apt install gdebi-core.

Neden gdebi?

gdebi.debdosyanın tüm bağımlılıklarını arayacak ve dosyayı yüklemeyi denemeden önce yükleyecektir .deb. Bunu daha çok tercih ederim sudo dpkg -i skype.deb && sudo apt install -f. İkincisi, bazı durumlarda bağımlılıkları gidermek için çok isteklidir. Örneğin, Skype'ı kurmaya çalıştığımda, compizve unity! Gibi paketler de dahil olmak üzere 96 (!) Paketi çıkarmaya çalıştı ! gdebiçok daha net bir hata mesajı verdi:

 $ sudo gdebi skype.deb
 Cannot install 'libqtgui:i386'

( Bu arada, bu belirli sorunun çözümü .)


harika thx çalıştı! btw, kaldırma girişiminin bu geçici / geçici paketlerle ilgili olduğu konusunda olabilir mi? ya da gerçekten sistemi kıracağını mı düşünüyorsun?
Kova Gücü

Dostum senin çözümünle ilgili bir sorunla karşılaştım. Rstudio'yu yüklemeye çalışıyordum. Otomatik olarak benim için eski bir R sürümü buldu. @G_p tarafından çözümü kullanırken sadece Rstudio'yu yükleyebildim.
Dr_Hope

39

Yerel bir .deb paketini şu şekilde yükleyebilirsiniz:

sudo apt install ./foo.deb

Yerel bir akraba veya mutlak yol belirlediğinizden emin olun ( ./eğer geçerli dizinde ise), aksi halde foo.debuzak depolarda arayacak ve başarısız olacaktır.


2
Bu doğru cevap olarak işaretlenmelidir.
Rael Gugelmin Cunha

@RaelGugelminCunha% 100 doğru değil. sudo apt yüklemek libstdc ++ 6_8-20180414-1ubuntu2_amd64.deb apt: paylaşılan kütüphaneleri yüklerken hata: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: geçersiz ELF başlığı
mvladk 8

2
@mvladk Lütfen sözdizimine dikkat edin: dosyadan ./önce bu debdosyayı kaçırıyorsunuz .
Rael Gugelmin Cunha

Kesinlikle en iyi / en basit cevap.
gerardw

15

Önce dpkg -I my.debve apt-get installsonra bağımlılıkları kontrol edin dpkg -i my.deb.

Olabilir Kopyalayabileceğiniz my.debin /var/cache/apt/archivesve doğrudan yükleyin apt-getama hiç denemedim. Çalışmıyor apt-getve dpkgarşivlerde listelenen paketleri arıyoruz.


Teşekkürler. İlk sentenct içinde, demek istiyorsun apt-get install my.debtarafından apt-get install? Deb dosyasından yüklemek mi? Bundan dpkg -i my.debsonra neden ihtiyacımız var?
Tim

Daima yerel .debs'leri kurdum dpkg -i, benim anladığım kadarıyla aptonları yükleme seçeneğim yok /var/cache/..., indirilen dizini
Alex

Bir apt-get install ./my.debşeyler yapacak gibi görünüyor , çünkü birçok şeyi ortaya çıkarıyor. Bu ne işe yarıyor?
Tim

Çok fazla :-) çok işe yaramazsa, bakın @Igor_Dvoretskyi cevabı sadece mükemmel, unuttum-f
Alex

5

En basit cevabı çalıştırarak dpkg kullanmak olacaktır dpkg -i packagename.deb. Daha sonra çalıştırarak kaldırabilirsiniz dpkg -r packagename.deb.
apt-getdpkg tabanlı ve sizin yapabildiğiniz şekilde kurulmuş bir üst seviye yükleyicidir apt-get install packagename.deb.
Apt-get archives dizininize ( /var/cache/apt/archives) eklemek yararlı olacaktır, böylece bağımsız bir .deb arşivi değil bağımlılıkları olan bir paket olarak başvurabilirsiniz.
Ayrıca, apt-get arşiv dizinine ekleyerek, bağımlılıkları kullanma olanağınız olur apt-get install packagename. Bu, dpkg'nin bağımsız arşiv tabanlı sistemi yerine elle eklenmiş herhangi bir bağımlılıkla yüklemenize izin verir.



-3

Chrome'u yüklemek istersem çok kolay.

Chrome dosyanızı aşağıdaki gibi yükleyin:

dpkg -i googlechrome.deb.

Bazen aşağıdaki gibi bazı bağımlılık hataları alma şansı vardır:

dpkg: dependency problems prevent configuration of google-chrome-stable:
google-chrome-stable depends on libappindicator1; however:
Package libappindicator1 is not installed.

Bu yüzden yukarıdaki sorunları çözmek için, bağımlılıklar eklemeniz gerekir; aşağıdaki komutu verin:

apt-get install -f

Yukarıdaki komutu verdikten sonra, makinenize bağımlılıklar eklenecek ve Debian paket ( .deb) dosyanız yüklenecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.