本质上,我正在寻找一个完全静音、非交互式的版本
freebsd-update fetch
freebsd-update install
和
portsnap fetch update
答案1
在 FreeBSD-10.2 上有一个新的选项可以允许这样做:
freebsd-update fetch --not-running-from-cron
--not-running-from-cron
Force freebsd-update fetch to proceed when there is no
controlling tty. This is for use by automated scripts and
orchestration tools. Please do not run freebsd-update
fetch from crontab or similar using this flag, see:
freebsd-update cron
答案2
在 FreeBSD 10.0R 及更高版本上,在 freebsd-update 上设置 PAGER 环境变量
env PAGER=cat freebsd-update fetch
freebsd-update install
为了端口快照(8)在 FreeBSD 10.0R 及更高版本中,默认行为(即没有--interactive
选项)是非交互式的。
portsnap fetch update
答案3
对于 FreeBSD < 10,以下内容有效:
允许在不连接终端的情况freebsd-update
下运行 fetch :stdin
sed 's/\[ ! -t 0 \]/false/' /usr/sbin/freebsd-update > /tmp/freebsd-update
chmod +x /tmp/freebsd-update
允许在不连接终端的情况portsnap
下运行 fetch :stdin
sed 's/\[ ! -t 0 \]/false/' /usr/sbin/portsnap > /tmp/portsnap
chmod +x /tmp/portsnap
致谢:维威
对于 FreeBSD 10+,应优先考虑@uchida 在下面答案中提供的解决方案!
答案4
对于 FreeBSD 版本 > 11
freebsd-update 是一个脚本,其中有一个“询问用户一切是否正常的功能”。该功能为:
继续 ()
在这个函数中注释掉所有内容就足够了,但是
返回 0
此后,该函数对“y/n”问题返回肯定答案。
重要提示!请记住,我们不建议这么做,风险自负!
# /tmp/freebsd-update -r 11.1-RELEASE upgrade ; while [ $? -eq 1 ] ; do sleep 3; /tmp/freebsd-update -r 11.1-RELEASE upgrade ; done