久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Cygwin系列(八):命令行軟件包管理器apt

 看見就非常 2022-02-24

本文共2500余字,預(yù)計(jì)閱讀時(shí)間9分鐘,,本文同步發(fā)布于知乎(賬號(hào)silaoA)和微信公眾號(hào)平臺(tái)(賬號(hào)偽碼人),。
關(guān)注學(xué)習(xí)了解更多的Cygwin、Linux技術(shù),。

前文 Cygwin系列(四):一步一步搭建Cygwin最小系統(tǒng)Cygwin系列(七):Cygwin軟件包管理相關(guān)配置著重介紹了setup作為包管理器的使用方法,、相關(guān)配置文件,本文介紹Cygwin中另一個(gè)值得嘗試的命令行包管理器——apt-cyg,。

0x00 初識(shí)apt-cyg

setup是Cygwin中圖形界面的包管理器,,操作上基本是傻瓜式的點(diǎn)擊“下一步”;與之對(duì)應(yīng),,存在命令行包管理器,。

GNU/Linux世界里常用有apt-getyum,、pacman等著名的命令行包管理器,,成熟穩(wěn)定、強(qiáng)大無(wú)比,,Cygwin下則有apt-cyg這個(gè)友好易用的命令行包管理器,,從名字一看便是模仿apt-get。Github上托管了39種shell語(yǔ)言版的apt-cyg,,點(diǎn)擊連接便可看到,,本文要說(shuō)的是搜索結(jié)果排第一的transcode-open/apt-cyg,遵循MIT開源協(xié)議發(fā)布,,2016年發(fā)布v1版本后便再未更新過(guò),。它其實(shí)就是一個(gè)Shell腳本,幫助用戶查找,、安裝,、卸載軟件包,還可以根據(jù)文件名稱反向查找所屬的軟件包,。

0x01 安裝apt-cyg

transcode-open/apt-cyg頁(yè)面上推薦的安裝步驟為:

1
2
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

第1行是使用lynx命令將apt-cyg腳本從網(wǎng)站下載保存至當(dāng)前目錄的apt-cyg文件,,第2行是使用install命令將apt-cyg文件安裝至/bin目錄下,這一步其實(shí)包含了兩個(gè)動(dòng)作:①將apt-cyg文件復(fù)制到/bin目錄,,②增加/bin/apt-cyg文件可執(zhí)行權(quán)限,,這樣用戶可以在任意位置使用apt-cyg命令,。

也可以手工的方式用瀏覽器下載apt-cyg腳本至本地,通過(guò)cp命令復(fù)制到/bin目錄,,再通過(guò)chmod命令增加/bin/apt-cyg文件可執(zhí)行權(quán)限,。

apt-cyg運(yùn)行過(guò)程中依賴bashtar,、wget,、bzip2gawk,、xz軟件包中的命令來(lái)完成文件下載,、文本分析、壓縮/解壓等基本功能,,需要先在Cygwin中安裝好這些軟件包,。其中,bash,、tar,、wgetgawk屬于Base類,,在安裝最小系統(tǒng)時(shí)已包含,;bzip2xz屬于Archive類,,需要通過(guò)setup先裝上,,確保后續(xù)運(yùn)行apt-cyg不出錯(cuò)。

0x02 基本使用

老規(guī)矩,,先試試apt-cyg --help看用法提示,,可看出apt-cyg命令形式為apt-cyg [operation] [options] [targets],其中operation代表所支持的15個(gè)操作,,以下逐一說(shuō)明,。查看apt-cyg文件腳本源碼,可以發(fā)現(xiàn)腳本實(shí)際是通過(guò)相應(yīng)函數(shù)一一實(shí)現(xiàn)這15個(gè)操作,,并且apt-cygsetup共用了一套配置文件,。

mirror

apt-cyg mirror [url]可以查看/設(shè)置鏡像源地址。如果未給url參數(shù),,apt-cyg查找/etc/setup/setup.rc文件中last-mirror項(xiàng)并打印出來(lái),,以此作為鏡像源地址;如果給定了url參數(shù),,則將/etc/setup/setup.rc文件中last-mirror項(xiàng)的值修改為url,。

cache

