問題:
當我輸入:
dpkg-query -Wf '${Package;-40}${Priority}\n' | sort -b -k2,2 -k1,1
我得到了我的機器上所有已安裝軟體包的列表,例如:
...
raspberrypi-artwork extra
raspberrypi-bootloader extra
raspberrypi-ui-mods extra
raspi-config extra
rpi-update extra
sonic-pi extra
ssh extra
triggerhappy extra
wireless-tools extra
xkb-data extra
adduser important
apt important
apt-utils important
aptitude important
aptitude-common important
bsdmainutils important
...
我最近運行了一個安裝了很多東西的腳本,現在我的機器響應如下:(/usr/bin/mandb: can't write to /var/cache/man/2694: No space left on device
路徑發生變化,但它總是告訴我沒有剩餘空間。)
我看到的可能的標籤是:
- 標準
- 額外的
- 重要的
- 選修的
- 必需的
我在各個存儲庫中都有未提交的更改,並且我希望能夠推送本地更改,但當我嘗試推送時,我不斷收到此錯誤:
$ git push
fatal: write error: No space left on device
error: Couldn't write .git/refs/remotes/origin/master.lock
error: Cannot update the ref 'refs/remotes/origin/master'.
Everything up-to-date
我還應該說,我知道一切都不是最新的。
系統:
這是在運行“wheezy”raspbian 的樹莓派上。
問題:
我安裝了數百個軟體包。如何刪除所有標有“額外”的包裹?這是釋放電腦空間的最佳方法嗎?我在各個存儲庫中都有未提交的更改,並且我希望能夠推送我的本地更改。
我也會接受一個刪除除必需和重要之外的所有內容的答案。 Git 被標記為可選,我更願意保留它(儘管我總是可以在刪除所有不需要的套件後再次安裝它)。
提前致謝!
答案1
您可以使用以下命令清除所有可選和額外的軟體包:
sudo apt-get --simulate purge $(dpkg-query -Wf '${Package;-40}${Priority}\n' | awk '$2 ~ /optional|extra/ { print $1 }')
此--simulate
標誌可讓您查看將刪除的內容,而無需實際刪除所有內容。刪除該標誌以實際卸載軟體包。
您將需要重新安裝 git,因為它將與其他可選和額外的軟體包一起刪除。
您可能需要一些可選的和額外的軟體包,因此請小心刪除。更多這裡:https://askubuntu.com/questions/79665/keep-only-essential-packages
答案2
你必須檢查在哪裡你的空間用完了。該df(1)
命令告訴您哪些檔案系統已滿。
空間不足的一個常見原因是日誌檔案過大(檢查下/var/log
,您的系統應該有命令來清除過時的日誌)。請注意,sort(1)
使用臨時文件,無論是在var/tmp
或中/tmp
,如果其中任何一個包含太多的垃圾,它可能會因空間不足而失敗。
答案3
由於您已經安裝了 aptitude,它可以在這裡為您提供幫助。啟動aptitude
並限制(快捷鍵l
:)視圖以匹配包
~i ~pextra
看線上手冊或/usr/share/doc/aptitude/README
作為搜尋詞參考。
現在,您可以選擇將它們全部卸載:按-
每個頂級標題下方的按鈕將軟體包標記為卸載(保留配置文件),或_
將它們標記為清除(刪除配置文件),然後g
繼續。如果您想保留某些軟體包,您確實有機會查看該清單。