options
這邊所有的CLI options都是代表組態檔裡的設定,你可以直接用這些options,當然也可以直接使用組態檔來設定。底下每個options後面都會接一個組態項目,像是『--show-progress』後面會有個『組態項目:Item: Dpkg::Progress』所以你就有兩種選擇來設定你的功能,因為是一樣的:
apt-get install qpdf -o Dpkg::Progress=true
#等於
apt-get install qpdf --show-progress
所以除了我上面使用『true』以外,你可以使用像是『-f』,『--no-f』,『-f=no』或者是其他的方式來設定相關組態。
--no-install-recommends
不要考慮安裝推薦的相依套件。『組態項目:APT::Install-Recommends』。
--install-suggests
考慮安裝推薦的相依套件。『組態項目:Item: APT::Install-Suggests』。
-d, --download-only
只有下載,套件並不會解壓縮或是安裝。『組態項目:Item: APT::Get::Download-Only』。
-f, --fix-broken
修復的含意是,嘗試著修改相依性已經被破壞的套件,這個option有時候第一次執行APT是必要的,因為APT不允許在系統上有損壞的相依套件存在。但是有時候系統上的相依性結構會被破壞,所以需要自己手動的修復。『組態項目:Item: APT::Get::Fix-Broken』。
-m, --ignore-missing, --fix-missing
如果套件無法被取回或是取回後check sum檢查失敗的話(代表這個檔案已經損壞),則停止這個套件並且處理結果,主要是用在如果你有連續三個套件要安裝,但是第一個就失敗的話,那其他的就都不會被安裝到,但是如果有使用這個option的話失敗以後還會直接處理後面的套件。『組態項目:Item: APT::Get::Fix-Missing』。
--no-download
不允許套件的下載,最好是隨著option『--ignore-missing』來強迫APT使用之前已經下載的『.debs』檔,『組態項目:Item: APT::Get::Download』。
-q, -- quiet
有時候會了要紀錄log,所以可以使用這個option來限制輸出的資訊,最多可以兩個『q』,兩個『q』代表更精簡,你也可以使用『-q=2』來設定這個等級,代是這邊要特別注意,『-qq』或是『-q=2』的話,系統會預設所有的prompt都用『-y』,所以最好是不要用『-qq』,否則系統會有一些你無法預期的行為出現,除非你搭配著『-d』,『--print-uris』或是『-s』這些沒有影響系統的options來用。『組態項目:Item: quiet』。
-s, --simulate, --just-print, --dry-run, --recon, --no-act
這個option將會依目前系統的狀態來執行一系列的事件模擬,在這模擬的狀況之下,所有的『lock』將會被暫時取消(使用Debug::NoLocking)。而這個模擬也可以讓非root的user來執行,但是會收到相關的通知(使用APT::Get::Show-User-Simulation-Note)。『組態項目:APT::Get::Simulate』。
在這個option模擬時,會印出很多行的資訊,每一個都是代表dpkg的執行命令,像是『configure (Conf)』,『remove (Remv)』或是『unpack (Inst)』。
-y, -- yes, -- assume-yes
如果prompts有出現提問的話,都自動的回『yes』,但是如果發生不可預期的狀況的話,則apt-get將會自動停止動作,像是修改一個鎖定的套件,嘗試安裝未經授權的套件,或是企圖移除必要的套件等等。『組態項目:Item: APT::Get::Assume-Yes』。
--assume-no
如果prompts有出現提問的話,都自動的回『no』。『組態項目:Item: APT::Get::Assume-No』。
-u, -- show-upgraded
顯示已經被更新過的套件清單。『組態項目:Item: APT::Get::Show-Upgraded』。
-V, --verbose-versions
顯示所有已經安裝和已經被更新過套件的全版本清單。『組態項目:APT::Get::Show-Versions』。
-a, --host-architecture
這個option主要控制在『apt-get source --compile』所建置時的架構套件(architecture packages)行為,還有會控制『cross-build 』的相依性。預設的話是沒有設定,代表它預設你的『host』和『build』的架構是一樣的(在APT::Architecture所定義)。『組態項目:APT::Get::Host-Architecture』。
-P, --build-profiles
這個option主要控制在『apt-get source --compile』所建置時的build profiles行為,還有會控制『cross-build 』的相依性。預設的話是沒有build profile的,如果你想要輸出超過一份的build profile的話可以使用逗號『,』來割開。『組態項目:APT::Build-Profiles』。
-b, --compile, --build
下載完source套件以後,直接編譯它。『組態項目:APT::Get::Compile』。
--ignore-hold
如果你的某個套件被lock住的話,這個option會讓apt-get忽略這個lock,通常是與『dist-upgrade』一起使用,這樣可以蓋掉一堆無法預期的lock。『組態項目:APT::Ignore-Hold』。
--with-new-pkgs
如果與『upgrade』一起使用的話,會允許安裝新的套件。通常這個option會在如果你已經安裝的套件需要升級一些新的相依套件的話會蠻有用的。而如果你使用這個option來升級套件的話,將不會有任套件被移除,因為它只允許新增。『組態項目:APT::Get::Upgrade-Allow-New』。
--no-upgrade
代表不要升級套件。『組態項目:APT::Get::Upgrade』。
--only-upgrade
代表不要安裝新的套件,當與『install』一起使用的話,這個option將會只升級已經安裝的套件,而忽略沒有安裝的套件。『組態項目:APT::Get::Only-Upgrade』。
--allow-downgrades
這個選項會讓你的套件降級(downgrade),這個option非常的危險,有可能會毀了你的系統,所以沒事不要亂弄,而且並不會有prompt出現,所以更恐怖。『組態項目:APT::Get::allow-downgrades』。
--allow-remove-essential
這個option可以讓你移除系統需要的套件,跟『--allow-downgrades』一樣,這個option非常的危險,有可能會毀了你的系統,所以沒事不要亂弄,而且並不會有prompt出現,所以更恐怖。『組態項目:APT::Get::allow-remove-essential』。
--allow-change-held-packages
如果你的套件被『lock』住的話,這個option可以讓你改變『lock』的狀態,這個option非常的危險,有可能會毀了你的系統,所以沒事不要亂弄。『組態項目:APT::Get::allow-change-held-packages』。
--force-yes
強制所有個prompt都是yes,這個option也是非常危險的,有可能會直接對你無法預期的提問回答yes,有可能會傷害到你的系統,通常也是只有在很特殊的狀況之下才能用,沒事不要亂用。但是在版本1.1以後已經被『--allow-downgrades』,『--allow-remove-essential』和『--allow-change-held-packages』取代掉了,所以講那麼多廢話以後,重點就是不要用了XD。『組態項目:APT::Get::force-yes』。
--print-uris
用這個option則只會印出相關的URIs,而每個URI都會有路徑,目的檔名,size和預期的MD5 hash。要注意的是,要寫入的目的檔名不一定會每次都跟remote的檔名一樣。這個option也可以用在『source』和『update』命令,如果是『update』的話則MD5和size將不會被顯示。『組態項目:APT::Get::Print-URIs』。
--purge
其實使用這個option,像是『apt-get remove --purge』就等於『apt-get purge』。『組態項目:APT::Get::Purge』。
--reinstall
重新安裝已經被安裝過得套件,並且安裝到最新版。『組態項目:Item: APT::Get::ReInstall』。
--list-cleanup
當這個選項是啟動的狀態之下,apt-get將會自動的管理在『/var/lib/apt/lists』底下的內容來確保所有沒用的套件都已經被刪除了。這個選項預設是開著的,如果你需要可以使用『--no-list-cleanup』來關掉它。通常只有在你很頻繁的改變你的sources list的話才會將這個option關掉,不然其實也不會動到才對。『組態項目:Item: APT::Get::List-Cleanup』。
-t, --target-release, --default-release
這個option控制『policy engine』的預設輸入,它會使用一個特殊的release字串來建立一個預設優先權是990的『pin』,並且會覆寫掉在『/etc/apt/preferences』裡面的general設定值,但是有特殊『pin』值得套件將不會被影響。其實我沒研究過『apt preferences』的架構,所以我前面也不知道我在寫什麼,但是簡單的來說,這個option可以簡單的控制你可以取得哪個發行板的套件就對了,像是『-t '2.1*'』,『-t unstable』或是『-t sid』等等。這部份有需要的話可以看一下『apt_preferences(5)』。『組態項目:Item: APT::Default-Release』。
--trivial-only
官方手冊上說,這個option以邏輯上來講可以被當成是相關於『--assume-yes』,也就是說『--assume-yes』永遠都會對任何prompt回『yes』,但是『--trivial-only』都會回『no』,那我不懂的是,那為何不用『--assume-no』就好了?『組態項目:Item: APT::Get::Trivial-Only』。
--no-remove
如果有apt-get有想要移除任何套件的話,則將會馬上被取消。『組態項目:Item: APT::Get::Remove』。
--auto-remove,--autoremove
如果命令是『install』或是『remove』,則這個option將會自動的呼叫『autoremove』,移除掉沒被使用的相依性套件。『組態項目:Item: APT::Get::AutomaticRemove』。
--only-source
這個option只有在對source和build-dep命令有效而已,代表的是所給予的source name並無法跟binary talbe對映(mapped)上。也就是說只要用這個option的話你就只能下載source 套件,沒辦法下載binary套件。『組態項目:Item: APT::Get::Only-Source』。
--diff-only,--dsc-only,--tar-only
只下載『diff』,『dsc』或是source archive的『tarball』。『組態項目:Item: APT::Get::Diff-Only,APT::Get::Dsc-Only,APT::Get::Tar-Only』。
--arch-only
只處理架構相依(architecture-dependent)的建制相依(build-dependencies)。『組態項目:Item: APT::Get::Arch-Only』。
--allow-unauthenticated
通常如果你的套件需要授權才能安裝的話,會跳出一個prompt詢問你的意見,同意才能繼續安裝,但是如果你使用這個option的話,就不會有相關的prompt,會直接安裝。雖然這樣有很大的安全風險,但是在處理local的repo時會比較有效率,就看你如何取捨。『組態項目:Item:APT::Get::AllowUnauthenticated』。
--no-allow-insecure-repositories
禁止命令『update』來獲取沒有經過認證的資料,所以如果你的repo沒有合法的加密簽名(cryptographically signatures)的話,則apt將會回傳失敗。『組態項目:Item:Acquire::AllowInsecureRepositories』。
--show-progress
當套件安裝,升級或移除時,會顯示user friendly的進度資訊,『組態項目:Item: Dpkg::Progress,Dpkg::Progress-Fancy』。
-c,--config-file
特別指定一個組態檔來使用,程式將會先讀取預設的組態然後才會是這個被指定的組態檔。如果你想要讓你指定的組態在預設的組態之前就先被讀的話,你必須要使用環境變數『APT_CONFIG』來特別指定。相關的語法資訊請參考『apt.conf(5)』。
-o,--option
設定一個組態option,就像上面所有options後面都有一個組態格式,所以你就可以使用像是底下的格式來設定相關的設定:
apt-get install qpdf -o Dpkg::Progress=true