Bagaimana saya mengetahui repositori mana yang berasal dari paket?


147

Apakah ada metode atau perintah yang dapat mengetahui dari mana repositori paket berasal?


1
Ini ambigu. Apakah maksud Anda: repositori yang saat ini diaktifkan memberikan paket dengan nama yang diberikan, atau: repositori mana yang digunakan untuk menginstal paket dengan nama yang saat ini diinstal? (Keduanya berguna. Saya mencari yang terakhir, bukan yang pertama.)
Reinier Post

Jawaban:


112

Diperlukan Perintah:

  • dpkg -s <package>- memungkinkan Anda menemukan versi yang telah Anda instal. ( sumber )
  • apt-cache showpkg <package>- akan menampilkan daftar Versi paket yang tersedia. Untuk setiap versi, sumber paket, dalam bentuk nama file indeks, akan diberikan.

Jika Anda ingin menemukan sumber paket yang saat ini diinstal, Anda akan memerlukan output dari dpkg -s <package>. Jika tidak, Anda cukup melihat keluaran versi terbaru dengan apt-cache showpkg <package>.

Contoh:

$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Version: 1.6.2-1ubuntu6
...

$ apt-cache showpkg liferea
Package: liferea
Versions: 
1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26

1.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26
...

Dari perintah pertama, saya dapat melihat bahwa Liferea versi 1.6.2-1ubuntu6 diinstal. Dari perintah kedua, saya dapat melihat bahwa versi itu terdaftar /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages.

Tanpa terlalu banyak usaha, saya dapat menyimpulkan bahwa garis sumber berisi archive.ubuntu.com, ubuntu, lucid, dan main.

Dan, tentu saja, saya /etc/apt/sources.listberisi baris berikut.

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse

mac, terima kasih atas jawaban terinci Anda! Sayangnya itu tidak membantu saya dengan masalah awal saya tentang masalah ketergantungan yang belum terpenuhi :-( Saya mencoba untuk menginstal libqt4-opengl dan mengatakan: Paket-paket berikut memiliki dependensi yang belum terpenuhi: libqt4-opengl: Tergantung: libqtcore4 (= 4: 4.6.2-0ubuntu5.1) tetapi 4: 4.7.0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 harus diinstal Tergantung: libqtgui4 (= 4: 4.6.2-0ubuntu5.1) tetapi 4: 4.7. 0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 harus diinstal
dfme

Sulit untuk melihat dari situ apa masalahnya. Anda harus membuka pertanyaan baru sehingga Anda dapat memberikan detail lengkap. Jika ya, tinggalkan tautan di komentar. :-)
Michael Crenshaw

4
apt-cache policy <package name>(dari: superuser.com/a/236605/37279 )
franzlorenzon

Apakah apt-cache {showpkg, policy} benar-benar menunjukkan dari mana paket yang diinstal diinstal , atau hanya dari mana ia akan diinstal pada saat ditanya?
Croad Langshan

1
Yang terakhir. Jika Saya biasanya menggunakan Ubuntu trustysumber paket, kemudian menambahkan sementara utopicuntuk saya sources.listuntuk menginstal versi 1.20ubuntu3 dari init-system-helpersdan kemudian menghapus repo lagi dari saya sources.list, apt-cache showpkg init-system-helpershanya akan berbohong tentang daftar paket asli dan apt-cache policy init-system-helpershanya akan menyatakan yang sudah jelas.
blubberdiblub

104

Gunakan perintah berikut. Ini memiliki output yang lebih baik:

apt-cache policy <Package Name>

Untuk Ubuntu 16.04 dan yang lebih baru ada cara yang lebih pendek untuk melakukan itu:

apt policy <Package Name>

11
Ini jawaban yang benar! Perintah-perintah dalam jawaban oleh mac9416 perlu interpretasi yang membosankan + menebak berdasarkan outputnya. Untuk informasi lebih lanjut tentang apt-cache policylihat juga superuser.com/a/236605/61370
pabouk

3
apt-cache policybagus tetapi beberapa kali Anda perlu apt-cache showpkgmembandingkan jumlah MD5 dari paket. Lihat jugadebsums --changed
gavenkoa

policyopsi ini adalah yang paling berguna ketika membandingkan dengansources.list
infinite-etcet

Ini harus menjadi jawaban yang diterima! @ poabuk benar. Jawaban ini lebih relevan untuk pertanyaan daripada yang diterima saat ini.
HEXcube

Seperti @ pablo-bianchi tunjukkan dalam jawabannya , bahkan lebih sederhana apt policy <package-name>dapat digunakan, mulai 16.04LTS dan seterusnya. Setelah 14.04LTS menjadi EOL di 2018, jawaban ini mungkin diedit untuk menggunakan perintah yang lebih baru.
HEXcube

9

apt di Ubuntu 16.04+

Di samping apt-cache policy, showpkgdan show, sekarang kami memiliki sub-perintah yang lebih sederhana, dengan mudah diingat: apt(jangan bingung dengan klasik apt-*):

apt policy <package> 

Atau alternatif dengan info lebih lanjut apt show <package>, baris dimulai dengan "APT-Sumber:" .

Deskripsi: Paket ini menyediakan alat baris perintah untuk mencari dan mengelola serta menanyakan informasi tentang paket sebagai akses tingkat rendah ke semua fitur pustaka libapt-pkg. Ini termasuk: apt-get, apt-cache, apt-cdrom, apt-config, apt-key.

Perintah dasar dari apt --help

Sub-perintah lain yang juga mudah diingat:

  • apt list - daftar paket berdasarkan nama paket
  • apt search - Cari dalam deskripsi paket
  • apt show - tampilkan detail paket
  • apt update - Perbarui daftar paket yang tersedia
  • apt install - instal paket
  • apt remove - hapus paket
  • apt purge- hapus paket dan file konfigurasi :

    Menghapus paket menghapus semua data paket, tetapi biasanya meninggalkan file konfigurasi pengguna yang kecil (dimodifikasi), seandainya penghapusan itu merupakan kecelakaan. Hanya mengeluarkan permintaan instalasi untuk paket yang dihapus secara tidak sengaja akan mengembalikan fungsinya seperti sebelumnya dalam kasus itu. Di sisi lain, Anda dapat membuang sisa-sisa ini dengan menelepon pembersihan bahkan pada paket yang sudah dihapus. Perhatikan bahwa ini tidak memengaruhi data atau konfigurasi apa pun yang disimpan di direktori rumah Anda.

  • apt upgrade - memutakhirkan sistem dengan menginstal / meningkatkan paket

  • apt full-upgrade - memutakhirkan sistem dengan menghapus / menginstal / meningkatkan paket
  • apt edit-sources - edit file informasi sumber

apt policy xxxtampak identik dengan apt-cache policy xxx, mungkin ini seharusnya komentar. Atau setidaknya menyebutkan bahwa apt showtampaknya perlu -aberalih untuk melihat "catatan tambahan" dari sumber lain
Xen2050

6

Sayangnya, informasi ini tidak direkam selama instalasi paket. Anda dapat membuat tebakan yang layak jika repositori masih dalam daftar sumber dan repositori masih memiliki paket:

grep -l PKG /var/lib/apt/lists/*

Bahkan synaptic tidak dapat memastikan apakah Anda menonaktifkan repositori dan memperbarui.



1

Ini sedikit lebih akurat:

apt-cache show <packagename> | grep "Version:"

Versi terbaru biasanya akan diinstal kecuali Anda telah memasang apt-pinning atau secara eksplisit menginstal versi tertentu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.