很抱歉,如果這樣的事情已經存在,但在我的研究中,我沒有發現任何證據表明它確實存在。
我想要什麼:一個我可以編寫的「監視」類型腳本,我會在 apt-get 安裝一個或多個(強調更多)軟體包之前「啟動」它,然後在完成後「停用」它。它將「記錄」安裝的所有內容,如果我對安裝不滿意,它將用一個命令刪除所有安裝的所有痕跡。
我想這樣做是因為我是一名程式設計師,為新語言設定程式設計環境可能會充滿錯誤(或充滿我自己的使用者錯誤)。例如 go lang 給我帶來了麻煩,但 ruby/rails 卻相當輕鬆,等等
現在,我的理解是 apt-get purge 和 autoremove 在清理軟體包系統方面做得非常好,但我想我的想法在連續安裝許多軟體包時仍然有用。
我的問題:我應該如何最有效地完成這個任務,速度和邏輯性是首要任務。
我發現的所有(甚至看似糟糕的)實施方法:
--inotifywait:對於系統範圍的使用來說是不可思議的,只能應用於「流行」目錄,但會使檔案從裂縫中溜走
--diff:與上面相同,差不多。
--git:使用git保存可以回滾的「圖片」。與上面相同的問題,但程度較小(在我看來。如果不是,請糾正我)
-- 記錄安裝的軟體包名稱(以某種方式)/簡單地計算安裝的軟體包數量,然後進入/var/cache/apt 並使用apt-get remove 等。溜走嗎?
我按照我的想法的順序列出了這些想法,並結合我的研究,這樣你就可以看到它們演變成更合理的解決方案。
所以本質上我來這裡尋求建議,因為我完全可以輕鬆地編寫 bash 腳本,但我以前從未需要過腳本,所以我尋求更明智的建議。老實說,這既是為了樂趣,也是為了學習。
謝謝!
答案1
對於任何有相似目標的人來說,
我最終將 /var/log/apt/history.log 保存在兩個文字檔案中,一個在安裝「會話」之前,一個在安裝「會話」之後。另外,為了允許可能的擴展,我將差異的輸出保存到一個文件中,該文件只是新安裝的軟體包的軟體包名稱(這可以允許交互式命令列選項,它將使用(Y/n )刪除選項,而不是批量刪除)
讓其他人走上正確的道路:sed/grep、diff、cut、tail、xargs,以及使用 > 和 >> 將輸出傳送到檔案。以及基本的 bash 腳本。