Debian'da belirli bir alternatif sağlayan tüm yazılım paketlerini bulma


12

Debian dağıtımında Debian Alternatifleri Sistemi vardır . Wiki'den:

Debian alternatifleri sistemi, aynı veya benzer işlevleri yerine getiren birkaç programın, aynı anda ancak varsayılan olarak belirlenmiş belirli bir uygulama ile yüklenen alternatif uygulamalar olarak listelenmesini sağlar. Örneğin, birçok sistemde aynı anda birden fazla metin düzenleyici yüklüdür. Vi programı nvi, elvis, vim, vb. Gibi pek çok uygulamaya sahip klasik bir editör örneğidir, ancak hangisi varsayılan olarak atanmalıdır?

Genel olarak, Debian'da belirli bir alternatif sağlayan birden fazla paket vardır. Debian depolarında bulunan tüm bu paketlerin tam listesi nasıl elde edilebilir? Örnek olarak vi alternatifini kullanalım.

NOT: Yüklü paketler listesine karşı böyle bir sorgu yapmak kolaydır, ancak bu soru sormaz.

Yanıtlar:


9

Bunun biraz geç olduğunu biliyorum, ancak bu yazı şu anda Debian'da alternatifler bulmakla ilgili en iyi arama sonuçlarından biri.

update-alternativesBurada kullanmayla ilgili sorun , sadece size söyleyebildiğim kadarıyla yüklü seçenekleri göstermesi (man sayfası oldukça seyrek).

Soruyu başlıkta belirtildiği gibi cevaplamak, yani (yüklü olsun olmasın) alternatif sağlayan tüm mevcut paketleri bulmak için aşağıdakileri kullanabilirsiniz:

aptitude search '?provides(pattern)'

ayrıca şu şekilde de kısaltılabilir:

aptitude search '~Ppattern'

patternaradığınız alternatifin tümü veya bir kısmı nerede . Belirli bir durumda vi, bu gerçekten işe yaramıyor. Paketleri incelerseniz nvive veya vimile birlikte , ikisinin de "Sağlar:" bölümünde "vi" listelemediğini görürsünüz. Aslında, nvi'nin açıklaması bu bölümü tamamen eksik.aptitude showapt-cache show

Ancak, aşağıdakiler gibi diğer alternatifler için de iyi çalışır editor:

$ aptitude search '~Peditor'
p   deutex                         - composition tool for doom-style WAD files
p   edbrowse                       - /bin/ed-alike webbrowser written in C    
p   emacs24                        - GNU Emacs editor (with GTK+ GUI support) 
p   emacs24-lucid                  - GNU Emacs editor (with Lucid GUI support)
p   emacs24-nox                    - GNU Emacs editor (without GUI support)   
p   fte-console                    - Text editor for programmers - console edi
p   fte-terminal                   - Text editor for programmers - version for
p   fte-xwindow                    - Text editor for programmers - X Window Sy
p   jed                            - editor for programmers (textmode version)
p   jove                           - Jonathan's Own Version of Emacs - a compa
p   jupp                           - user friendly full screen text editor    
p   le                             - Text editor with block and binary operati
p   ledit                          - line editor for interactive programs     
p   levee                          - very small vi clone                      
p   mg                             - microscopic GNU Emacs-style editor       
p   nano                           - small, friendly text editor inspired by P
p   nano-tiny                      - small, friendly text editor inspired by P
p   ne                             - easy-to-use and powerful text editor     
p   pluma                          - official text editor of the MATE desktop 
p   rlfe                           - Front-end using readline to "cook" input 
p   rlwrap                         - readline feature command line wrapper    
p   scite                          - Lightweight GTK-based Programming Editor 
p   vigor                          - nvi with the evil paperclip              
p   vile                           - VI Like Emacs - vi work-alike            
p   vim                            - Vi IMproved - enhanced vi editor         
p   vim-athena                     - Vi IMproved - enhanced vi editor - with A
p   vim-gnome                      - Vi IMproved - enhanced vi editor - with G
i   vim-gtk                        - Vi IMproved - enhanced vi editor - with G
p   vim-nox                        - Vi IMproved - enhanced vi editor - with s
i   vim-tiny                       - Vi IMproved - enhanced vi editor - compac
p   xjed                           - editor for programmers (x11 version)     
p   xul-ext-password-editor        - edit password manager entries in Mozilla 
p   xvile                          - VI Like Emacs - vi work-alike (X11) 

Bu mükemmel değil olsa bile, aptitudesahip inanılmaz esnek arama yetenekleri sıklıkla kullandıkları, örneğin provide- alternatifleri doğru listelemeyerek paketlerin soruna sağlayacak "~seditors ~dvi\s"olan "editörler" bölümünde paketleri listelemek bir arama deseni olarak açıklama "vi" dizesini içerir.