英文cache的意思是緩存,不管是setup還是apt-cyg,,安裝軟件包時(shí),,均需從鏡像源站點(diǎn)下載文件,,保存到本地的位置即稱“緩存”,并且本地緩存的目錄結(jié)構(gòu)和鏡像站點(diǎn)保持一致,。

apt-cyg cache [path]可以查看/設(shè)置本地緩存頂層路徑,。如果未給path參數(shù),apt-cyg查找/etc/setup/setup.rc文件中last-cache項(xiàng)并打印出來(lái),,以此作為本地緩存頂層路徑,;如果給定了path參數(shù),則將/etc/setup/setup.rc文件中last-cache項(xiàng)的值修改為path,。

在使用setupapt-cyg時(shí),,允許每次設(shè)定不同的鏡像源,本地緩存頂層路徑之下,,會(huì)給不同的鏡像源建不同的目錄,保存文件不會(huì)造成混亂,。但一般不建議這么做,,每個(gè)鏡像源站點(diǎn)同步時(shí)間有先有后,保存的軟件包清單和依賴就不一樣,,在安裝時(shí)可能造成版本混亂,。

install/remove

apt-cyg install [targets]apt-cyg remove [targets]分別是安裝、卸載軟件包,,targets參數(shù)指定軟件包名稱,,可以同時(shí)多個(gè)。

apt-cyg會(huì)從/etc/setup/installed.db文件中查找本地系統(tǒng)中已經(jīng)安裝的軟件包記錄,,如果已安裝,,再次install則跳過(guò),也就是說(shuō)apt-cyg不會(huì)自動(dòng)更新軟件包至最新版本,;同理,,如果未安裝,卻要remove則也跳過(guò),。

如果installed.db中沒有記錄,,那么install操作便會(huì)觸發(fā)下載、解壓至根目錄,、執(zhí)行安裝后腳本等一系列動(dòng)作,,最后在installed.db中增加該軟件包的記錄。apt-cyg還支持依賴解析,,安裝軟件包過(guò)程中,,遞歸地安裝每一個(gè)依賴。但remove操作不會(huì)把卸載軟件包的依賴,。

update

apt-cyg update是更新軟件源的軟件包清單,,即根據(jù)/etc/setup/setup.rc中配置的last-mirror項(xiàng)和本地Cygwin的指令集架構(gòu)版本(x86或者x86_64),,調(diào)用wget去鏡像站點(diǎn)下載最新的setup.ini文件至本地緩存。

在進(jìn)行install操作時(shí),,會(huì)自動(dòng)先update,。

download

apt-cyg download [targets]僅將軟件包下載到本地緩存但不安裝,targets參數(shù)指定軟件包名稱,,可以同時(shí)多個(gè),。在進(jìn)行install操作時(shí),下載動(dòng)作實(shí)質(zhì)就是download,。

show

apt-cyg show targets展示軟件包基本信息,,targets參數(shù)指定軟件包名稱,可以同時(shí)多個(gè),。apt-cyg調(diào)用awk,、sed在本地緩存的setup.ini文件中查找匹配的軟件包的名稱、版本,、描述,、依賴等信息。如Cygwin系列(七):Cygwin軟件包管理相關(guān)配置所舉例的glew軟件包,。
setup.ini文件中g(shù)lew軟件包記錄setup.ini文件中g(shù)lew軟件包記錄

depends/rdepends

apt-cyg depends targets查找軟件包的依賴,,apt-cyg rdepends targets查找依賴該軟件包的更高層軟件包,均以樹形展示,,targets參數(shù)可同時(shí)指定多個(gè)軟件包名稱,。

依賴/反向依賴的解析,實(shí)質(zhì)是調(diào)用awk,、sed在本地緩存的setup.ini文件中根據(jù)軟件包名稱暴力搜索匹配,。

list

apt-cyg list targets/etc/setup/installed.db文件中查找與targets參數(shù)匹配的已安裝軟件包的名稱,targets參數(shù)為正則表達(dá)式,,可以同時(shí)多個(gè),。如果未指定targets參數(shù),則列出所有已安裝軟件包,。例如:

1
2
3
4
5
$ apt-cyg list xz bzip2
xz #匹配xz

bzip2 #匹配bzip2
libzip2 #匹配bzip2

listall

