Yazılım yüklerken bağımlılıkları nasıl buluyorsunuz?


1

Yazılım yükleme derslerinde, her zaman uzun bir bağımlılık listesine sahiptir. Bu bağımlılıkları nasıl bulurlar?

Örneğin, rvm'yi yüklemek için yönergeleri izleyerek yeni bir Ubuntu sunucusunda başlıyorum. Gibi bir şey sağlarlar:

sudo apt-get install git-core libreadline5 libncurses5-dev libreadline5-dev build-essential zlib1g-dev libssl-dev libpcre3-dev libxml2-dev libxslt-dev;

Sadece tüm bu bağımlılıkları nasıl bulduğunu anlamak istiyorum. Kopyalama ve yapıştırma işleri, ancak bunu anlamanın daha önemli olduğunu düşünüyorum.

Yanıtlar:


1

genellikle apt bunu sizin için yapar. Karşılanmayan bağımlılıkları olan bir ikili paketi kurmaya çalışırsanız, apt size hangilerinin eksik olduğunu söyler ve siz de bunları kurmak için izin ister.

çoğu kaynak dağıtımı bir README dosyasında -dev bağımlılıklarının neler olduğunu söyler.


5

Her paket kendi bağımlılıklarının bir listesiyle birlikte gelir. İçin DEBS'deki , Ubuntu kullanan, bunu yapabilirsiniz: -

[andys@daedalus ~]$ apt-cache depends git-core
git-core
  Depends: git

Bir paketin bağımlılıkları, paket oluşturulduğunda belirlenir. Bunların bir kısmı, paket sorumlusu tarafından ( paketin oluşturulmasından sorumlu kişi) manuel olarak belirlenir ve bazıları paket oluşturulduğunda otomatik olarak belirlenir. Eğer bir Debian kaynak paketi indirmek ve bakarsanız debian/controldosyası, aşağıdaki gibi çizgilerin bir dizi göreceksiniz Depends:, Conflicts:, Replaces:vb

Yani, örneğe geri dönelim - git-coreolan tek bir pakete bağlı git. gitMuhtemelen, sadece bir paketin bağımlılıklarını yerine getirmek için git git çalışması için gerekli olan tüm paketlerin yüklendiğinden emin olmak için sırayla bir dizi bağımlılığa sahip olan bir çeşit metapakstır. gitPakete bakarsak : -

[andys@daedalus ~]$ apt-cache depends git
git
  Depends: libc6
  Depends: libcurl3-gnutls
  <...snip...>
  Suggests: git-cvs
  Suggests: git-svn
  Suggests: git-email
  <...snip...>
  Recommends: rsync
  <...snip...>
  Conflicts: git-core
  <...snip...>
  Breaks: stgit
  Breaks: stgit-contrib
  Replaces: <cogito>
  Replaces: git-core

... gitkendisinin başka bağımlılıkları olduğunu göreceksiniz . İşleri daha da karmaşıklaştırmak için, başka bir paketin kurulmasını zorunlu kılmaktan farklı türden bağımlılıklar var ...

  • Çatışmalar - bu paket başka bir paketle çakışıyor ve muhtemelen bu paketi kaldırmadan çakışan paketi yükleyemezsiniz, ya da tam tersi. Bu durumda, ile gitçatışmalar git-core. Buradaki kutumda, git-corepaket eski olarak işaretlendi , bu yüzden muhtemelen burada listeleniyor.
  • Kırılmalar - bu paket başka bir paketi kırar ve yükler - belki de kırılacak paketi kaldırmanızı gerektirmese de - bu paket tarafından yüklenen yazılımla ilgili sorunlara neden olur. Yine, bizim örneğimizde bakarak stgitve stgit-contribpaketler bir kere kırık olarak kabul edilecektir gityüklenir.
  • Değiştirir - bu paket başka bir paketin yerini alır, yani diğer paketin eski olduğu ve muhtemelen kaldırılabileceği anlamına gelir. git-corePaket tekrar burada gösterilir.

Gibi 'yumuşak' bağımlılık türleri de vardır Tavsiyesi ve Önerdi değil, gerekli yüklemekte olduğunuz paket tarafından, ancak önerilen ya da önerilen adından da anlaşılacağı gibi,. Bir kez daha, örneğe bakıldığında, önerilen ve önerilen paketler git'e eklenir ya da kullanımı kolaylaştıracak doğrudan ilişkili olmayan araçlardır.

Bunları bir araya getirmek, kullandığınız paket yöneticisi, yüklemesini istediğiniz paket (veya paketler) ile başlayacak ve bağımlılıklarını ve sonra bu paketler için olan bağımlılıkları arayacaktır. Ayrıca istenen paketleri veya bağımlılıklarını ihlal eden, bozan veya değiştiren paketleri de kontrol edecektir. Özgün isteğinizi yerine getirebilecek bir yol bulduğuna sevindikten sonra, yükleme işlemine devam eder.

Farklı paket yöneticilerinin bu bağımlılık çözümünü yapmanın farklı yolları vardır . apt-get, aptitudeVe dselect, örneğin, tüm temelde aynı şeyi yapmak ancak yaptıkları yolu kendi karar farklıdır. Bunu bulabilir aptitudeve dselectmutlu bir şekilde size bir paket kurmanın bir yolunu sunar apt-get.

Debian paketleri hakkında daha fazla bilgi edinmek istiyorsanız , bazı sıkıntıların üzerinden geçen Debian Yeni Bakım Rehberine bakınız .


2
+1. Kapsamlı, temizle.
Sam Halicke
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.