Znalezienie wszystkich pakietów oprogramowania w Debianie, które stanowią szczególną alternatywę


12

Dystrybucja Debiana ma system alternatyw Debiana . Z Wiki:

System alternatyw Debiana umożliwia wyświetlanie kilku programów spełniających te same lub podobne funkcje jako alternatywne implementacje instalowane jednocześnie, ale z jedną konkretną implementacją wyznaczoną jako domyślna. Na przykład wiele systemów ma zainstalowanych kilka edytorów tekstu jednocześnie. Program vi jest klasycznym przykładem edytora, który ma wiele implementacji, takich jak nvi, elvis, vim itp., Ale który z nich należy określić jako domyślny?

Ogólnie istnieje wiele pakietów w Debianie, które zapewniają konkretną alternatywę. Jak uzyskać pełną listę wszystkich takich pakietów, które istnieją w repozytoriach Debiana? Użyjmy alternatywy vi jako przykładu.

UWAGA: Wykonanie takiego zapytania względem listy zainstalowanych pakietów jest łatwe, ale nie o to pyta to pytanie.

Odpowiedzi:


9

Wiem, że to trochę za późno, ale ten post jest obecnie jednym z najlepszych wyników wyszukiwania związanych ze znajdowaniem alternatyw w Debianie.

Problem z używaniem update-alternativestutaj polega na tym, że pokaże ci tylko zainstalowane opcje, o ile mi wiadomo (strona podręcznika jest dość rzadka).

Aby odpowiedzieć na pytanie zawarte w tytule, tj. Znaleźć wszystkie dostępne pakiety, które stanowią alternatywę (zainstalowaną lub nie), możesz użyć:

aptitude search '?provides(pattern)'

który może być również skrócony do:

aptitude search '~Ppattern'

gdzie patternjest cała alternatywa, której szukasz, lub jej część. W konkretnym przypadku vitak naprawdę nie działa. Jeśli sprawdzisz paczki nvii vimprzy pomocy aptitude showlub apt-cache show, zobaczysz, że żadne z nich nie wymienia „vi” w sekcji „Zapewnia:”. W rzeczywistości w opisie nvi brakuje tej sekcji całkowicie.

Działa jednak dość dobrze w przypadku innych alternatyw, takich jak 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) 

Mimo że nie jest to idealne, aptitudema niewiarygodnie elastyczne funkcje wyszukiwania, które często pozwalają obejść problem nieprawidłowego wyświetlania pakietów, które zawierają alternatywne opcje - na przykład użycie "~seditors ~dvi\s"jako wzorca wyszukiwania spowoduje wyświetlenie wszystkich pakietów w sekcji „redaktorzy” opis zawiera ciąg „vi”.

Inną opcją jest skorzystanie z witryny pakietów Debiana , gdzie podobne pakiety są wymienione w sekcji po prawej stronie.


1
Dziękuję za Twoją odpowiedź. Co jednak jest aps ~Peditor? Jeśli apsma to być skrót do umiejętności, w porządku, ale proszę, nie używaj tego w odpowiedzi, to tylko dezorientuje wszystkich. Ponadto, jeśli uważasz, że brakuje pakietów, możesz zgłosić raport o błędzie dla odpowiednich pakietów.
Faheem Mitha,

Z kontekstu uważam, że apsmusi to oznaczać aptitude search. Ale powinieneś tego wyraźnie użyć. Jednak nie sądzę, że jest to wykonalna odpowiedź, niezależnie od tego - może zadziała z pewnym dopracowaniem. aptitude search -Pvidaje mnóstwo nieistotnych rzeczy. Zgaduję, że przeszukuje cały opis pakietu.
Faheem Mitha,

aptitude search ~P(zwróć uwagę na tyldy) wyszukuje tylko w Provides, ale vidopasowuje inne Provideswpisy; musisz określić dokładne dopasowanie do aptitude search '~P^vi$'. Ten przykład podkreśla jednak podstawowe ograniczenie tego podejścia: chociaż istnieje vialternatywa, nie ma viwirtualnego pakietu ...
Stephen Kitt

5

To zależy. Istnieje kilka alternatyw, takich jak x-www-browser, nie używaj pakietu i są one dodawane za pomocą skryptów opiekuna do aktualizacji-alternatywy:

/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

Są inni, którzy używają jednego metapakietu do instalowania dowolnej wersji tego samego pliku binarnego (przychodzą też na myśl pakiety Java / OpenJRE init). Inni używają wirtualnego pakietu, wypełniając „Provides” (zwykle zawiera aktualizację alternatywnej bazy danych DPKG), w którym to przypadku każdy z tych pakietów powinien dostarczyć ten sam plik binarny.

