FREEBSD创build新的端口

我在这里有一个脚本,我想创build一个在freebsd中的端口,然后将其作为包,使我可以安装在一些机器上。 脚本在下面。

#!/usr/local/bin/bash if [ ! -f "/suid.old" ] then find / -perm -4000 -o -perm -2000 -ls > /suid.old else find / -perm -4000 -o -perm -2000 -ls > /suid.new diff suid.old suid.new > newchanges fi exit 0 if [ -s "/newchanges" ] then mail -s "changes has occured" [email protected] else mail -s "No changes has occured" [email protected] /newchanges fi 

我怎样才能做到这一点?

如果你只是安装一个小脚本,我只是手动做。 你可以使用shar文件,但这似乎是矫枉过正。

我看到的最大的问题是,首先, bash将会位于不同系统上的不同位置,但脚本中没有什么是Bash特有的,因此您可以将您的shebang更改为:

 #!/bin/sh 

要么

 #!/usr/bin/env bash 

便携性。

其次,你将需要为你的脚本select一个位置。 这让我觉得/usr/local/bin会和其他的一样好。

第三,你将需要chown来设置所有权和chmod来设置权限。

第四,你应该为你的输出文件select更好的位置。 如果仅用于临时使用,则应该在/tmp创build它们,而不是在suid.oldsuid.new所在的根目录中,或者在有新newchanges的当前目录中newchanges 。 否则, var某个地方可能是你想要放置更持久的数据的地方。 也许/var/local/suid

第五, exit防止第二次if从以往评估,所以没有邮件将永远不会被发送。

第六,你可能想要在某个时候mv suid.new suid.old所以下一次你检查它是比较最近保存的数据。

第七,你的最后一个邮件命令应该有文件pipe道或redirect。它不会作为一个参数。 这两个邮件命令应该交换,所以你没有邮寄一个文件,当它是空的,并发送时,它不是。

 if [ -s "/newchanges" ] then mail -s "No changes have occurred" [email protected] < /path/to/newchanges else mail -s "changes have occurred" [email protected] fi 

一个shell脚本的端口是超越杀伤力的 – 正如丹尼斯所说,这是我会根据需要复制到单独的机器(或手动创build一个包,但这是一个痛苦)。

我也不确定这是否具有足够的通用function,使其进入官方端口集合(特别是,已经有一个“setuid二进制”检查作为日常安全审计的一部分)。

所有这一切,关于创build一个港口的细节可以在波特的手册中find ,你可以随时推出一个本地端口只为您的网站。