2009年10月16日 星期五

ubuntu修理遺失的金鑰,其實可以這樣做 apt-add -f

020712更新加入
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 16字 
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com [缺少的金鑰號碼] 


101709取自
http://moskyat.pixnet.net/blog/post/26260613
APT-ADD 快速導引 (0.3.x and 0.4.x 適用):
apt-add 是一個在使用 apt 系統下,可以快速懶惰的加入安裝第三方軟體所需的「來源列」以及「金鑰」的 Python 腳本。0.3 版以後提供的動作註記功能甚至可以讓您快速的還原您的軟體環境請按這裡下載最新版!
一般要安裝由第三方來源所提供的軟體時,以 Ubuntu 的 GUI 來說,必須從「系統/軟體來源」進行繁複的增加來源列或金鑰的動作,只有一些的時候還不算太麻煩。但如果要同時增加很多的來源列及金鑰,增加來源列或金鑰就是一場惡夢了 XD (比方說拿到別人的來源列表,不想動到原有來源列的時候。) 以 CLI 來說,如果不含別名的使用,增加來源列或金鑰則需要下面的指令:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 12345678 ABCDEF12 ... #金鑰
echo 'deb http://a.source.line version section' >> /etc/apt/sources.list #來源列
以上的指令都非常的「長」,打起來很累人。雖然說比 GUI 愉快很多,但量多的時候也是很痛苦的一件事情。apt-add 就是為了讓增加第三方來源變得輕鬆愉快而存在的 XD。
apt-add 模仿了 apt-* 的指令,執行時通常需要一個副命令 (副命令其實也是可以捨去的,詳請見後面說明。),目前支援的副命令如下:
  • key: 以金鑰 ids (8 hex)、long ids (16 hex)、finger prints (40 hex) 從金鑰伺服器匯入金鑰。
  • source: 以標準的來源列格式匯入來源列,
  • action: 以標準的 aptitude 安裝/移除/清除命令當作參數,除了更動軟體以外,會在列表中紀錄註記,方便日後還原。([package][+-_],+ 安裝、- 移除、_徹底移除。) (0.3 以上)
  • import: 將 apt-add 可解析的備份副本匯入 (一般的 sources.list 即可,金鑰可用註解方式寫入)
  • export: 匯出 apt-add 可解析的來源列與金鑰的備份副本。
基礎用法介紹:
sudo apt-add key 12345678 ABCDEF12 ...
sudo apt-add source 'deb http://a.source.line version section' ...
sudo apt-add action p7zip-full+ audacious+ pitivi+ [package][+-_] ...
sudo apt-add import backup1.list backup2.list ...
sudo apt-add export a-backup.list #同時僅能匯出至一個檔案
當然,為了讓大家可以更方便的使用,不輸入副命令的情況,其實 apt-add 也是可以運作的。在不使用副命令的情況,apt-add 會看參數資料自動將參數歸類為 key 、 source 或 action!比方說:
sudo apt-add 12345678 'deb http://a.source.line version section' p7zip-full+ ABCDEF12 ...
除了這樣,有時候提供來源列或金鑰的網站不是那麼的友善,要複製到恰好的金鑰 id/long id/fp 不是那麼的容易。為此,apt-add 也可以接受模糊的參數,只要一個參數裡面有含可供輸入的資料就行了。apt-add 會利用內建的正規式條件過濾出正確的資料,比方說:
sudo apt-add 'here is the key of software:1024R/12345678. and here is ...'
有時候真的是一個字都不想打,連引號也不想打了,apt-add 可以嗎?apt-add: OK!沒錯,只要啟用了進階參數解析器,即使不使用引號包裹來源列也是可以的喔 (0.3 以上,但 0.4 以後暫時摘除。)(謝謝 c9s 提供這個懶惰想法 XD。)
sudo apt-add here is the key of software:1024R/12345678. ... -a
0.3 的來源列表管理功能也進化了一級,除了 0.2.4 以後提供的註解解除和加上的功能以外,也提供了 -d 的執行選項,讓您可以移除來源列、金鑰或動作註記。比方說:
sudo apt-add here is the key of software:1024R/12345678. ... -ad
sudo apt-add 'here is the key of software:1024R/12345678. ...' -d
最後 apt-add 提供了幾個方便的執行選項可以讓大家在使用時更加方便,-f (--fix) 、-u (--update)、-g (--upgrade)-f 是啟動修復遺失金鑰的執行選項。啟用後,apt-add 會自動搜索套件庫內沒有金鑰的來源列,並自動完成加入的動作。-u 則是方便使用者不需要再多打指令即可安裝下完 apt-add 之後就自動更新套件庫,接著就可安裝需要的軟體。-g 是因為 apt-get 要打兩行才能升級系統,真的非常麻煩而生的懶惰選項 XDD (0.3 以上)以下是範例:
sudo apt-add -f
sudo apt-add 'deb http://a.source.line version section' -usudo apt-add -ug #更新之後升級系統sudo apt-add 'deb http://a.source.line version section' -ug #增加來源列後更新並升級系統
從 -f 可以衍生出一個更懶惰的功能,就是在增加來源列時,後面加上 -f,這樣就不用另外再添加金鑰,apt-add 自動搞定 XD (不過這樣會跑的比較慢)。比方說:
sudo apt-add 'deb http://a.source.line version section' -fu
上面介紹的執行選項很多,如果常常要用,每次都要打也很煩。所以 apt-add 提供了以靜態的方式載入執行選項。只要編輯 ~/apt-add.conf 這個檔案,每一行都可以放一個執行選項。apt-add 會在每次執行的時候自動載入這些選項。(無法正確解析的問題在 0.3 alpha3 (不含) 以後的版本已經解決了。)
另外還有一些比較不重要的功能,請參考 apt-add --help 來獲得更多資訊 : )。
網誌上有另一帖是給剛使用 apt-add 的朋友有可以快速使用的範例,請點選這裡進入

沒有留言: