Ketika saya ingin mendaftar paket yang diinstal, saya biasanya melakukannya dengan salah satu dari dua cara.
Cara kuno menggunakan rpm -qa | grep <whatever I look for>
, dan hanya itu.
Tetapi baru-baru ini saya ingin tampilan yang lebih komprehensif dari paket saya, dan selanjutnya, saya gunakan dnf list --installed <whatever I look for>
.
Namun ketika melihat hasilnya ada beberapa hal yang saya tidak mengerti.
Pertimbangkan contoh ini:
# dnf list --installed zsh
Last metadata expiration check: 0:13:25 ago on Mon Jul 11 05:48:04 2016.
Installed Packages
zsh.x86_64 5.2-5.fc24 @@commandline
(spasi dalam hasil cetak sebenarnya lebih luas)
Jadi entri yang dihasilkan, adalah: «paket» «versi» «repo».
Dalam contoh saya itu:
- paket: zsh.x86_64
- versi: 5.2-5.fc24
- repo: @@ commandline
Sejauh ini tabel yang dihasilkan dapat dimengerti, tapi saya bingung apa arti kedua '@@' di depan nama repo.
Juga, "commandline" menyarankan paket diinstal dari baris perintah (mengunduh RPM, dan kemudian melakukan dnf install whatever.rpm
di baris perintah , dll.). Namun saya cukup yakin saya telah menginstal zsh
via dnf install zsh
.
Tapi itu belum semuanya.
Saya sudah beberapa paket pada sistem saya diinstal dari repo @System
, @fedora
(namun ada juga fedora
tanpa @
) dan hal-hal seperti @@commandline
.
Jadi apa artinya itu @
atau @@
tepatnya di depan nama repo?
Dan kenapa saya memiliki begitu banyak paket yang diinstal @@commandline
meskipun saya lebih dari yakin saya telah menginstalnya dari repo?
sumber
dnf
sangat sunyi tentang ini. Misalkan '@' menunjukkan paket yang diinstal, apakah '@@' berarti itu diinstal secara manual dari sumber non-repo, mungkin? Saya benar-benar berharap seseorang akan mengklarifikasi.(Penafian: Saya tidak dapat memberikan sumber untuk semua ini, karena saya belum pernah melihat dokumentasi yang benar-benar membahas hal-hal ini. Informasi yang harus diikuti hanyalah apa yang saya dapat suss melalui inspeksi, eksperimen blackbox, sembarangan coba-coba, dan dugaan lama yang polos. Juga, peringatan yang adil, terlalu banyak mengekspos sampai terlalu lama.)
DNF menambahkan @ untuk menunjukkan repo sebuah diinstal paket dipasang dari , di
dnf list
konteks. Seperti yang Anda catat:Namun dalam kenyataannya, Anda tidak akan pernah melihat paket yang datang dari
fedora
pada diinstal daftar, karena setiap paket ada menunjukkan beberapa @ -repo sebagai sumbernya. (Anda dapat memverifikasi bahwa dengan menjalankansudo dnf list installed
dan memeriksa; tidak ada repo yang terdaftar tanpa setidaknya satu tanda @.) Ketika Anda melihat informasi paket dengandnf info
, "From repo:
" bidang akan menunjukkan nama repo tanpa@
. ("From repo: fedora
" Jadi sangat mungkin, dan setara dengan@fedora
dalam daftar yang diinstal.)Tetapi beberapa repo diberi nama dengan
@
tanda di depan. Seperti yang ditemukan JohnKoch di sumber hawkey, "@commandline" didefinisikan sebagai "nama repo" untuk "repo baris perintah". Jadi,@@commandline
dalamdnf list
daftar hanya menunjukkan paket yang diinstalFrom repo: @commandline
, repo yang membingungkan diberi nama yang dimulai dengan tanda @ sendiri.dnf info
pada setiap paket yang terinstal akan ditampilkanRepository: @System
, yang merupakan@
repo virtual yang dinamai lainnya . Tampaknya itu@System
adalah repo virtual yang memegang set paket yang saat ini diinstal, dan repo sumber@commandline
virtual dari mana sebuah paket datang, ketika itu tidak berasal dari repo apa pun.Arti
@commandline
dan@System
, dan hubungan mereka satu sama lain, tampaknya telah berubah sejak saya pertama kali menulis jawaban ini. Dalam beberapa hal itu lebih konsisten, dan mengatasi beberapa keberatan saya sebelumnya tentang bagaimana@commandline
digunakan. Saya tidak lagi melihat setiap paket yang diinstal terdaftar sebagai dari@@System
, dan out-of-band menginstal memang akan sekarang menunjukkanFrom repo: @commandline
(@@commandline
dalam konteks daftar).dnf info
pada paket out-of-band yang diinstal biasanya menunjukkan sesuatu seperti berikut:Jika saya melakukan
dnf reinstall remi-release
(karena paket tersebut dalamremi
repo), itu berubah menjadi:Satu hal lain tentang repo sumber: Repo yang terdaftar di
From repo:
bidang selalu repo yang ada dalam konteks repo saat ini . Dengan kata lain, sumber instalasi suatu paket bukan hanya string yang berisi nama repo; paket yang diinstal dikaitkan dengan identitas repo yang menyediakan sebagaimana ada (atau ada) dalam sistem.Karena kebanyakan repo adalah versi distro, mereka diredefinisi dengan setiap rilis Fedora baru. (Seperti misalnya
fedora
repo menjadi set paket yang membentuk rilis baru, repo yang sama sekali berbeda dari "fedora
" yang ada pada rilis sebelumnya.) Jadi, setiap kali upgrade sistem dilakukan, banyak identitas repo lama batal.DNF (atau hawkey) digunakan untuk membuang paket yang diinstal dari repo yang tidak lagi ada
@commandline
sebagai sumber repo mereka. Saya katakan "dulu", karena itu (untungnya) tidak lagi dilakukan. Paket terinstal yang berasal dari repo yang tidak ada lagi tidak akan lagi menunjukkan sumbernya sebagai@@commandline
/From repo: @commandline
. Bahkan,dnf info
menunjukkan bahwa mereka tidak lagi memiliki setiap sumber repo. Misalnya,sitecopy
adalah paket Fedora yang sejak itu sudah pensiun. Saya menginstalnya darifedora
atauupdates
repo 7 atau 8 rilis yang lalu, dan masih menginstalnya:Tidak ada yang
From repo:
terdaftar.Hal ini membingungkan berarti bahwa
dnf list installed
akan menunjukkan bahwa paket (dan lain-lain seperti itu) dengan@System
(satu@
) tercantum di samping itu. Jadi dalam beberapa hal kami baru saja menukar satu inkonsistensi dengan yang lain, karena kolom itu tidak lagi selalu menjadi sumber repo dengan@
prepended. Tetap saja, saya lebih suka keadaan saat ini.Catatan kaki
(Terkadang ditampilkan. "Paket yang Tersedia" tidak selalu muncul di setiap proses
dnf list
: Jika versi paket yang terinstal adalah versi terbaik yang tersedia, itu terdaftar di bawah "Paket Terpasang" jadi akan berlebihan untuk juga mendaftar di bawah "Paket yang Tersedia". Menggunakan--showduplicates
akan memaksa bagian "Paket yang Tersedia" yang mencakup semua contoh yang diketahui, terlepas dari versi, apakah diinstal atau dapat diunduh.)sumber