Debian ve Arch arasındaki paket yönetimindeki farklılıklar


9

Dan bir tartışma bu yazı Debian ve Arch paket yönetimi arasındaki farkların beni meraklandırdı. Ayrıca, insanlar Arch'ın çok hafif olduğunu söyleme eğilimindedir, bu yüzden bunun paket yönetimi ile ne ilgisi olduğunu merak ediyorum. Debian davranır çünkü belki mi Recommends varsayılan olarak sabit bağımlılıkları olarak?

İki paket yöneticisi arasındaki esneklik / güçten de bahsedebilir misiniz: ikisinden hangisi daha fazlasını yapmanızı sağlar.

Debian paket yönetim sistemindeki bazı özelliklerin bir Arch sisteminde alakasız olacağının farkındayım, çünkü Arch'ın tek bir Suite'i var ve Debian'ın birden fazla (örneğin APT sabitleme ve gelişmiş bağımlılık yönetimi akla geliyor), lütfen özellikleri karşılaştırın her iki sistem için de geçerlidir (yani Debian için yalnızca kararsız kullandığımı varsayalım ).


NOT : Debian paket yönetimi ile APT, yetenek ve dpkg'dan bahsediyorum. Arch araçlarına aşina değilim, bu yüzden Pacman'dan başka bir şey olup olmadığını bilmiyorum.
tshepang

Yanıtlar:


7

Sadece birkaç haftadan beri düzenli olarak kemer kullanıyorum ve bu konuda uzman değilim, bu yüzden bu cevap kesinlikle kapsamlı değil, sadece "esneklik / güç" hakkında not ettiğim birkaç nokta:

  • Bu sadece bir izlenim ama pacman tasarımında / mimarisinde daha modern ve basit görünüyor. En azından başa çıkmak için çok daha az araç var. Ben apt kaynak kodu bilmiyorum, ben sadece çok basit bir yama yapmak için libalpm kodu (pacman için alttaki kütüphane) bakmak oldu, ve temiz ve kolay anlaşılır görünüyor.

  • Aynı zamanda çok hızlıdır (optimizasyon nedeniyle ve muhtemelen birkaç şeyle ilgilenerek (aşağıya bakınız)). Son sürüm (pacman 3.5, birkaç günlük) ilgili veritabanı dosyalarının sayısını azaltarak performansı artırmaya çalıştı.

  • Kemer ikili paketlerin kullanımına yönelik olsa da, BSD'nin portlarına (ABS) benzer bir yapı sistemi ile kaynaklardan paketler oluştururken de avantajları vardır.

  • Paketleri oluşturmak çok kolay ve hızlıdır, bir PKGBUILD dosyasında sadece birkaç satır ve tamamlanmıştır, Debian paketleriyle ne istersen kontrol / kurallar / telif hakkı / changelog / ile uğraşmaya gerek yoktur. Ve bir web kullanıcı arabirimine birkaç tıklamayla paketiniz AUR'daki (Arch User Repository) herkesle paylaşılır.

