ค้นหาแพคเกจซอฟต์แวร์ทั้งหมดใน Debian ที่ให้ทางเลือกเฉพาะ


12

การกระจาย Debian มีระบบทางเลือก Debian จาก Wiki:

ระบบเดเบียนทางเลือกสร้างวิธีการสำหรับหลาย ๆ โปรแกรมที่ทำหน้าที่เดียวกันหรือคล้ายกันเพื่อแสดงเป็นการนำไปใช้ทางเลือกที่ติดตั้งพร้อมกัน ตัวอย่างเช่นระบบจำนวนมากมีเครื่องมือแก้ไขข้อความหลายตัวติดตั้งพร้อมกัน โปรแกรม vi เป็นตัวอย่างคลาสสิกของโปรแกรมแก้ไขที่มีการนำไปใช้งานหลายอย่างเช่น nvi, elvis, vim เป็นต้น แต่ควรกำหนดว่าควรใช้อันใดเป็นค่าเริ่มต้น

โดยทั่วไปมีหลายแพ็คเกจใน Debian ที่ให้ทางเลือกเฉพาะ เราจะได้รับรายการที่สมบูรณ์ของแพ็คเกจดังกล่าวทั้งหมดที่มีอยู่ในที่เก็บ Debian อย่างไร ขอให้เราใช้ทางเลือกที่ vi เป็นตัวอย่าง

หมายเหตุ: การทำแบบสอบถามดังกล่าวกับรายการแพคเกจที่ติดตั้งนั้นเป็นเรื่องง่าย แต่นั่นไม่ใช่คำถามที่ถาม

คำตอบ:


9

ฉันรู้ว่ามันค่อนข้างช้า แต่โพสต์นี้เป็นหนึ่งในการค้นหายอดนิยมที่เกี่ยวข้องกับการหาทางเลือกใน Debian

ปัญหาของการใช้update-alternativesที่นี่คือมันจะแสดงตัวเลือกการติดตั้งให้คุณเท่าที่ฉันสามารถบอกได้ (man page ของมันค่อนข้างเบาบาง)

ในการตอบคำถามตามที่ระบุไว้ในชื่อเรื่องเช่นการค้นหาแพ็คเกจทั้งหมดที่มีให้ซึ่งเป็นทางเลือกอื่น (ไม่ว่าจะติดตั้งหรือไม่ก็ตาม) คุณสามารถใช้:

aptitude search '?provides(pattern)'

ซึ่งสามารถย่อไปที่:

aptitude search '~Ppattern'

ที่patternเป็นทั้งหมดหรือบางส่วนของทางเลือกที่คุณกำลังมองหา ในกรณีเฉพาะของviสิ่งนี้ไม่ได้ผลจริงๆ หากคุณตรวจสอบแพ็คเกจnviและvimด้วยaptitude showหรือapt-cache showคุณจะเห็นว่าไม่มีรายการใด "vi" ในส่วน "ให้:" อันที่จริงคำอธิบายของ nvi ไม่มีส่วนนั้นอย่างสมบูรณ์

อย่างไรก็ตามมันทำงานได้ดีพอสมควรสำหรับทางเลือกอื่น ๆ เช่น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) 

แม้ว่ามันจะไม่สมบูรณ์แบบ แต่aptitudeก็มีความสามารถในการค้นหาที่ยืดหยุ่นอย่างไม่น่าเชื่อซึ่งมักจะทำให้คุณสามารถแก้ไขปัญหาของแพ็กเกจที่แสดงรายการทางเลือกที่ไม่ถูกต้อง - ตัวอย่างเช่นการใช้"~seditors ~dvi\s"เป็นรูปแบบการค้นหาจะแสดงรายการแพ็กเกจทั้งหมด คำอธิบายมีสตริง "vi"

อีกทางเลือกหนึ่งคือการใช้เว็บไซต์แพคเกจของ Debian ที่มีแพ็คเกจที่คล้ายกันอยู่ในรายการทางด้านขวา


