Jawaban:
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.
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 rpm
perintah 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, rpm
dikonfigurasikan untuk menggunakan basis data di bawah direktori home masing-masing pengguna, khususnya $HOME/.rpmdb
. Database ini dibuat secara diam-diam sesuai kebutuhan setiap kali rpm
dijalankan. 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.
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 rpm
perintah untuk menanyakan database. Seperti yang saya jelaskan sebelumnya, ini akan secara diam-diam membuat .rpmdb
direktori 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/.rpmdb
direktori 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 rpm
perintah sebagai cara mendeteksi tipe distribusi, tetapi tentu saja mungkin. Misalnya, Anda mungkin ingin menginstal LargeProprietaryProgram dari Initech, dan untuk itu Anda menjalankan install.sh
skrip sebagai root. Script ini mungkin mencoba untuk meminta basis data rpm untuk melihat apakah Anda menjalankan distribusi berbasis rpm, dan /root/.rpmdb
dibuat lagi.
Jadi itu menjelaskan mengapa Anda mungkin melihat /home/user/.rpmdb
dan /root/.rpmdb
direktori muncul di sistem Anda. Tetapi mengapa di direktori root sistem?
Penjelasan termudah untuk ini adalah bahwa $HOME
variabel 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 rpm
perintah. 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-get
untuk 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 $HOME
variabel, dan karena cara basis data rpm didefinisikan, basis data rpm kosong akan dibuat /.rpmdb
sebagai gantinya /root/.rpmdb
. Ini telah diperbaiki dalam rpm
paket untuk Ubuntu di versi pengembangan 14.10, jadi sekarang harus dibuat /root/.rpmdb
walaupun $HOME
tidak didefinisikan.
Saya harap ini menjelaskan mengapa ada direktori yang dipanggil .rpmdb
sama 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.
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.
alien
/.rpmdb
akan muncul pada sistem Ubuntu (yang tidak menggunakan rpm)?