我正在按照这些说明进行操作,并且已apt-file
使用以下方法与其他一些软件包一起安装:
sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file
Run Code Online (Sandbox Code Playgroud)
现在每次我启动我的电脑时,我都会收到这样的通知:
所以我终于进入终端并输入命令:
apt-file update
Run Code Online (Sandbox Code Playgroud)
我得到了这个输出:
apt-file is now using the user's cache directory.
If you want to switch back to the system-wide cache directory,
run 'apt-file purge'
Downloading complete file http://gb.archive.ubuntu.com/ubuntu/dists/utopic/Contents-amd64.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
94 29.6M 94 27.8M 0 0 667k 0 0:00:45 0:00:42 0:00:03 97 29.6M 97 28.8M 0 0 677k …
Run Code Online (Sandbox Code Playgroud) 是 的apt-file
一部分apt
吗?我apt
默认安装了,但是没有apt-file
。
怎么样apt-cache
?我不记得是默认安装的是我的还是我的。
我想找到所有提供文件名中包含“ssl”的共享对象的包。在易文件手册页说:
--regexp | -x 将模式视为 (perl) 正则表达式。有关详细信息,请参阅 perlreref(1)。如果没有此选项,模式将被视为要搜索的文字字符串。
因此我的第一次尝试是
apt-file search --regexp .*ssl.*\.so.*
Run Code Online (Sandbox Code Playgroud)
然而,这给了我这样的结果
机智的例子:/usr/lib/Wt/examples/feature/client-ssl-auth/resources
文件名中没有“.so”。
我玩了一下,想出了
apt-file search --regexp .*ssl.*\\.so.*
Run Code Online (Sandbox Code Playgroud)
即我逃脱了应该逃脱点的反斜杠。这给了我想要的结果。
有人可以解释为什么在这种情况下我需要双反斜杠吗?
我想使用带有逻辑 or 的正则表达式连接模式一次搜索多个包|
。
假设这两个文件/usr/lib/apache2/modules/httpd.exp
并/usr/lib/apt/apt.systemd.daily
存在:
$ sudo dpkg -S /usr/lib/apache2/modules/httpd.exp
apache2-bin: /usr/lib/apache2/modules/httpd.exp
$ sudo dpkg -S /usr/lib/apt/apt.systemd.daily
apt: /usr/lib/apt/apt.systemd.daily
Run Code Online (Sandbox Code Playgroud)
为什么apt-file search --regexp '/usr/lib/apache2/modules/httpd.exp|/usr/lib/apt/apt.systemd.daily'
只返回
apache2-bin: /usr/lib/apache2/modules/httpd.exp
Run Code Online (Sandbox Code Playgroud)
该解决方案旨在用于优化 GNOME 构建工具jhbuild
。它应该适用于大量的 Ubuntu 版本。