你好,歡迎進(jìn)入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!
發(fā)布時間:2024-01-10
瀏覽次數(shù):0
搜索包
安裝包
更新包
包回滾
卸載一個包
垃圾收集器
測試包
尼克斯表達(dá)
總結(jié)
以前的文章
為什么需要包管理器
如果你讀過《程序員的自我修養(yǎng)》這本書,你一定知道軟件包的發(fā)展歷史。 現(xiàn)在的軟件包大多是動態(tài)鏈接的,并且存在依賴關(guān)系。因此,安裝軟件包也需要解決依賴問題。 依賴的軟件包還可能依賴于其他依賴項(xiàng),因此這是一個復(fù)雜的過程。
刪除軟件包時也是如此,被刪除的軟件包所依賴的軟件包也可能依賴于其他軟件包。 刪除軟件包及其依賴項(xiàng)也是一個復(fù)雜的過程。
因此,需要像包管理器這樣的程序來管理它。
傳統(tǒng)的包管理器
說到管理,表面上主要是增、刪、改、查,實(shí)際上是數(shù)據(jù)庫信息的管理。 除了dpkg忽略依賴之外,其他包管理工具在功能上都差不多。
這里我們以APT包管理工具為例
1)更新索引
#?更新索引
sudo?apt?update?
Index 從軟件服務(wù)器更新最新的包索引信息,以便后續(xù)搜索和
2)搜索軟件包
您可以根據(jù)軟件包名稱或功能描述關(guān)鍵字進(jìn)行搜索
sudo?apt?search?"web?scanner"
查看包裹信息
sudo?apt?show?nmap?
該命令可以顯示nmap軟件包的基本信息,如軟件包名稱、版本、依賴項(xiàng)、大小、描述等。
查看軟件源碼信息
sudo?apt?showsrc?nmap
3)安裝
與下載源代碼和編譯相比,APT 等工具將安裝簡化為幾條指令。
#?安裝?nmap?軟件包
sudo?apt?install?nmap
APT是如何實(shí)現(xiàn)這種封裝的呢?
首先我要知道去哪里下載,所以就有了更新源的概念。
該系列的系統(tǒng)更新源信息存儲位置為
/etc/apt/.list 是系統(tǒng)官方定義的軟件更新源
/etc/apt/.list.d/目錄存放第三方軟件的更新源
格式基本一樣
軟件包/軟件源碼?軟件包服務(wù)器地址?發(fā)行版本-軟件包分類?軟件包分類目錄
deb?http://mirrors.aliyun.com/ubuntu/?bionic-security?main?restricted?universe?multiverse
只下載deb包
sudo?apt?download?nmap?
至此,Nmap程序的deb包已經(jīng)下載到當(dāng)前目錄,稍后可以通過dpkg進(jìn)行安裝。
只下載軟件源碼
sudo?apt?source?nmap?
通過瀏覽器獲取deb包和源碼
以阿里云鏡像網(wǎng)站為例
以main為例
以nmap為例,選擇n開頭的
這樣就可以找到nmap的deb安裝包和源碼了。
通常下載包的地方
通過sudo apt 下載安裝的軟件包在哪里?
更新或安裝完成后,下載的軟件包會自動清除
軟件包安裝在哪里
我個人很關(guān)心這個問題,因?yàn)槟J(rèn)的Linux包管理器會將一個軟件包分解成許多文件并將它們放置在適當(dāng)?shù)奈恢?,例?/p>
但事實(shí)上,這件事不是由用戶決定的,甚至不是由系統(tǒng)決定的,而是由包的維護(hù)者決定的。
以這個程序?yàn)槔?/p>
首先使用apt正常安裝
安裝后使用dpkg -L查看包中各個文件的位置
現(xiàn)在我們使用apt purge卸載,然后嘗試通過下載deb包修改相關(guān)文件的位置然后打包安裝進(jìn)行比較。
下載deb包并解壓
查看包裝內(nèi)容
大家看到這里應(yīng)該就明白了。 事實(shí)上sublime text 2安裝包,包管理器將包的內(nèi)容復(fù)制到相關(guān)位置并解決依賴問題。
現(xiàn)在我們嘗試在文件夾中新建一個opt/-test目錄,放置可執(zhí)行文件,并刪除默認(rèn)的/usr/bin/
現(xiàn)在重新包裝
dpkg-deb?-b?extract?build/
安裝新的 deb 包
sudo?dpkg?-i?build/proxychains_3.1-7_all.deb
查看包相關(guān)文件
sudo?dpkg?-L?proxychains
測試函數(shù)是否能夠正確執(zhí)行
由于/opt/-test不在當(dāng)前環(huán)境變量中,所以無法直接執(zhí)行,APT也無法識別我們安裝了這個程序。
通過絕對路徑執(zhí)行可以成功。 現(xiàn)在讓我們配置/etc/.conf來測試該功能。
如果我們把配置文件的位置改為/tmp//.conf,程序還能正常執(zhí)行嗎?
卸載
重新解壓、修改、打包
結(jié)果打包的時候出現(xiàn)了錯誤。 這說明配置文件中記錄了一些元信息。
記錄配置文件位置的文件為 //
嘗試修改文件內(nèi)容為/tmp//.conf
成功打包安裝測試功能
經(jīng)過測試發(fā)現(xiàn),雖然安裝成功,但是在使用過程中,仍然發(fā)現(xiàn)/etc/.conf配置文件。
如何判斷文件屬于哪個包
dpkg?-S?xxxx
4)卸載
sudo?apt?remove?nmap
sudo?apt?purge?nmap
軟件程序和幫助文檔將被刪除,但配置文件不會被刪除。
purge 會刪除配置文件
但是,purge 和 purge 都不會刪除該軟件程序在用戶目錄中創(chuàng)建的配置文件。
以魚為例
~/.local/share/fish/ 是fish的配置文件夾。 現(xiàn)在我們嘗試分別使用 purge 和 purge 來卸載fish。
purge和purge都不能刪除軟件包在用戶目錄下創(chuàng)建的配置文件。
5) 清理空間
#?刪除下載過的所有軟件包的安裝包
sudo?apt?clean
#?刪除已經(jīng)過期的軟件包的安裝包
sudo?apt?autoclean
#?刪除未使用的依賴項(xiàng),主要是由軟件包卸載后,沒有其他軟件包依賴這些項(xiàng),于是處于未使用狀態(tài)
sudo?apt?autoremove
軟件在用戶目錄下留下的配置項(xiàng)不屬于這三者的清理范圍。
獨(dú)立包管理器
包管理也在不斷完善。 準(zhǔn)確的說,可能是探索。 APT、DNF等包管理器給部分用戶留下了依賴解決方案的不完美體驗(yàn),大家都開始創(chuàng)建新的依賴解決方案。
總體思路是封裝程序和一切,使得依賴不再共享,同一個依賴包可以包含不同的版本。
最重要的是,開發(fā)人員不再需要為各種包管理器打包并發(fā)布單獨(dú)的包,因此出現(xiàn)了以下具有代表性的獨(dú)立包管理器; 同時,通過對這些軟件包進(jìn)行虛擬化或者沙箱處理,在安全性方面更加可控
1) 捕捉
Snap是由開發(fā)公司,即開發(fā)商開發(fā)的。 開發(fā)snap的目的是創(chuàng)建一個跨平臺的解決方案,包括桌面、服務(wù)器、IoT,甚至手機(jī),同時兼顧安全性。
如今,snap包管理器基本上可以安裝在所有主流的Linux系統(tǒng)上。 過去,官方在推動snap上甚至做出了一些更為激進(jìn)的舉動和決定。
snap的用法與apt類似,只是軟件包格式為.snap,部分指令略有不同。
搜索程序
Snap目前只有官方來源,所以不需要配置來源。
sudo?snap?find?nmap
查看節(jié)目信息
sudo?snap?info?nmap
安裝人員
sudo?snap?install?nmap?
更新程序
sudo?snap?refresh?nmap
回滾到之前的版本
sudo?snap?revert?nmap?
由于我這里直接安裝了最新版本,所以沒有回滾版本。
查看已安裝的快照
sudo?snap?list
卸載程序
sudo?snap?remove?nmap
快照文件存儲
通過環(huán)境變量可以發(fā)現(xiàn)與snap直接相關(guān)的目錄是/snap/bin
查看/snap/可以看到這個目錄的介紹
/snap/ 目錄是已安裝的 snap 包中的文件和文件夾出現(xiàn)在系統(tǒng)上的位置
/snap/bin 該目錄存儲指向?qū)嶋H snap 包的鏈接文件。
/snap//掛載點(diǎn)信息
這里是 nmap,其中 2944
/snap//代表當(dāng)前版本。 由于snap有版本回滾功能,所以我猜這個文件應(yīng)該是為版本記錄和回滾而準(zhǔn)備的。
既然上面我們提到了掛載點(diǎn),那么我們可以過濾一下掛載信息,看看是否有對應(yīng)關(guān)系。
sudo?mount?|?grep?nmap
可以看到目錄/snap/nmap/2944其實(shí)就是設(shè)備的掛載(文件)/var/lib/snapd/snaps/.snap
sudo?lsblk?-a
這就是snap的工作模式。 .snap快照文件放置在/var/lib/snapd/snaps/下,然后通過塊文件掛載的方式掛載到/snap//目錄下。
用戶使用snap程序生成的數(shù)據(jù)存儲在~/snap目錄下,格式與/snap下基本相同。
程序目錄控制
snap把程序和它的依賴包打包在一起,通過一個叫的東西給程序分配權(quán)限,這就涉及到程序可以訪問的路徑。 這件事對于安全人員和運(yùn)維人員來說有著不同的意義。 現(xiàn)在是通過樹 這個應(yīng)用程序可以讓你探索這個
安裝?tree
sudo?snap?install?tree
查看?tree?這個軟件包的?connections
sudo?snap?connections?tree
可以看到tree可以訪問的目錄包括/home和可移動設(shè)備。 目前,/home 上有一個插槽,而可移動設(shè)備上沒有插槽。 因此,tree可以訪問/home目錄,但不能訪問其他目錄。 測試。 一度
可以看出
這樣限制了單個程序的目錄訪問,一定程度上增強(qiáng)了安全性,但易用性卻降低了。
程序權(quán)限控制
快照相當(dāng)有趣。 該程序旨在以插槽和插頭的形式獲取某些系統(tǒng)資源。
所謂插槽sublime text 2安裝包,就是系統(tǒng)提供的一些資源,比如文件資源、音頻播放、攝像頭、網(wǎng)絡(luò)接口等。插頭也是如此,只不過插頭和插槽需要連接起來,形成一個接口()允許程序獲取此資源。
接口如何使用插頭和插座
一般情況下,程序包需要哪些接口已經(jīng)過審核,可以通過以下命令查看
sudo?snap?connections?nmap
nmap有四個接口,其中三個插在插槽上,這樣nmap就有主目錄的訪問權(quán)限,可以使用網(wǎng)絡(luò)并進(jìn)行網(wǎng)絡(luò)綁定。
查看所有插槽
snap?connections?--all?|?cut?-d?"?"?-f?1?|?sort?|?uniq
現(xiàn)在我想插入最后一個nmap插件
sudo?snap?connect?nmap:network-control?:network-control
注意插頭和插座名稱必須一致。
如果我想將插頭插入不存在的系統(tǒng)插槽,會發(fā)生什么情況?
以手動分配nmap錄音為例
sudo?snap?connect?nmap:audio-record?:audio-record
正如您所看到的,對不存在的插頭進(jìn)行操作將會失敗。
斷開接口也很簡單
sudo?snap?disconnect?nmap:network-control?:network-control
程序配置項(xiàng)
Snap還提供對需要配置的軟件包的支持。 您需要先安裝此軟件包,然后才能獲取、設(shè)置和取消設(shè)置某些配置項(xiàng)。
以官網(wǎng)為例。 這是一個文件管理和共享工具,類似于百度網(wǎng)盤。
使用快照安裝
sudo?snap?install?nextcloud
獲取配置信息
sudo?snap?get?nextcloud
配置以key和value的形式顯示。 可以看到mode的值為,表示當(dāng)前處于生產(chǎn)模式。 其他選項(xiàng)如http對應(yīng)的值為{...},表示有多個配置,下面還有子配置。
以獲取到的ports配置項(xiàng)為例
sudo?snap?get?nextcloud?ports
根據(jù)經(jīng)驗(yàn)我們可以知道這是配置http和https的端口號
設(shè)置配置項(xiàng)
sudo?snap?set?nextcloud?ports.https=8443
如有侵權(quán)請聯(lián)系刪除!
Copyright ? 2023 江蘇優(yōu)軟數(shù)字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服務(wù)提供商
13262879759
微信二維碼