Jak znaleźć wszystkie pakiety, które zawierają określony plik? Chciałbym skorzystać z Provides, jeśli znasz pakiet, który to robi, i apt-file search filedo wszystkiego innego.


Przykład dla vima?
Faheem Mitha

1
@FaheemMitha vim zapewnia editor.
Braiam

To robi. Podobnie jak wiele innych pakietów, w tym te, które nie mają nic wspólnego z vimem. Jak więc mógłby wyglądać przykład w tym przypadku?
Faheem Mitha

4

Pakiety wirtualne i system alternatyw Debiana (czyli tam, gdzie wchodzą w grę pliki binarne) są powiązane, ale nie takie same. W przypadku pakietów wirtualnych możesz użyć, apt-cacheaby znaleźć, które (prawdziwe) pakiety „zapewniają”:

$ 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

W przypadku menedżerów wyświetlania pakiet wirtualny to 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

System alternatyw jest obsługiwany przez wywołania update-alternativesskryptów opiekuna, jak pokazuje odpowiedź Braiam, a reszta systemu pakowania jest błogo nieświadoma. ProvidesPole jest również bardziej ogólne niż alternatyw, ponieważ opakowanie może przewidywać inny pod względem oferowanych usług i bibliotek, a nie tylko za pomocą plików binarnych.

Bez opiekunów pakietów dodających informacje o alternatywach do Providespola (i tworzących wirtualne pakiety dla wszystkich punktów końcowych alternatyw - jak vi) i bez sprawdzania samych pakietów, obecnie nie ma ogólnego sposobu na sprawdzenie, który pakiet może stanowić alternatywę.


2

Ściśle związany z pytaniem, aby znaleźć alternatywę vi :

 update-alternatives --list editor

Wynik:

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

Lub:

update-alternatives --config vi

Wynik:

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
Racja, ale to działa tylko w przypadku zainstalowanego pakietu. Pytanie dotyczy tego, jak to zrobić dla wszystkich pakietów. Być może powinienem był wyrazić się bardziej szczegółowo w tym pytaniu.
Faheem Mitha

1
Poprawny. Ale zamieszczam to przed sprawdzeniem twojej początkowej aktualizacji postu ... części, do której dodajesz „które istnieją w repozytoriach Debiana”
Andy

Cóż, miałem „wszystkie takie paczki”, które moim zdaniem były jasne, ale najwyraźniej nie. Przepraszam za to. W każdym razie witamy w unix.sx. Widzę, że dołączyłeś dzisiaj.
Faheem Mitha,

1

W Ubuntu pakiet command-not-foundzawiera bazę danych zawierającą również wiele alternatyw. Po instalacji można zapytać za pomocą /usr/lib/command-not-found --no-failure-msg --ignore-installed mail(aby wyświetlić listę alternatyw dla mail).
Ostrożnie, jeśli nie chcesz automatycznych sugestii dotyczących brakujących poleceń w bash, napisz unset -f command_not_found_handlew swoim ~ / .bashrc lub usuń definicję globalnie w /etc/bash.bashrc. (Zrób to samo dla zsh.)

W Debianie to narzędzie używa tylko apt-file do utworzenia bazy danych, więc nie są znane żadne alternatywy (nie testowane). Tam mówi to samo co apt-file search ....

Źródło Ubuntu: https://launchpad.net/command-not-found


Nie podążam za tym, co sugerujesz. Czy możesz być bardziej wyraźny? W szczególności /usr/lib/command-not-found /usr/bin/mailwygląda jak jakiś przepis, ale nie rozumiem, co powinien zrobić. Wyjaśnienie byłoby pomocne.
Faheem Mitha,

Dodano kilka słów do wyjaśnienia i usunięto /usr/bin/z polecenia, ponieważ to nie działa.
podobnie

Moje pytanie dotyczy Debiana, a nie Ubuntu. Chociaż nie rozumiem, dlaczego Debian i Ubuntu różnią się tutaj. I rzeczywiście, wymienione polecenie nie ma tu nic użytecznego. # /usr/lib/command-not-found mail Command 'mail' is available in '/usr/bin/mail' mail: command not found.
Faheem Mitha

Odpowiedź mówi, że mailjest już zainstalowany. To sprawdzenie można pominąć za pomocą opcji --ignore-installed. Ale również po tym nie otrzymasz więcej informacji (w debianie) niż od apt-file search mail.
podobnie
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.