Apt通配符使用问题:当前目录文件名被识别为包名的原因咨询
Apt通配符使用问题:当前目录文件名被识别为包名的原因咨询
嗨,这个问题其实是shell通配符解析顺序在搞怪!
当你在终端输入apt install boinc*时,并不是apt直接处理这个通配符,而是你的shell(比如常用的bash)会先对*做解析工作:如果当前目录下存在以boinc开头的文件(比如你遇到的boinc_ubuntu_7.16.6_x86_64-pc-linux-gnu.sh),shell会直接把boinc*替换成这些匹配到的具体文件名,再把替换后的内容传给apt。
这时候apt拿到的就不是通配符boinc*,而是那个shell替换后的文件名了,它会默认去软件仓库里找同名的包,自然找不到,所以就抛出了"E: Unable to locate package..."的错误。
如果你的需求是用通配符匹配软件仓库里的包,只要把通配符用单引号或者双引号括起来就行——这样能阻止shell提前解析通配符,让apt自己去处理这个匹配逻辑,比如输入:apt install 'boinc*'
或者apt install "boinc*"
备注:内容来源于stack exchange,提问作者kotenok2000




