คำสั่ง apt (dpkg) ที่เป็นประโยชน์ [ปิด]


9

กรุณาโพสต์คำสั่ง apt ที่ไม่ค่อยมีคนรู้จัก แต่มีประโยชน์ที่เกี่ยวข้องกับ apt- *, dpkg หรือ aptitude


7
นี่ไม่ใช่คำถามจริงๆ
Martin Owens -doctormo-

คำตอบ:


7

บางคำสั่งที่ฉันมักใช้:

เพื่อดูการอ้างอิงและการย้อนกลับ:

apt-cache [--important] [--installed] [--recurse] depends $package
apt-cache rdepends $package

ในการลบแพ็คเกจแพ็คเกจ autoremove ทั้งหมดและไฟล์ปรับแต่งที่เกี่ยวข้องทั้งหมด:

sudo apt-get --purge --auto-remove purge $package

วิธีดูaptตัวเลือกการกำหนดค่าจริง:

apt-config dump | less

เพื่อแก้ไขตัวเลือกในบรรทัดคำสั่ง

$ apt-config dump | grep -i recommend
APT::Install-Recommends "1";
$ sudo apt-get -o APT::Install-Recommends="0" install $package

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

sudo apt-get --no-install-recommends $package

หากต้องการดูแพคเกจท้องถิ่น / ล้าสมัยทั้งหมด:

aptitude search ~o

หากต้องการดูแพ็กเกจที่ลบออกด้วยคอนฟิกูเรชันที่เหลืออยู่:

aptitude search ~c

และเพื่อลบออก

sudo aptitude purge ~c

เพื่อรับรายการของแพ็คเกจที่ติดตั้งทั้งหมด ( dpkg -lบางครั้งสามารถให้เอาต์พุตคอลัมน์ที่ถูกตัดทอนได้)

dpkg --get-selections | awk '{ print $1 }'

หรือ

dpkg-query -Wf '${Package}\n'  # other fields available, see man page

หากต้องการแยกส่วนให้แก้ไขจากนั้นประกอบแพ็กเกจใหม่

dpkg-deb -x file.deb ./dir
cd dir 
dpkg-deb -e ../file.deb
# apply your modification, then... 
cd ..
dpkg-deb -b dir file-new.deb

4

สองอย่างที่ฉันใช้บ่อยคือ: -

apt-get autoremove <packagename>

ซึ่งจะลบแพคเกจและการพึ่งพาใด ๆ ที่ไม่ได้ใช้ซึ่งมีประโยชน์ถ้าคุณลองใช้แอพแล้วตัดสินใจว่าคุณไม่ต้องการมันและต้องการให้ cruft ถูกลบด้วย

dpkg -S /path/to/file

ซึ่งบอกฉันว่าไฟล์ใดที่ติดตั้งด้วย

ในที่สุดอีกหนึ่ง ..

dpkg -l <packagename> | grep ^ii

แสดงรายการแพ็คเกจ แต่เฉพาะรายการที่มีสถานะ ii ซึ่งหมายความว่าติดตั้งไว้ดังนั้นจึงไม่แสดงสิ่งที่ฉันลบออกไป

หากคุณต้องการรับชื่อแพ็คเกจสำหรับไฟล์ที่ไม่ได้ติดตั้ง ( dpkg -Sแต่สำหรับแพ็คเกจที่ไม่ได้ติดตั้ง) ให้ติดตั้งapt-fileและเรียกใช้:

apt-file search /path/to/file

ฉันคิดว่ามันมีประโยชน์ที่จะใช้whichร่วมกับ dpkg -S เช่นสำหรับไฟล์ปฏิบัติการที่อยู่ในแพ็คเกจที่มีชื่อต่างกันเช่น:dpkg -S `which uname`
Benjamin Rubin

โอ้ใช่นั่นเป็นสิ่งที่ดีเช่นกัน
popey

3

ดู ChangeLog ของแพ็คเกจ

$ aptitude changelog <pkgname>

ตัวอย่าง:

$ aptitude changelog sudo
sudo (1.7.0-1ubuntu2.4) karmic-security; urgency=low

  * SECURITY UPDATE: properly handle multiple PATH variables when using
    secure_path in env.c
    - Adapted http://www.sudo.ws/repos/sudo/raw-rev/a09c6812eaec
    - CVE-2010-1646
...

2
ตั้งแต่ Ubuntu 11.04 Natty ก็ใช้apt-get changelog sudoงานได้เช่นกัน
Lekensteyn

3

ติดตั้ง sudo apt-file updateapt-ไฟล์แล้วเรียกใช้ ตอนนี้คุณสามารถค้นหาไฟล์ในแพ็คเกจที่คุณยังไม่ได้ติดตั้ง