與list類似,,但apt-cyg list targets是在本地緩存的setup.ini文件中查找與targets參數(shù)匹配的軟件包的名稱,targets參數(shù)為正則表達(dá)式,,可以同時(shí)多個(gè),。那么,不論本地是否已安裝,,只要鏡像站點(diǎn)中包含,,listall均列出,即listall查找范圍更廣。例如:

1
2
3
4
5
6
7
$ apt-cyg listall bzip2
bzip2
bzip2-debuginfo
libzip2
mingw64-i686-bzip2
mingw64-x86_64-bzip2
pbzip2

listfiles

apt-cyg listfiles targets是查找指定軟件包所含的文件清單,,功能與cygcheck -l相同,,targets參數(shù)指定軟件包名稱,可以同時(shí)多個(gè),。apt-cyg是通過(guò)查看/etc/setup/package.lst.gz的文件實(shí)現(xiàn)這個(gè)功能的,。

category

apt-cyg category targets列出某個(gè)類別下的所有軟件包名稱,targets參數(shù)為類別名稱(如Base,、Archive),,類別名稱見setup運(yùn)行界面。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ apt-cyg category Base
alternatives
base-cygwin
base-files
bash
coreutils
crypto-policies
cygutils
cygwin
dash
diffutils
editrights
file
findutils
gawk
getent
grep
gzip
hostname
info
ipc-utils
libreadline7
libssl1.1
login
man-db
mintty
ncurses
openssl
rebase
run
sed
tar
terminfo
tzdata
util-linux
vim-minimal
which
_autorebase

search/searchall

apt-cyg search targets在本地緩存中查找匹配targets的軟件包名稱,,過(guò)程相當(dāng)于是listfiles反向暴力搜索匹配,,apt-cyg searchall targetshttps:///cgi-bin2/package-grep.cgi查找內(nèi)容與targets匹配的軟件包,targets參數(shù)為正則表達(dá)式,,可以同時(shí)多個(gè),。searchall和cygcheck -f功能相同,但后者查找范圍僅包括本地已安裝軟件包,,前者范圍更廣,。這對(duì)于查找某個(gè)頭文件、庫(kù)文件所屬軟件包比較有用,,在構(gòu)建程序過(guò)程中遇到報(bào)錯(cuò)“xx符號(hào)未定義的引用”,極有可能就是缺少某個(gè)開發(fā)庫(kù),,但要安裝開發(fā)庫(kù)首先得查出它屬于哪個(gè)包,。
在web頁(yè)面searchall案例在web頁(yè)面searchall案例

對(duì)比命令行和Web頁(yè)面查詢兩種方式,在https:///cgi-bin2/package-grep.cgi查找結(jié)果更準(zhǔn)確,,命令行經(jīng)常無(wú)匹配或者匹配過(guò)多,,對(duì)比http請(qǐng)求提交參數(shù),疑似對(duì)特殊符號(hào)處理不同,,應(yīng)是apt-cyg腳本本身不夠完善,。
web頁(yè)面vs命令行searchallweb頁(yè)面vs命令行searchall

選項(xiàng)說(shuō)明

  • --nodeps選項(xiàng),用于忽略依賴解析,,不建議使用,。
  • --version選項(xiàng)打印版本信息。
  • --help選項(xiàng)或不帶任何參數(shù)和選項(xiàng),,用于打印使用方法,。

0x03 使用感受及建議

使用apt-cyg過(guò)程,體驗(yàn)確實(shí)比setup輕量,、快捷不少,,命令行簡(jiǎn)潔高效,圖形界面操作簡(jiǎn)易,二者各有所長(zhǎng),,常用操作一般是install,、remove、show,、listfiles,、searchall。

但在通過(guò)apt-cyg安裝軟件包時(shí),,偶爾遇到執(zhí)行完命令發(fā)現(xiàn)僅在/etc/setup/installed.db增加記錄實(shí)際卻未安裝的經(jīng)歷,。安裝執(zhí)行完后建議cygcheck -c,檢查軟件包安裝完整性,,如不完整則用setup重新安裝,。另外,上文對(duì)比了apt-cyg searchall和網(wǎng)頁(yè)查詢的結(jié)果,,后者更加準(zhǔn)確,,建議使用網(wǎng)頁(yè)查詢替代apt-cyg searchall

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多