Ubuntu
Linux中的包、儲存庫和安裝過程
我在網際網路上閱讀了很多關於如何在 Linux(例如 Ubuntu)上安裝程序的文章,但我仍然感到困惑!
我到現在為止的理解是:
- 首先,我們應該添加包含我們想要的包的儲存庫。在 Ubuntu 中,將通過取消註釋
/etc/apt/sources.list
文件中的相關行來完成。- 然後我們應該通過執行更新我們儲存庫的包列表
apt-get update
。- 最後,通過執行安裝我們的程序
apt install
。……但還是看不懂!
- 當我們在 中取消註釋儲存庫時
sources.list
,這是否意味著我們告訴作業系統:“在我的電腦上下載此儲存庫”?是否需要下載儲存庫?如果沒有,那麼通過取消註釋 sources.list 中的一行,系統會發生什麼?- 究竟是
apt-get update
做什麼的?當我讀到:apt-get update downloads the package lists from the repositories and "updates" them to get information on the newest versions of packages and their dependencies.
這到底是什麼意思?我們有一個包含一些軟體包的儲存庫;這是否意味著某些儲存庫可能已過時?那麼為什麼他們不更新伺服器上的儲存庫,這些儲存庫將始終是最新的並且沒有人需要這樣做
apt-get update
呢?
當我們在 中取消註釋儲存庫時
sources.list
,這是否意味著我們告訴作業系統:“在我的電腦上下載此儲存庫”?不。
是否需要下載儲存庫?
通常不會。除非您想下載可能數百 GB 的數據。
如果沒有,那麼通過取消註釋 sources.list 中的一行,系統會發生什麼?
沒什麼,但是。
我們有一個儲存庫,它有一些包,這是否意味著某些儲存庫可能已經過時了?
儲存庫可能已經過時,是的,但這不是這裡討論的內容。
那麼,為什麼他們不更新伺服器上始終是最新的並且沒有人需要進行 apt-get 更新的儲存庫呢?
它並不完全那樣工作。會發生什麼:
- 儲存庫包含包,確實如此,但它們還包含有關這些包的資訊(元數據):包名稱、版本、包的依賴關係、包包含的文件列表、包的雜湊值等。
apt-get update
下載此元數據。apt-get install
,upgrade
等然後在您告訴它安裝包時使用此元數據 - 它檢查可用版本,檢查是否需要安裝其他包作為依賴項,等等。- 當儲存庫更新時,元數據將更新為,但您之前下載的本地副本不會。這是很自然的,如果您的元數據副本已過時,您不希望您的 PC 不斷檢查伺服器。
- 現在下次你需要安裝一個包時,你可能會遇到問題,因為你的系統有過時的元數據,所以它無法找出正確的做法。
- 然後您需要執行
apt-get update
以更新此元數據。- 正如我所說,當您取消註釋原始碼行時,還沒有發生任何事情。下次執行時
apt-get update
,它也會從該源下載元數據。下次安裝、升級或刪除軟體包時,apt 會在解決問題時考慮額外的元數據。這就是 apt 的工作原理。另一方面,Yum 會在您添加、刪除或升級軟體包時檢查更新的元數據並下載它。兩種方法都有其優點和缺點。