ยังมีประโยชน์ถ้าคุณต้องการทราบข้อมูลเกี่ยวกับแพ็คเกจใน Ubuntu รุ่นอื่น ๆ คือ rmadison ซึ่งอยู่ในแพ็คเกจ devscripts ระบุชื่อแพ็กเกจเป็นอาร์กิวเมนต์และจะบอกให้คุณทราบว่าเวอร์ชันของแพ็กเกจนั้นมีอยู่ในอูบุนตูทุกรุ่นในปัจจุบันและส่วนที่เก็บที่อยู่ในแพ็คเกจ

ตัวอย่าง:

[bnrubin@server:~/]$ rmadison cowsay
    cowsay |     3.03-8 | dapper/universe | source, all
    cowsay |     3.03-9 | hardy/universe | source, all
    cowsay |   3.03-9.2 | jaunty/universe | source, all
    cowsay |   3.03-9.2 | karmic/universe | source, all
    cowsay |   3.03-9.2 | lucid/universe | source, all
    cowsay | 3.03+dfsg1-2 | maverick/universe | source, all
    cowsay | 3.03+dfsg1-2 | natty/universe | source, all

apt-fileตอนนี้สามารถจัดการฐานข้อมูลของผู้ใช้เพื่อให้คุณไม่จำเป็นต้องรูupdate
enzotib

apt-file ค่อนข้างดี ขอบคุณสำหรับการแบ่งปัน.
Gödel

1

ในการรับรายการคำสั่งเริ่มต้นด้วย 'apt-' ให้ทำดังต่อไปนี้ เปิดเทอร์มินัลแล้วพิมพ์ 'apt-' แล้วกดปุ่ม TAB สองครั้งสิ่งนี้จะแสดงรายการคำสั่งทั้งหมดที่ขึ้นต้นด้วย 'apt-'

ตัวอย่างผลลัพธ์:

apt-add-repository    apt-extracttemplates  apt-key
apt-cache             apt-file              apt-mark
apt-cdrom             apt-ftparchive        apt-sortpkgs
apt-config            apt-get 

เพื่อรับข้อมูลรายละเอียดคุณสามารถตรวจสอบหน้าคนของคำสั่งที่เฉพาะเจาะจง

เช่น: man apt-get


1

ฉันชอบคิดแพ็คเกจสามแบบ:

  • แพ็คเกจระบบ (แพ็คเกจที่จำเป็นหรือแพคเกจมาตรฐานระดับความสำคัญหรือสูงกว่า)
  • แพ็คเกจผู้ใช้ (แพคเกจที่ติดตั้งด้วยตนเองที่มีความสำคัญเป็นตัวเลือกหรือเพิ่ม)
  • การพึ่งพาและการแนะนำ (ติดตั้งแพ็กเกจโดยอัตโนมัติ / ทุกสิ่งที่ไม่ใช่ระบบหรือแพ็คเกจผู้ใช้)

เพื่อแสดง "แพ็คเกจระบบ" ทั้งหมดที่คุณสามารถใช้ได้

aptitude search '(~pstandard|~pimportant|~prequired|~E)'

ฉันต้องการติดตั้งทั้งหมดและทำเครื่องหมายว่าติดตั้งด้วยตนเอง

aptitude install '(~pstandard|~pimportant|~prequired|~E)!~i'
aptitude unmarkauto '(~pstandard|~pimportant|~prequired|~E)~i~M'

เพื่อแสดงการใช้ "แพ็คเกจผู้ใช้" ทั้งหมด

aptitude search '~i!~M!(~pstandard|~pimportant|~prequired|~E)'

ในรายการนี้ควรมีแพ็คเกจที่คุณรู้ว่าคุณต้องการเท่านั้น แพ็คเกจอื่น ๆ ทั้งหมดอาจเป็นเพียงแค่การพึ่งพาหรือแนะนำแพ็คเกจอื่น ๆ คุณสามารถทำเครื่องหมายว่าติดตั้งโดยอัตโนมัติ

aptitude markauto libsomething

ดูการอ้างอิงคำค้นหาความถนัดและ
แพ็คเกจ Essential, Essential, Standard, Standard, Optional หรือ Extra คืออะไร? สำหรับข้อมูลพื้นหลัง


0
  • อัปเกรดแพ็กเกจที่จะถูกเก็บไว้เนื่องจากจะลบแพ็กเกจอื่นหรือเนื่องจากเป็นการอัพเกรดเคอร์เนล:

    sudo apt-get dist-upgrade
    
  • ล้างแพ็คเกจและการตั้งค่า

    sudo apt-get purge package
    
  • แสดงรายละเอียดของแพ็คเกจที่ทราบในฐานข้อมูลแพ็คเกจรวมถึงส่วนรุ่นการอ้างอิงผู้ดูแลและคำอธิบาย

    apt-cache show package
    
  • แสดงรายการไฟล์ในแพ็คเกจที่ติดตั้ง

    dpkg -L pkg
    
  • อัพเกรดแพ็คเกจทั้งหมด

    sudo apt-get upgrade
    

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.