簡體   English   中英

如何確定是否正在安裝rpm?

[英]How do I determine if rpm installation is in progress?

我正在編寫一個腳本,其中必須根據當前是否正在安裝rpm來分叉指令。

我知道如何使用dpkg-如果deb軟件包安裝已打開,則將創建/var/lib/dpkg/lock文件並存在。

rpm是否有類似的東西,或者還有其他方法可以知道正在安裝rpm?

請參閱yum python代碼,該代碼檢測是否正在執行另一個(通常是yum)進程。

通常,有太多分層的鎖定方案(通常)對rpmdb進行序列化來提供確定的答案。 rpm的舊版本(即上世紀)使用對/ var / lib / rpm / Packages的fcntl鎖來序列化rpmdb訪問。 稍微現代一點的系統(例如10年前)使用Berekeley DB並發訪問鎖定(在每個表級別的讀取器<->單寫入器排除項上序列化)。

甚至更現代的rpm(例如5年前)都引入了事務性的每頁鎖定和ACID行為,這是另一種序列化方案。

諸如yum / yast / urpmi之類的各種分解器都引入了其他鎖定層,但不幸的是,其中大多數是不可互操作的。

簡短的答案:沒有一種鎖定方案可以序列化廣泛部署的並發RPM(通常是rpmdb)訪問。 最有效的事實鏈接是Berkeley DB提供的鏈接,因為rpmdb訪問通常是最有爭議的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM