Yanıtlar:
Bu dizini ne oluşturduğunu kesin olarak söyleyemem, ancak muhtemelen NVIDIA veya VirtualBox gibi üçüncü taraf Linux çekirdek sürücülerini DKMS kullanarak yüklemenin bir yan etkisi olarak veya tarafından sağlanmayan başka bir desteklenmeyen yükleyici komut dosyası tarafından oluşturulmuş olması muhtemeldir . Ubuntu. Bu dizin büyük olasılıkla hem rpm tabanlı hem de deb tabanlı dağıtımları destekleyecek bir yükleme işleminin yan etkisi olarak oluşturulmuştur. DKMS böyle bir yükleme betiği olur ve kesinlikle doğru koşullarda bu dizini oluşturabilirsiniz. Dizin, sisteminize zarar vermeden güvenle silinebilir, ancak daha sonra güncelleştirmeler yüklendiğinde yeniden oluşturulabilir. Bu sorunu izleyen açık hata raporu için hata # 1069350'ye bakın .
Bu kısa cevap, şimdi biraz daha ayrıntı.
Bildiğiniz gibi, rpm bir yazılım paketleme formatı ve paketleri kurmak ve kurulu paketlerin veritabanını ve bunların bağımlılıklarını korumak için bir araç setidir. Birçok dağıtım tarafından kullanılır, ancak Ubuntu ve diğer deb tabanlı dağıtımlar tarafından kullanılmaz. Ne yazık ki Ubuntu için, rpm
komutun her türlü kullanımı geçerli bir "rpmdb" veritabanının var olmasını veya yaratılmasını gerektirir.
Devir tabanlı dağıtımlarda, tanım gereği sistem çapında bir devir / dakikaya sahip oldukları için bu bir sorun oluşturmaz. Ubuntu sistemlerinde, sistem çapında bir rpm veritabanına gerek olmadığından rpm
, özellikle her kullanıcının ana dizini altında bir veritabanı kullanacak şekilde yapılandırılmıştır $HOME/.rpmdb
. Bu veritabanı her rpm
çalıştığında sessizce oluşturulur . Her kullanıcının ana dizininde olduğundan, paylaşılan izinlerle veya veritabanının bir yönetici tarafından oluşturulmasını istemeyle ilgili bir sorun yoktur. Her kullanıcı sadece kendi özel boş rpm veritabanını alır.
Bazı projelerin, bu dağıtımın rpm tabanlı, deb tabanlı veya her ikisi de olsun, herhangi bir dağıtım üzerinde çalışacak yükleme komut dosyaları oluşturmaktan hoşlandığı ortaya çıktı. DKMS böyle bir projedir, bir sistemin çalıştığı Linux çekirdeği için üçüncü taraf sürücülerin oluşturulmasına izin verir ve dağıtımlar üzerinde çalışmak için yazılır. Hangi dağıtımın çalıştığını ve hangi çekirdek sürümünün mevcut olduğunu belirleme mantığının bir kısmında rpm
, veritabanını sorgulamak için bir komut yürütür . Daha önce açıkladığım gibi, .rpmdb
geçerli kullanıcının ana dizininde zaten bir dizin yoksa bu sessizce bir dizin oluşturur . Ubuntu rpm tabanlı bir dağıtım olmadığından ve DKMS devam ettiğinden veritabanı sorgusu başarısız olmalıdır.
Ubuntu'dan VirtualBox, NVIDIA, ndiswrapper veya openswan gibi herhangi bir Linux çekirdek sürücü paketi yüklerseniz, muhtemelen çekirdeğiniz için bu sürücüleri yüklemek için DKMS kullanıyorsunuzdur. Bu genellikle sürücü Ubuntu depolarından kurulduğunda otomatik olarak yapılır. Çekirdek veya sürücü güncellemesi yüklendiğinde DKMS, sürücüyü kullanılabilir tüm çekirdek sürümleri için yeniden oluşturmak üzere yeniden çalışır. Bu paketler güncellendiğinde, /root/.rpmdb
dizinin aslında kökün ana dizininde göründüğü gösterilmiştir, çünkü kök güncellemeleri yüklemek için gereklidir.
rpm
Dağıtım türünü algılamanın bir yolu olarak komutları da yürütebilecek başka bir üçüncü taraf yükleme komut dosyası bilmiyorum , ancak kesinlikle mümkün. Örneğin, LargeProprietaryProgram'ı Initech'ten yüklemek ve bunun için bir install.sh
komut dosyasını kök olarak çalıştırmanız gerekebilir . Bu komut dosyası, bir rpm tabanlı dağıtım çalıştırıp çalıştırmadığınızı görmek için bir rpm veritabanını sorgulamaya çalışabilir ve /root/.rpmdb
yeniden oluşturulur.
Böylece sisteminizde neden görebileceğiniz /home/user/.rpmdb
ve /root/.rpmdb
dizinler görünebilir . Ama neden sistem kök dizininde?
Bunun en kolay açıklaması, $HOME
ortam değişkeninin bir şekilde çalışan bazı işlem bağlamında ayarlanmamış olmasıdır rpm
. Tartışma uğruna DKMS kullanalım çünkü rpm
komutları çalıştırabileceğini kesinlikle biliyoruz . Genellikle paketler yüklendiğinde veya güncellendiğinde çalıştığından, kullandığınız paket yöneticisinin bulunduğu ortamda çalışır. sudo apt-get
Paketleri yüklemek için kullanırsanız , doğru bir miras alır $HOME
. PackageKit kullanırsanız, hiç $HOME
değişkeni olmayabilir . Synaptic veya Ubuntu Yazılım Merkezi tarafından hangi ortamın sağlandığından emin değilim.
DKMS $HOME
değişkeni olmayan bir ortamda çalışıyorsa ve rpm veritabanının tanımlanma biçimi nedeniyle, /.rpmdb
yerine boş bir rpm veritabanı oluşturulacaktır /root/.rpmdb
. Bu, rpm
14.10 geliştirme sürümünde Ubuntu için pakette düzeltildi , bu nedenle tanımlanmamış /root/.rpmdb
olsa bile şimdi oluşturulmalıdır $HOME
.
Umarım bu neden .rpmdb
bir Ubuntu sisteminde neden çağrılan dizinler olduğunu , neden otomatik olarak oluşturulabileceğini ve neden doğru koşullar altında kök dizinde oluşturulabileceğini açıklar . Endişelenecek bir şey yok, bu dizinin varlığında kötü niyetli bir şey yok ve varlığı estetik veya güvenlik tarayıcılarına saldırgansa silinebilir.
RPM (Red Hat Paket Yöneticisi) bir paket yönetim sistemidir. RPM ilk olarak 1997'de Erik Troan ve Marc Ewing tarafından Red Hat Linux'ta kullanılmak üzere yazılmıştır , ancak şimdi birçok GNU / Linux dağıtımında kullanılmaktadır.
Paket yöneticisinin perde arkasında çalışmak , depolanan RPM veritabanıdır ( RPMDB ) /var/lib/rpm
. Kurulu rpm'lerin tüm meta bilgilerini içeren tek bir veritabanından (Paketler) oluşur . Veritabanı, bir kullanıcı (RPM kullanarak) bir paket yüklediğinde değiştirilen ve oluşturulan tüm dosyaları izlemek için kullanılır , böylece kullanıcının (RPM aracılığıyla) değişiklikleri geri almasını ve paketi daha sonra kaldırmasını sağlar.
alien
/.rpmdb
bir Ubuntu sisteminde (rpm kullanmayan) görüneceğini açıklamakla ne kadar ilgili ?