Debian'da aldım ve kemerde olmayan şeyler:

  • Tetikleyiciler / kancalar (simge önbelleğini, mandb'ı veya sadece paketin nereye yüklendiğine bakarak, paketleyicinin herhangi bir şey yapmasına gerek kalmadan bakarak ne yaparsa yapın) ( bunu uygulama planları var gibi görünüyor ).

  • debconf (büyük bir anlaşma ve bu arada beni elle bir şeyler yapmaya zorlayarak tam olarak ne yapıldığını bilmeme zorlar) ve yeni yapılandırma dosyalarının düzgün işlenmesi (en azından pacman'ın ne zaman yeni bir pakette bir yapılandırma dosyası olduğunu bilmesini isterim) sürümü, yeni sürümde değiştirildiği veya yerel olarak değiştirdiğim için yüklü olandan farklıdır).

  • paket imzalama ( üzerinde çalışılıyor gibi görünüyor ).

Arch'ın hafif olması için, tek gerçek neden varsayılan olarak yüklü birkaç paketle gelmesi ve sadece ihtiyacınız olanı eklemeniz için teşvik edilmenizdir, bu nedenle muhtemelen varsayılan olarak isteğe bağlı bağımlılıklar yüklememek, kullanıcıları şişkinlikten kaçınmaya teşvik etmektir.


Bunu ayrıştıramıyorum: ama onsuz yapabilirim ve bu arada daha iyi yaptığımı biliyorum . Son cümlede bir yazım hatası da var.
tshepang

Pacman paket yöneticisi hangi dilde yazılıyor? Dpkg / apt'e benzer düşük seviye ve yüksek seviye paket yönetimi işlevselliği var mı?
Faheem Mitha

@Tshepang: Üzgünüm, ana dili İngilizce olmayan biri. "Bu benim için bu işlevselliğe (debconf) sahip olmamam büyük bir mesele değil ve bir şeyleri manuel olarak yapmaya zorlayarak beni tam olarak ne yapıldığını öğrenmeye zorlar" demek istedim.
gentledevil

@Faheem Mitha: Pacman C ile yazılmıştır ve hem "yüksek seviye" hem de "düşük seviye" paket yönetimini yöneten libalpm için bir ön uçtur.
gentledevil

@zanko: Ben de anadili değil. Tek yapman gereken cümleyi daha açık hale getirmek, bir yorumda değil, yazının kendisinde yapmak. BTW, bahsettiğim yazım hatası isteğe bağlıdır . Gönderiyi kendim düzenleyebilirim, ancak açıklama kısmı ile birlikte düzeltebileceğinizi de düşündüm.
tshepang

6

Linux yolculuğuma Ubuntu lucid ile başladım ve şu anda Arch kullanıyorum. Bir avuç Arch paketi yazdım ve Debian paketleri yazmaktan çok daha kolay olduğunu söyleyeceğim. Ancak, @gentledevil'e Arch'ın paketler için bilinen bir kanca sistemi olduğunu belirtmek isteriminstall file .

Temel olarak, adı ${pkgname}.installve yükleme öncesi / sonrası / kaldırma / yükseltme için birkaç işlev içerir; sadece yazı tipi önbellek güncellemelerinizi buna yerleştirin ve Debian kancalarıyla hemen hemen aynı şekilde çalışır.

Ayrıca, debian paket yönetim araçlarını kullanarak bir uygulamayı 'sabitlediğinizden' bahsettiğinizi fark ettim; Arch'ın pacman'ı da yerleşiktir, /etc/pacman.confeşitlerden IgnorePkg =sonra listelenen herhangi bir pakete yükseltmeyi önleyecek (boşlukla sınırlandırılmış) dahil olmak üzere bir dizi ayarı kabul eder.


1
Ayrıca, bir repo paketi olmasa da, powerpillpacman için sarmalayıcıyı birden fazla paketin paralel indirmelerine sahip olmak için kullanabilirsiniz , bu nedenle pacman -S libfoo libbar libbazher paketi birbiri ardına indirmek yerine, aynı anda üçünü de indirir, daha iyi bağlantılar için yükseltme hızlarını büyük ölçüde artırır.
hanetzer

-1

Çok ileri gitmeden önce Resimli Linux Zaman Çizelgesini inceleyin

Paket Yöneticileri arasındaki farklılıkları anlamak için, yukarıda gösterilen OS'lerin felsefelerini anlamalısınız.


Üç Büyük Ebeveyn

  1. Redhat, Şimdi Fedora - Paket Yöneticisi - RPM, Redhat Paket Yöneticisi kısaltması, komut satırı rpm
  2. Slackware - Paket Yöneticisi - tgz, sıradan sıkıştırılmış dosyalar. Bunlar sadece sıkıştırılmış dosyalar olmasına rağmen, Slackware tarafından yukarı akışta oluşturuldu ve bazen bir port olarak da adlandırılan bir depoya yerleştirildi
  3. Debian - DEB, Debian kısaltması, komut satırı aracı Aptitude or Apt

Bu ebeveynler, bugün bildiğimiz dağılımların çoğunun annesi ve babasıdır. Bir Paket Yönetim Sistemi fikri / konsepti bir şekilde veya şekilde elde edildi veya paylaşıldı. Ne olursa olsun, tüm bu ebeveynler ikili distribütörlerdir, yani bir program 3. bir tarafça paketlenir ve kararlaştırılır, daha sonra bir depoda saklanır ve kullanıcı tabanı tarafından tüketilir veya kurulur.

3 Küçük Ebeveyn

  1. Linux Scratch - Kaynak Tabanlı, paket yöneticisi yok.
  2. Gentoo - Linux'tan Scratch'tan türetilmiştir . Bu dağıtım esasen Scratch Linux ve Portage / emerge adlı bir paket yöneticisidir.
  3. SourceMage - Paket Yöneticisi Büyücüsü

Bu Ebeveynler önemsizdir çünkü kullanıcı tabanları hız ve kurulum kolaylığı ile güç ve yapılandırma kolaylığı sağlar. Her paket, değişkenler ve yapılandırma dosyaları kullanılarak sıfırdan indirilir ve derlenir.

Köprü

Arch, 3 Büyük Veli'den biri gibi bir ikili dağıtım ile 3 Küçük Veli'den biri gibi kaynak tabanlı bir dağıtım arasında bir köprü olarak oluşturuldu. Bu nedenle, zaman çizelgesinde bir üst öğe olarak durum alır, çünkü başka hiçbir üst öğe bu işlevi sağlamaz. Pacman, kullanıcının resmi bir depodan ikili paket veya Arch Build System'i kullanarak özel olarak oluşturulmuş bir paket yüklemesine izin verme esnekliğine sahiptir. Bu kavram, küçük ebeveynlerin verdiği güç ile büyük ebeveynlerin verdiği kolay kurulum arasında bir denge sağlar.


Benim düşünceme göre, tüm paket yöneticileri aynı görevi yerine getirdiği için sağlıklı bir sistemi yönetmek ve sürdürmek gibi bir sistemin gücünü gösteren paket yöneticisi değil. Bu nedenle, kullandığınız sistem aşağıdaki gibi faktörlerle belirlenmelidir:

  • Kullanıcı Seviyesi: Linux'ta yeni olan biri Binbaşı Ebeveyn ile başlamalıdır, oysa teknik olarak yetkin biri bir denge bulacaktır.
  • Sisteminizle ne yapmak istiyorsunuz: Bağlı kullanıcılarla bir LAMP sunucusu çalıştırmak, web'e göz atma ve e-posta okuma için bir masaüstü bilgisayar çalıştırmaktan tamamen farklıdır.
  • Konfor Seviyesi: Kullanıcı seviyesine dayanmaz, eğer teknik olarak yetkinseniz, ancak bir hafta sonu bir sistemi derleyerek geçirmek istemiyorsanız, tanıdığınız herkesin başka bir şey seçip seçmediğine bakılmaksızın büyük bir ebeveyn seçersiniz.

Bu, pacman ve Debian'ın paket yönetim araçlarının karşılaştırılmasından ziyade dağılımların
şecere odaklıdır

@jasonwryan İşte tüm paket yöneticileri aynı görevi yerine getirdiğinden, yani emerge packagenameaynı sudo apt-get install packagename.
eyoung100

Bu seviyede, evet; ancak bu, sorunun anlamını, yani pacman'ı {apt, aptitude} 'dan ayıran şeyi tamamen gözden kaçırır.
jasonwryan

@jasonwryan Bunu Köprü bölümünde cevapladım. Bunun dışında hiçbir fark yok. Tek fark semantiktir, yani bir komut diğerine karşı. OP anlambilimsel farklılıklar arıyorsa bunun için bir el kitabı vardır.
eyoung100

-3

Bu hiçbir şekilde tam veya kapsamlı bir cevap değildir - benden önceki posterler zaten çok iyi puanlar verdi, sadece 2 sentimi eklemek istiyorum. Başka bir şey - Ben gerçekten apt / dpkg alıştım. Her zaman bana aşırı karmaşık görünüyordu, yum / rpm ile gerçekten çok rahatım.

pacman'ın kullanımı çok kolaydır, bu bir profesyonel ve bir konudur - tek bir öğleden sonra (paket oluşturma bir yana) kullanmayı öğrenebilirsiniz - çoğunlukla sezgisel ve eksiksiz paket yönetimi özelliklerini kullanır, ancak - ve bu büyük ama - son derece esnek değildir.

Tasarımcılar önceden bir özellik düşünmediyse, mahvoldunuz.

Birkaç örnek: pacman'da yerel sürüm yok. Bir paket sürümünü eski sürüme geçirmek isterseniz, söz konusu paket sürümünü indirmeniz ve dosyadan yüklemek için -U (yükseltme) seçeneğini kullanmanız gerekir. Sisteminizde her zaman en son paketleri kullanmaya yöneliktir.

Gerçek bir dahili önbellek temizleme / tam yeniden oluşturma işlemi yoktur. (Bir ağ sorunu nedeniyle) paket indirme bozuksa, örneğin -Syu sırasında, hata mesajı, doğru olsa da, çok fazla kullanılmayacaktır - "tam" ayrıntı düzeyi ve hata ayıklama açıkken bile bozuk paketi tam olarak belirlemez ve hiçbir miktar -Syyc gerçekten önbelleği temizleyemez ve paketleri yeniden indirmez. İyi haber şu ki, -Sc indirilen paketlerin nerede olduğunu size bildirecektir, böylece rahatsız edici olanı kaldırabilirsiniz (hangisinin olduğunu anlayabiliyorsanız) veya hepsini ve -Syu'yu yeniden başlatın.

pacman'ın dkms ile entegrasyonu da biraz problemlidir - yeni bir çekirdek kurarken dkms'den hatalar almaya devam ettim. Dkms build && dkms install kullanmadan yeni çekirdeğe sorunsuz bir şekilde çalıştı, ancak pacman neden çekirdek yükseltmesi sırasında dkms'ın başarısız olduğuna dair hiçbir bilgi sunmayacaktı (yeni çekirdeğin doğru yolunu asla geçmediğinden şüpheleniyorum ve sadece dkms'ın varsayılanı kullanmasına izin ver (şu anki çalışan) çekirdek ama yanlış sürüm).

Bu esneklik hakkında başka bir fıkra - belirtildiği gibi rpm / yum için alışkınım. Sistemimde bir dosya varsa ve hangi paketin sahibi olduğunu bilmek istersem, yum / / path / to / file komutunu çalıştırabilir ve hiçbiri kurulu olmasa bile oraya koyabilecek TÜM paketleri alabilirim. Dosya manuel olarak yerleştirildiyse ve şimdi bir paket yüklemek istiyorum - yenisini yeniden boyutlandıracak (.rpmnew uzantısı ekleyin) ve ne kullanacağımı seçmeme izin verin.

pacman sadece bir dosyanın zaten var olduğunu, ancak tamamen alakasız bir hata mesajı ile hata veriyor - aynı dosyanın sahibi gibi, "true" sahibi ile şu anda yüklü "dosya sistemleri" paketi arasındaki çakışmalardan şikayet ediyor. Ayrıca çoğunlukla yerel kurulu bilgilere yöneliktir - henüz kurulmamış paketlerin bilgi (dosya listeleri ve sahiplik gibi) kazanmaya çalışmak daha az sezgiseldir.

Basitçe söylemek gerekirse - yum kadar olgun değil ve muhtemelen dpkg, bu da kullanım kolaylığına katkıda bulunuyor, göreceli esneklik değil.


1
Kapsamlı bir cevapsızlıktan dolayı, pacman'a aşina olmadığın bir ürünü olan yükselttiğiniz birkaç nokta var. Örneğin pacman -Qo $file, hangi paketin $ file sahibi olduğunu söyleyeceksiniz. Ayrıca, OP'nin Arch ve Debian arasındaki farkları açıkça istediği gibi tüm cevabınız bir strawman - yumbununla hiçbir ilgisi yok ...
jasonwryan

bu yüzden cevabımın başında bu gerçeği açık bir şekilde açıkladım. -Qo $ dosyasında olduğu gibi - henüz yüklenmemiş bir paket için bunu denediniz mi?
Dani_l

Yüklü olmayan bir paket için denemenin bir anlamı yoktur; bunun için başka araçlar da var. Ve açıklama şu soruyu cevaplamadığınız gerçeğini azaltmaz: yum ve pacman arasındaki "karşılaştırma" Debian ve Arch'ın paket yöneticileri arasındaki farklarla aynı değildir .
jasonwryan

@jasonwryan Tabii ki bir nokta var. Henüz yüklenmemiş olsa bile hangi paketin bir dosyaya sahip olabileceğini anlama gereğini görmemeniz, böyle bir ihtiyaç olmadığı anlamına gelmez. Mesele buydu. Diğer araçlara gelince - bilmesi gerekiyor mu? pacman paket yöneticisidir. Ana noktanıza gelince - soruyu tamamen yanlış okumuş olabilirim, ancak bunun hafif bir PM ile daha karmaşık bir PM hakkında olduğunu varsaydım. Apt / dpkg en azından yum / rpm, akıllıca özellik olarak karmaşık olduğunu varsayalım.
Dani_l

Demek istediğim, elma ile armut arasındaki sınırlı anlayışınızı karşılaştırarak elmaları portakallarla karşılaştırmayla ilgili bir soruya cevap veriyorsunuz. Ve evet, soruyu tamamen yanlış
okudunuz
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.