1
ขอบคุณสำหรับคำตอบ อย่างไรก็ตามคือaps ~Peditorอะไร หากapsตั้งใจจะตัดสั้นสำหรับความถนัดปรับ แต่โปรดอย่าใช้คำตอบนั้นมันจะทำให้ทุกคนสับสน นอกจากนี้หากคุณคิดว่ามีข้อเสนอที่ขาดหายไปคุณสามารถยื่นรายงานข้อผิดพลาดกับแพ็คเกจที่เกี่ยวข้องได้
Faheem Mitha

จากบริบทผมคิดว่าจะต้องยืนaps aptitude searchแต่คุณควรใช้สิ่งนั้นอย่างชัดเจน อย่างไรก็ตามฉันไม่คิดว่าเป็นคำตอบที่ใช้การได้โดยไม่คำนึงว่าอาจจะใช้การปรับแต่งได้ aptitude search -Pviให้ภาระสิ่งที่ไม่เกี่ยวข้อง ฉันเดาว่ามันจะค้นหารายละเอียดแพ็คเกจทั้งหมด
Faheem Mitha

aptitude search ~P(หมายเหตุตัวหนอน) ค้นหาเฉพาะในProvidesแต่viตรงกับProvidesรายการอื่น ๆ; aptitude search '~P^vi$'คุณจะต้องระบุตรงกับ ตัวอย่างนี้ไฮไลท์เป็นข้อ จำกัด พื้นฐานด้วยวิธีนี้แม้ว่า: ในขณะที่มีviทางเลือกที่ไม่มีviแพคเกจเสมือน ...
สตีเฟ่นกิต

5

สิ่งนี้ขึ้นอยู่กับ มีทางเลือกบางอย่างเช่น x-www-browser ไม่ได้ใช้แพคเกจและถูกเพิ่มผ่านสคริปต์ผู้ดูแลเพื่อทางเลือกการอัพเดท:

/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

มีคนอื่น ๆ ที่ใช้ metapackage เดียวเพื่อติดตั้งไบนารีใด ๆ ที่เหมือนกัน (แพ็คเกจ Java / OpenJRE คำนึงถึงด้วยinit) อื่น ๆ ใช้แพ็คเกจเสมือนโดยกรอก"มอบ" (โดยปกติจะมาพร้อมกับการอัปเดตฐานข้อมูลทางเลือก DPKG) ในกรณีนี้แพ็คเกจใด ๆ เหล่านั้นควรมีไบนารีเดียวกัน

ดังนั้นจะหาแพ็คเกจทั้งหมดที่ให้ไฟล์เฉพาะได้อย่างไร ฉันจะใช้บริการหากคุณรู้แพ็คเกจที่ทำได้และapt-file search fileทุกอย่างอื่น


ตัวอย่างเป็นกลุ่ม?
Faheem Mitha

1
@FaheemMitha editorเป็นกลุ่มให้
Braiam

มันทำ ทำแพ็คเกจอื่น ๆ มากมายรวมถึงแพ็คเกจที่ไม่มีส่วนเกี่ยวข้องด้วย ดังนั้นตัวอย่างจะเป็นอย่างไรในกรณีนี้
Faheem Mitha

4

แพคเกจเสมือนจริงและระบบทางเลือก Debian (ซึ่งเป็นที่ซึ่งไบนารีเข้ามาเล่น) มีความเกี่ยวข้อง แต่ไม่เหมือนกัน สำหรับแพ็คเกจเสมือนคุณสามารถใช้apt-cacheเพื่อค้นหาแพ็คเกจ (ของจริง) ที่ "ให้":

$ 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

สำหรับผู้จัดการการแสดงผลแพ็คเกจเสมือนคือ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

ระบบทางเลือกได้รับการจัดการโดยการเรียกไปupdate-alternativesยังสคริปต์ของผู้ดูแลเนื่องจากคำตอบของ Braiam แสดงและระบบบรรจุภัณฑ์ที่เหลือไม่ได้ตระหนักถึงสิ่งเหล่านี้ Providesฟิลด์ยังเป็นทั่วไปมากขึ้นกว่าทางเลือกตั้งแต่แพคเกจอาจให้อีกในแง่ของการบริการหรือห้องสมุดที่นำเสนอไม่เพียง แต่ผ่านไบนารี

