Rpm
將文件的創建時間 (RPM) 從下載時間更改為建構時間
我將通過創建自己的內部儲存庫服務
createrepo
並希望提供一個 Java 儲存庫。自動下載 JRE 和 JDK 包,如Stack Overflow 中所述,給我留下的文件從下載時開始就有時間戳。文件的創建時間設置為下載腳本的執行時間。
為了進一步處理,我喜歡將時間戳設置為 RPM 包的建構時間(…以便我可以通過
ls -al
、ll
、--full-time
等查詢它們)。如何將文件的創建時間(RPM)從下載時間更改為自動建構時間?
經過一番研究,我發現我可以通過
rpm -qip
.BUILDTIME=$(rpm -qip --nosignature ${FILENAME} | grep -i "Build Date : " | sed -e 's/Build Date : //g') echo ${BUILDTIME}
該
date
命令可以重新格式化給定的日期和時間字元串TIMESTAMP=$(date --date="${BUILDTIME}" "+%Y%m%d%H%M") echo ${TIMESTAMP}
以便以後可以與
touch
命令一起使用。touch -m -a -t ${TIMESTAMP} ${FILENAME}
通過遍歷特定目錄中的所有文件,可以列出包含的所有包的所有創建時間並自動對其進行修改。
#!/bin/bash for FILENAME in *.rpm; do echo ${FILENAME} BUILDTIME=$(rpm -qip --nosignature ${FILENAME} | grep -i "Build Date : " | sed -e 's/Build Date : //g') echo ${BUILDTIME} TIMESTAMP=$(date --date="${BUILDTIME}" "+%Y%m%d%H%M") echo ${TIMESTAMP} touch -m -a -t ${TIMESTAMP} ${FILENAME} done