使用apt的Linux軟體包管理
在Linux上,軟體包管理器幫助你處理計算機上軟體的更新、解除安裝、故障排除等。Seth Kenlon寫了關於dnf
,這個命令列軟體包管理工具用於在RHEL、CentOS、Fedora、Mageia、OpenMandriva和其他Linux發行版中安裝軟體。
蝶變和基於蝶變的發行版,如MX Linux、Deepin、Ubuntu--以及基於Ubuntu的發行版,如Linux Mint和Pop!_OS--有apt
,一個 "類似但不同 "的工具。在這篇文章中,我將按照Seth的例子--但用apt
--來告訴你如何使用它。
在我開始之前,我想提到四個與apt
有關的安裝軟體的工具。
- Synaptic是一個基於GTK+的圖形使用者介面(GUI)前端,用於
apt
。 - Aptitude是一個基於Ncurses的全屏命令列前端,用於
apt
。 - 還有
apt-get
、apt-cache
,以及apt
的其他前身。 - Dpkg是 "幕後 "的軟體包管理器
apt
,用來完成繁重的工作。
還有其他的打包系統,比如Flatpak和Snap,你可能會在Debian和基於Debian的系統上遇到,但我不打算在這裡討論它們。還有一些應用程式 "商店",如GNOME軟體,與apt
和其他打包技術重疊;同樣,我不打算在這裡討論它們。最後,還有一些Linux發行版,如Arch和Gentoo,既不使用dnf
,也不使用apt
,我也不打算在這裡討論它們
在這裡我不打算討論所有的事情,你可能會想知道apt
處理哪些微小的軟體子集。好吧,在我的Ubuntu 20.04上,apt
讓我可以訪問69,371個軟體包,從0ad
古代戰爭的實時戰略遊戲到zzuf
透明應用程式模糊器。一點也不差。
用apt尋找軟體
使用軟體包管理器(如apt
)的第一步是找到一個感興趣的軟體包。Seth的dnf
文章以Cockpit伺服器管理應用程式為例,所以我也會這樣做。
$ apt search cockpit
Sorting... Done
Full Text Search... Done
389-ds/hirsute,hirsute 1.4.4.11-1 all
389 Directory Server suite - metapackage
cockpit/hirsute,hirsute 238-1 all
Web Console for Linux servers
...
$
上面的第二個軟體包就是你要找的那個(就是以cockpit/hirsute
開頭的那一行)。如果你決定要安裝它,請輸入。
$ sudo apt install cockpit
apt
將負責安裝Cockpit和所有使其工作所需的零碎部分或_依賴項_。有時這就是所需的一切,有時則不然。有可能在決定你是否真的想安裝這個應用程式時,掌握更多的資訊會很有用。
要了解一個軟體包的更多資訊,可以使用apt show
命令。
$ apt show cockpit
Package: cockpit
Version: 238-1
Priority: optional
Section: universe/admin
Origin: Ubuntu
Maintainer: Ubuntu Developers
Original-Maintainer: Utopia Maintenance Team
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 88.1 kB
Depends: cockpit-bridge (>= 238-1), cockpit-ws (>= 238-1), cockpit-system (>= 238-1)
Recommends: cockpit-storaged (>= 238-1), cockpit-networkmanager (>= 238-1), cockpit-packagekit (>= 238-1)
Suggests: cockpit-doc (>= 238-1), cockpit-pcp (>= 238-1), cockpit-machines (>= 238-1), xdg-utils
Homepage: https://cockpit-project.org/
Download-Size: 21.3 kB
APT-Sources: http://ca.archive.ubuntu.com/ubuntu hirsute/universe amd64 Packages
Description: Web Console for Linux servers
The Cockpit Web Console enables users to administer GNU/Linux servers using a
web browser.
.
It offers network configuration, log inspection, diagnostic reports, SELinux
troubleshooting, interactive command-line sessions, and more.
$
特別是注意Description
欄位,它告訴你更多關於該應用程式的資訊。Depends
欄位說明了還必須安裝什麼,Recommends
顯示了與它一起被推薦的其他合作元件(如果有)。Homepage
欄位提供了一個URL,以防你需要更多資訊。
什麼軟體包提供了一個檔案?
有時你不知道軟體包的名稱,但你知道一個檔案必須在一個軟體包中。賽斯提供了一個例子,即qmake-qt5
工具。使用apt search
並不能找到它。
$ apt search qmake-qt5
Sorting... Done
Full Text Search... Done
$
然而,一個相關的命令,apt-file
,將探索軟體包內部。
$ apt-file search qmake-qt5
qt5-qmake-bin: /usr/share/man/man1/qmake-qt5.1.gz
$
這就出現了一個qmake-qt5
的手冊頁,它是一個叫做qt5-qmake-bin
的包的一部分。請注意,這個軟體包的名稱與qmake
和qt5
部分相反。
一個軟體包中包括哪些檔案?
那個方便的apt-file
命令也會告訴你哪些檔案被包含在一個給定的包中。比如說。
$ apt-file list cockpit
cockpit: /usr/share/doc/cockpit/TODO.Debian
cockpit: /usr/share/doc/cockpit/changelog.Debian.gz
cockpit: /usr/share/doc/cockpit/copyright
cockpit: /usr/share/man/man1/cockpit.1.gz
cockpit: /usr/share/metainfo/cockpit.appdata.xml
cockpit: /usr/share/pixmaps/cockpit.png
$
注意,這與apt show
命令所提供的資訊不同,後者列出了軟體包的依賴關係(必須安裝的其他軟體包)。
你也可以用apt
刪除軟體包。例如,要刪除apt-file
應用程式。
$ sudo apt purge apt-file
注意,超級使用者必須執行apt
來安裝或刪除應用程式。
刪除一個軟體包並不會自動刪除apt
沿途安裝的所有依賴項。然而,要進行這一點整理是很容易的。
$ sudo apt autoremove
瞭解 apt
正如Seth所寫的,"你對你的軟體包管理器的工作方式瞭解得越多,你在必要時安裝和查詢應用程式就越容易"。
即使你不是一個經常使用apt
,當你在安裝或刪除軟體包時需要在命令列下工作時,瞭解它也是很有用的(例如,在遠端伺服器上或在遵循一些有幫助的人釋出的方法時)。你可能還需要了解一下Dkpg(上面提到的);例如,一些軟體建立者提供了一個裸露的.pkg
檔案。
我發現Synaptic軟體包管理器在我的桌面上是一個非常有用的工具,但我也在我為各種目的維護的少數伺服器上使用apt
。
下載我們的apt
小抄,以習慣這個命令並嘗試一些新的技巧。一旦你這樣做了,你可能會發現很難再使用其他東西了。
- 將機器學習帶入每個開發者的工具箱中
- 介紹一下TensorFlow圖譜神經網路
- 介紹一下TensorFlow圖譜神經網路
- 目的驅動的微服務設計
- 目的驅動的微服務設計
- 目的驅動的微服務設計(附程式碼示例)
- 在Cadence音訊數字訊號處理器上加速TensorFlow Lite Micro
- 將機器學習帶入每個開發者的工具箱中
- 如何用Kubernetes進行容器編排的超詳細指南
- 使用apt的Linux軟體包管理
- 如何使用持續測試雲加速應用程式的測試
- 如何用Selenium獲取JavaScript中的屬性資料
- 如何使用python為多處理器系統建立一個基於DAG的任務排程工具
- 【譯】常見的架構要素筆記(附用例)
- 【譯】如何現在就從GitOps中獲得最大收益
- 將Go API部署到AWS Lambda和API上
- 如何在應用平臺上部署預先訓練好的問題和答案TensorFlow.js模型
- 如何用Laravel Sail和Tailwind CSS建立一個新的Laravel應用程式
- MongoDB shell使用指南
- 如何在Ubuntu 20.04上使用PyMongo在MongoDB中執行CRUD操作