Folder Tidak Dikenal pada root System /.rpmdb

16

Adakah yang bisa menjelaskan untuk apa folder /.rpmdb di direktori root? Aplikasi mana yang membuatnya dan menggunakannya?

BSimulj
sumber

Jawaban:

11

Saya tidak bisa mengatakan secara pasti apa yang membuat direktori ini, tetapi kemungkinan itu dibuat baik sebagai efek samping dari menginstal driver kernel Linux pihak ketiga seperti NVIDIA atau VirtualBox menggunakan DKMS , atau oleh beberapa script installer yang tidak didukung lainnya yang tidak disediakan oleh Ubuntu. Direktori ini kemungkinan besar dibuat sebagai efek samping dari proses instalasi yang terjadi untuk mendukung distribusi berbasis rpm dan berbasis deb. DKMS kebetulan merupakan skrip instalasi dan pasti dapat membuat direktori ini dalam kondisi yang tepat. Direktori dapat dihapus dengan aman tanpa merusak sistem Anda, tetapi dapat dibuat lagi ketika pembaruan diinstal nanti. Lihat bug # 1069350 untuk laporan bug terbuka melacak masalah ini.

Itulah jawaban singkatnya, sekarang lebih detail.

Apa itu .rpmdb?

Seperti yang Anda ketahui, rpm adalah format kemasan perangkat lunak dan seperangkat alat untuk menginstal paket dan memelihara basis data paket yang diinstal dan saling ketergantungannya. Ini digunakan oleh banyak distribusi tetapi tidak oleh Ubuntu dan distribusi berbasis deb lainnya. Sayangnya untuk Ubuntu, bagaimanapun, setiap penggunaan rpmperintah ini membutuhkan database "rpmdb" yang valid untuk dibuat atau dibuat.

Pada distribusi berbasis rpm ini bukan masalah karena mereka memiliki rpmdb seluruh sistem menurut definisi. Pada sistem Ubuntu, karena tidak diperlukan untuk basis data rpm sistem, rpmdikonfigurasikan untuk menggunakan basis data di bawah direktori home masing-masing pengguna, khususnya $HOME/.rpmdb. Database ini dibuat secara diam-diam sesuai kebutuhan setiap kali rpmdijalankan. Karena ada di direktori home masing-masing pengguna, tidak ada masalah dengan izin bersama atau membutuhkan database yang akan dibuat oleh administrator. Setiap pengguna hanya mendapatkan basis data rpm pribadi mereka sendiri.

Mengapa rpm dijalankan sama sekali di Ubuntu?

Ternyata beberapa proyek suka membuat skrip instalasi yang akan berfungsi pada distribusi apa pun, apakah distribusi itu berbasis rpm, berbasis deb, atau tidak sama sekali. DKMS adalah salah satu proyek semacam itu, memungkinkan pengandar pihak ketiga dibangun untuk kernel Linux apa pun yang sedang dijalankan suatu sistem, dan ditulis untuk bekerja di seluruh distribusi. Dalam bagian dari logikanya untuk menentukan distribusi mana yang sedang berjalan dan versi kernel mana yang hadir, ia menjalankan rpmperintah untuk menanyakan database. Seperti yang saya jelaskan sebelumnya, ini akan secara diam-diam membuat .rpmdbdirektori jika belum ada di direktori home pengguna saat ini. Permintaan basis data akan gagal, karena Ubuntu bukan distribusi berbasis rpm, dan DKMS berlanjut.

Jika Anda menginstal paket driver kernel Linux tambahan dari Ubuntu seperti VirtualBox, NVIDIA, ndiswrapper, atau openswan, Anda mungkin menggunakan DKMS untuk menginstal driver tersebut untuk kernel Anda. Ini biasanya dilakukan secara otomatis ketika driver diinstal dari repositori Ubuntu. Jadi, kapan saja pembaruan kernel atau driver diinstal, DKMS berjalan lagi untuk membangun kembali driver untuk semua versi kernel yang tersedia. Telah ditunjukkan bahwa ketika paket-paket itu diperbarui, /root/.rpmdbdirektori sebenarnya muncul, yang ada di direktori home root karena root diperlukan untuk menginstal pembaruan.

