2013-01-02 25 views
1

是否可以獲取軟件包的安裝時間以及該軟件包的編譯時間?python-apt軟件包,獲取時間pkg已安裝並生成時間?

例如:

import apt 

def get_pkg_details(): 
    apt_cache = apt.Cache() 
    selected_pkg = apt_cache["git"] #Example package 

    time_installed = selected_pkg.installedTime() #????? 

我知道這是可能的,但RPM我還沒有發現任何東西相似,這對APT的任何文件。

在RPM安裝包的時間和建立時間可以用下面的普查員進行訪問:

RPMTAG_INSTALLTIME 
RPMTAG_BUILDTIME 

蟒蛇,容易文檔: http://stuff.mit.edu/afs/athena/system/i386_deb50/os/usr/share/doc/python-apt/html/apt/package.html#examples

RPM代碼API: http://rpm.org/api/4.6.0/group__rpmtag.html

回答

1

我維護通過apt-server分發的代碼的一部分,所以我也必須處理這個問題,以獲得一個包的構建時間的基本概念得到包的時間戳os.path.getmtime() ...

我的代碼行也把它變成一個日期時間對象。

datetime.datetime.fromtimestamp(os.path.getmtime("PATH")) 
+0

這適用於PKG的名字是準確的;我迭代安裝在系統中的軟件包,我逐一獲取了所需的信息。由於名稱擴展名,如安裝的pkg「libopenal1」,有些不匹配,我得到異常錯誤,因爲在「/ var/lib/dpkg/info」中,它顯示爲「libopenal1:amd64.shlibs」。任何想法來解決這個問題? – Dayan

+0

@Dayan好吧,你可以遍歷每個文件,然後你將有每個包的安裝時間。或者你可以只用你想要的名稱模式的軟件包來將它們集中起來,無論哪種方式,在該路徑獲取文件的mtime會給你軟件包的安裝時間。 –

1

您可以找到安裝日期,請用以下內容。

ls /var/lib/dpkg/info/*.list -lah | grep packagename 

-rw-r--r-- 1 root root 1.4K Dec 29 18:50 /var/lib/dpkg/info/libasound2-dev:i386.list 
-rw-r--r-- 1 root root 4.5K Dec 29 16:09 /var/lib/dpkg/info/libasound2:i386.list 
-rw-r--r-- 1 root root 2.3K Dec 29 16:10 /var/lib/dpkg/info/libasound2-plugins:i386.list 

至於編譯日期,你可以查找包在/ var /緩存/ apt/archives目錄的修改時間/