หากไม่มีผู้ดูแลแพคเกจที่เพิ่มข้อมูลเกี่ยวกับทางเลือกในProvidesฟิลด์ (และการสร้างแพคเกจเสมือนสำหรับจุดสิ้นสุดของทางเลือกทั้งหมด - viและ) โดยไม่ต้องตรวจสอบแพ็กเกจด้วยตัวเองไม่มีวิธีทั่วไปในปัจจุบัน


2

เกี่ยวข้องกับคำถามอย่างเคร่งครัดเพื่อค้นหาทางเลือกvi :

 update-alternatives --list editor

เอาท์พุท:

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

หรือ:

update-alternatives --config vi

เอาท์พุท:

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
ถูกต้อง แต่ใช้ได้กับแพ็คเกจที่ติดตั้งเท่านั้น คำถามถามว่าจะทำยังไงกับแพ็คเกจทั้งหมด บางทีฉันน่าจะชัดเจนกว่านี้ในคำถาม
Faheem Mitha

1
แก้ไข. แต่ฉันโพสต์สิ่งนี้ก่อนที่จะตรวจสอบการอัปเดตโพสต์เริ่มต้นของคุณ ... ส่วนที่คุณเพิ่ม "ที่มีอยู่ในที่เก็บ Debian"
Andy

ฉันมี "แพ็คเกจทั้งหมด" ซึ่งฉันคิดว่าชัดเจน แต่ดูเหมือนจะไม่ ขอโทษสำหรับเรื่องนั้น. อย่างไรก็ตามยินดีต้อนรับสู่ unix.sx ฉันเห็นคุณเข้าร่วมวันนี้
Faheem Mitha

1

ในUbuntuแพคเกจcommand-not-foundประกอบด้วยฐานข้อมูลที่มีตัวเลือกมากมาย หลังจากการติดตั้งสามารถสอบถามได้/usr/lib/command-not-found --no-failure-msg --ignore-installed mail(เพื่อแสดงรายการทางเลือกสำหรับmail)
ระวังเมื่อคุณไม่ต้องการคำแนะนำอัตโนมัติในคำสั่งที่หายไปในทุบตีเขียนunset -f command_not_found_handleใน ~ / .bashrc ของคุณหรือลบคำนิยามทั่วโลก/etc/bash.bashrcมา (ทำคล้ายกับ zsh)

ในDebianเครื่องมือนี้ใช้เฉพาะไฟล์ apt เพื่อสร้างฐานข้อมูลดังนั้นจึงไม่มีทางเลือกอื่น (ไม่ได้ทดสอบ) apt-file search ...มีมันบอกเช่นเดียวกับ

แหล่งที่มาของ Ubuntu: https://launchpad.net/command-not-found


ฉันไม่ทำตามสิ่งที่คุณแนะนำ คุณชัดเจนกว่านี้ได้ไหม โดยเฉพาะอย่างยิ่ง/usr/lib/command-not-found /usr/bin/mailดูเหมือนว่าเป็นสูตรบางอย่าง แต่ฉันไม่เข้าใจสิ่งที่ควรทำ คำอธิบายจะเป็นประโยชน์
Faheem Mitha

เพิ่มคำบางคำเพื่อชี้แจงและลบออก/usr/bin/จากคำสั่งเนื่องจากสิ่งนี้ไม่ทำงาน
simohe

คำถามของฉันเกี่ยวกับ Debian ไม่ใช่ Ubuntu แม้ว่าฉันจะไม่เข้าใจว่าทำไม Debian และ Ubuntu จะแตกต่างกันที่นี่ และแน่นอนรายการคำสั่งที่คุณไม่มีประโยชน์ที่นี่ # /usr/lib/command-not-found mail Command 'mail' is available in '/usr/bin/mail' mail: command not found.
Faheem Mitha

คำตอบบอกว่าmailติดตั้งแล้ว --ignore-installedการตรวจสอบนี้สามารถข้ามกับตัวเลือก แต่หลังจากนี้คุณจะไม่ได้รับข้อมูลเพิ่มเติม (ในเดเบียน) apt-file search mailกว่าจาก
simohe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.