Saya tidak tahu ada skrip instalasi pihak ketiga spesifik lain yang juga dapat menjalankan rpmperintah sebagai cara mendeteksi tipe distribusi, tetapi tentu saja mungkin. Misalnya, Anda mungkin ingin menginstal LargeProprietaryProgram dari Initech, dan untuk itu Anda menjalankan install.shskrip sebagai root. Script ini mungkin mencoba untuk meminta basis data rpm untuk melihat apakah Anda menjalankan distribusi berbasis rpm, dan /root/.rpmdbdibuat lagi.

Jadi itu menjelaskan mengapa Anda mungkin melihat /home/user/.rpmdbdan /root/.rpmdbdirektori muncul di sistem Anda. Tetapi mengapa di direktori root sistem?

Mengapa .rpmdb dibuat di direktori root?

Penjelasan termudah untuk ini adalah bahwa $HOMEvariabel lingkungan tidak disetel entah bagaimana dalam beberapa konteks proses yang berjalan rpm. Mari kita gunakan DKMS demi argumen karena kita secara pasti tahu itu dapat menjalankan rpmperintah. Karena biasanya berjalan ketika paket diinstal atau diperbarui, ia berjalan di lingkungan manajer paket apa pun yang kebetulan Anda gunakan. Jika Anda menggunakan sudo apt-getuntuk menginstal paket, itu akan mewarisi yang benar $HOME. Jika Anda menggunakan PackageKit, itu mungkin tidak memiliki$HOME variabel sama sekali. Saya tidak yakin lingkungan apa yang disediakan oleh Synaptic atau Ubuntu Software Center.

Jadi jika DKMS berjalan di lingkungan yang tidak memiliki $HOMEvariabel, dan karena cara basis data rpm didefinisikan, basis data rpm kosong akan dibuat /.rpmdbsebagai gantinya /root/.rpmdb. Ini telah diperbaiki dalam rpmpaket untuk Ubuntu di versi pengembangan 14.10, jadi sekarang harus dibuat /root/.rpmdbwalaupun $HOMEtidak didefinisikan.

Saya harap ini menjelaskan mengapa ada direktori yang dipanggil .rpmdbsama sekali pada sistem Ubuntu, mengapa direktori tersebut dibuat secara otomatis, dan mengapa kita dapat dibuat di direktori root di bawah kondisi yang tepat. Tidak ada yang perlu dikhawatirkan, tidak ada yang berbahaya dengan keberadaan direktori ini, dan dapat dengan mudah dihapus jika kehadirannya menyinggung estetika atau pemindai keamanan.

Mike Miller
sumber
-1

RPM (Red Hat Package Manager) adalah sistem manajemen paket. RPM awalnya ditulis pada tahun 1997 oleh Erik Troan dan Marc Ewing untuk digunakan di Red Hat Linux, tetapi sekarang digunakan di banyak distribusi GNU / Linux.

Bekerja di belakang layar dari manajer paket adalah database RPM ( RPMDB ), disimpan di /var/lib/rpm. Ini terdiri dari satu basis data (Paket) yang berisi semua informasi meta dari rpms yang diinstal . Basis data digunakan untuk melacak semua file yang diubah dan dibuat ketika pengguna (menggunakan RPM) menginstal paket , sehingga memungkinkan pengguna (melalui RPM) untuk membalikkan perubahan dan menghapus paket nanti.


Referensi: http://en.wikipedia.org/wiki/RPM_Package_Manager

Lucio
sumber
4
Bagaimana hal ini relevan untuk menjelaskan mengapa /.rpmdbakan muncul pada sistem Ubuntu (yang tidak menggunakan rpm)?
Gilles 'SANGAT berhenti menjadi jahat'
1
mungkin digunakanalien
jet