Başka bir seçenek de Debian'ın sağdaki bölümde benzer paketlerin listelendiği paketleri web sitesini kullanmaktır .


1
Cevap için teşekkür ederim. Ancak, nedir aps ~Peditor? Eğer apsyetenek, cezayı kestirme olması, ama bir cevap odasını kullanabilirler etmeyiniz amaçlanmaktadır, sadece şaşırtmak herkesin olacak. Ayrıca, eksik sağlayıcılar olduğunu düşünüyorsanız, ilgili paket (ler) e karşı bir hata raporu gönderebilirsiniz.
Faheem Mitha

Bağlamdan, bence temsil apsedilmelidir aptitude search. Ama bunu açıkça kullanmalısın. Ancak, işe yarar bir cevap olduğunu düşünmüyorum, ne olursa olsun - belki biraz arıtmayla çalışacaktır. aptitude search -Pvibir sürü alakasız şeyler verir. Ben tüm paket açıklamasını arar tahmin ediyorum.
Faheem Mitha

aptitude search ~P(tilde dikkat edin) yalnızca içinde arama yapar Provides, ancak vidiğer Providesgirişlerle eşleşir ; ile tam bir eşleşme belirtmeniz gerekir aptitude search '~P^vi$'. Bu örnek, bu yaklaşımla ilgili temel bir sınırlamayı vurgular: bir vialternatif olsa da , visanal bir paket yoktur ...
Stephen Kitt

5

Bu bağlıdır. X-www-browser gibi bazı alternatifler vardır, bir paket kullanmazlar ve güncelleme komut dosyalarına sürdürücü komut dosyaları aracılığıyla eklenirler:

/var/lib/dpkg/info/iceweasel.postinst:    update-alternatives --install /usr/bin/x-www-browser \
/var/lib/dpkg/info/iceweasel.postinst:    update-alternatives --remove mozilla /usr/bin/iceweasel
/var/lib/dpkg/info/iceweasel.postinst:    update-alternatives --install /usr/bin/gnome-www-browser \
/var/lib/dpkg/info/iceweasel.prerm:    update-alternatives --remove x-www-browser /usr/bin/iceweasel
/var/lib/dpkg/info/iceweasel.prerm:    update-alternatives --remove gnome-www-browser /usr/bin/iceweasel
/var/lib/dpkg/info/chromium.postinst:    update-alternatives --install /usr/bin/x-www-browser \
/var/lib/dpkg/info/chromium.postinst:    update-alternatives --install /usr/bin/gnome-www-browser \
/var/lib/dpkg/info/chromium.prerm:    update-alternatives --remove x-www-browser /usr/bin/chromium
/var/lib/dpkg/info/chromium.prerm:    update-alternatives --remove gnome-www-browser /usr/bin/chromium

Aynı ikilinin herhangi bir sürümünü yüklemek için tek bir meta paket kullanan başkaları da vardır (Java / OpenJRE paketleri de akla gelir init). Diğerleri sanal bir paket kullanır, "Sağlar" (normalde DPKG veritabanları için bir güncelleme ile birlikte gelir) doldurarak bu durumda, bu paketlerden herhangi biri aynı ikili dosyayı sağlamalıdır.

Peki, belirli bir dosya sağlayan tüm paketleri nasıl bulabilirim? Yapan bir paket biliyorsanız ve apt-file search fileher şey için sağlar sağlar .


Vim için örnek?
Faheem Mitha

1
@FaheemMitha vim sağlar editor.
Braiam

Öyle. Vim ile ilgisi olmayanlar da dahil olmak üzere birçok paket yapın. Peki, bu örnekte neye benzeyecekti?
Faheem Mitha

4

Sanal paketler ve Debian alternatifler sistemi (ikili dosyaların devreye girdiği yer) birbiriyle ilişkilidir ancak aynı değildir. Sanal paketler için, apt-cachehangi (gerçek) paketlerin bunu "sağladığını" bulmak için kullanabilirsiniz :

$ apt-cache showpkg awk
Package: awk
Versions: 

Reverse Depends: 
  base-files,awk
  base-files,awk
Dependencies: 
Provides: 
Reverse Provides: 
mawk:i386 1.3.3-17ubuntu2
gawk:i386 1:4.0.1+dfsg-2.1ubuntu2
original-awk 2012-12-20-1
mawk 1.3.3-17ubuntu2
gawk 1:4.0.1+dfsg-2.1ubuntu2

Görüntü yöneticileri için sanal paket x-display-manager:

