如何在apt-get开始下载包之前运行命令?
我知道dpkg预调用钩子( 用钩子把脚本挂起来 ),但这似乎是在下载之后运行的。
$ apt-get update
Get: 11 http://security.debian.org/ wheezy/updates/main qemu amd64 1.1.2+dfsg-6a+deb7u7 [115 kB]
Fetched 70.9 MB in 10s (6,776 kB/s)
refreshing freenet index
--2015-05-19 15:55:25-- http://127.0.0.1:8888/freenet:USK@oRy7ltZLJM-w-kcOBdiZS1pAA8P-BxZ3BPiiqkmfk0E,6a1KFG6S-Bwp6E-MplW52iH~Y3La6GigQVQDeMjI6rg,AQACAAE/deb.mempo.org/-42/
我们需要的是在下载之前运行一个命令。更确切地说:脚本必须在调用apt-get之后运行,但在apt-get访问任何在线资源之前运行。
有什么像下载前挂钩的东西吗?
重要的是,不需要替换apt脚本就可以完成安装工作(也不需要做任何可以通过更新来撤消的操作)。
发布于 2015-06-01 08:44:57
首先确定apt在何处使用whereis apt-get
或which apt-get
;我将假定它在/usr/bin/apt中。
然后用以下内容在/usr/local/bin/apt中创建一个文件:
#!/bin/bash
# (commands to run before apt-get)
exec /usr/bin/apt-get "$@"
现在是chmod +x /usr/local/bin/apt-get
。
这应该在发行版的所有升级中存活下来,但是它不应该改变apt的行为(除了在执行任何其他操作之前运行命令)。更重要的是,它可以解析命令行参数,只在真正需要时运行命令。
(这个答案建立在Mohammad Etemaddar的答复的基础上,并与来自muru的反馈进行了合并)
发布于 2016-02-17 04:40:34
那么使用apt前后调用钩子呢?
本质上,它类似于dpkg的前后调用钩子,但对于apt (我假设这实际上是您的使用场景中的重要部分)。AFAIK还有其他的,但我只这样用过。
例如。
$ sudo cat /etc/apt/apt.conf.d/05new-hook
APT::Update::Pre-Invoke {"your-command-here"};
发布于 2015-05-19 20:25:56
您可以在.bashrc文件中使用“别名”。例如,将其放在根.bashrc文件中:
alias apt-get='echo blahblah && apt-get'
命令行参数将自动添加到别名的末尾。
只需用所需的命令替换echo blahblah
即可。
但在这种情况下,它只在以root用户身份执行命令时才起作用(而不是sudo)。
https://unix.stackexchange.com/questions/204414
复制相似问题