$ apt-cache showpkg x-display-manager
Package: x-display-manager
Versions: 

Reverse Depends: 
  utf8-migration-tool,x-display-manager
  razorqt,x-display-manager
  lxde,x-display-manager
  numlockx,x-display-manager
  ltsp-client-core,x-display-manager
Dependencies: 
Provides: 
Reverse Provides: 
gdm 3.10.0.1-0ubuntu3.1
lightdm 1.10.6-0ubuntu1
kdm 4:4.11.11-0ubuntu0.2
xdm 1:1.1.11-1ubuntu1
wdm 1.28-16
slim 1.3.4-2.1
lxdm 0.4.1-0ubuntu6
kdm 4:4.11.8-0ubuntu6
gdm 3.10.0.1-0ubuntu3
lightdm 1.10.0-0ubuntu3

Alternatif sistem, update-alternativesBraiam'ın cevabının gösterdiği gibi bakımcı senaryolarına yapılan çağrılarla ele alınır ve paketleme sisteminin geri kalanı bunlardan habersizdir. ProvidesBir paket değil, sadece ikili yoluyla sunulan hizmetler veya kütüphanelerde bakımından başka sağlayabilir çünkü alan, aynı zamanda alternatiflere göre daha geneldir.

Paket bakıcıları Providesalana alternatifler hakkında bilgi eklemeden (ve alternatiflerin tüm uç noktaları için sanal paketler oluşturmadan vi) ve paketleri kendileri incelemeden, hangi paketin alternatif sunabileceğine dair genel bir yol yoktur.


2

Vi alternatif bulmak için, soru ile kesinlikle ilgili :

 update-alternatives --list editor

Çıktı:

/bin/ed
/bin/nano
/usr/bin/mcedit
/usr/bin/vim.basic
/usr/bin/vim.tiny

Veya:

update-alternatives --config vi

Çıktı:

There are 2 choices for the alternative vi (providing /usr/bin/vi).



Selection    Path                Priority   Status

------------------------------------------------------------

* 0            /usr/bin/vim.basic   30        auto mode

  1            /usr/bin/vim.basic   30        manual mode

  2            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number:

3
Doğru, ama bu sadece kurulu paket için çalışıyor. Soru, tüm paketler için nasıl yapılacağını soruyor . Belki de soruda daha açık olmalıydım.
Faheem Mitha

1
Doğru. Ama bunu ilk gönderi güncellemenizi kontrol etmeden önce gönderiyorum ... "Debian depolarında var olan" eklediğiniz bölüm
Andy

Açık, ama görünüşe göre değil düşündüğüm "tüm bu paketler" vardı. Bunun için üzgünüm. Her neyse, unix.sx'e hoş geldiniz. Bugün katıldığını görüyorum.
Faheem Mitha

1

In Ubuntu , paket command-not-foundaynı zamanda birçok alternatifleri içeren bir veritabanı içerir. Kurulumdan sonra sorgulanabilir /usr/lib/command-not-found --no-failure-msg --ignore-installed mail(alternatiflerini listelemek için mail).
Dikkatli olun, bash'da eksik komutlar için otomatik öneriler istemiyorsanız, unset -f command_not_found_handle~ / .bashrc'nize yazın veya tanımı global olarak kaldırın /etc/bash.bashrc. (Zsh için benzer şeyler yapın.)

In Debian , bu araç hiçbir alternatifi bilinmektedir böylece, veritabanı oluşturmak için sadece apt-dosyası kullanır (test edilmedi). Orada olduğu gibi söyler apt-file search ....

Ubuntu kaynağı: https://launchpad.net/command-not-found


Ne önerdiğini takip etmiyorum. Daha açık olabilir misin? Özellikle bir /usr/lib/command-not-found /usr/bin/mailçeşit tarif gibi görünüyor, ama ne yapması gerektiğini anlamıyorum. Bir açıklama yardımcı olacaktır.
Faheem Mitha

Açıklığa kavuşturmak için bazı kelimeler eklendi ve /usr/bin/bu işe yaramadığı için komuttan kaldırıldı .
simohe

Benim sorum Ubuntu ile değil Debian ile ilgili. Yine de Debian ve Ubuntu'nun neden farklı olacağını anlamıyorum. Ve aslında listelediğiniz komut burada yararlı bir şey yapmaz. # /usr/lib/command-not-found mail Command 'mail' is available in '/usr/bin/mail' mail: command not found.
Faheem Mitha

Cevap mailzaten yüklü olduğunu söyler . Bu kontrol, seçenekle atlanabilir --ignore-installed. Ancak bundan sonra, daha fazla bilgi edinmeyeceksiniz (debian) apt-file search mail.
simohe
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.