我需要重建 openssh 来打开审计日志。
因此(以root身份):
apt-get openssh
apt-get build-dep openssh
dpkg-source -x openssh_6.6p1-2ubuntu2.3.dsc
编辑 debian/rules,添加:
confflags += --with-audit=linux
后
confflags += --with-ssl-engine
./configure
make
dpkg-buildpackage -b
......
gcc -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-all -D_FORTIFY_SOURCE=2 -g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -DLOGIN_PROGRAM=\"/bin/login\" -DLOGIN_NO_ENDOPT -DSSH_EXTRAVERSION=\"Ubuntu-2ubuntu2.3ubuntu1audit\" -I. -I.. -I/usr/include/editline -I/usr/include/ConsoleKit/ck-connector -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -DSSHDIR=\"/etc/ssh\" -D_PATH_SSH_PROGRAM=\"/usr/bin/ssh\" -D_PATH_SSH_ASKPASS_DEFAULT=\"/usr/bin/ssh-askpass\" -D_PATH_SFTP_SERVER=\"/usr/lib/openssh/sftp-server\" -D_PATH_SSH_KEY_SIGN=\"/usr/lib/openssh/ssh-keysign\" -D_PATH_SSH_PKCS11_HELPER=\"/usr/lib/openssh/ssh-pkcs11-helper\" -D_PATH_SSH_PIDDIR=\"/var/run\" -D_PATH_PRIVSEP_CHROOT_DIR=\"/var/run/sshd\" -DHAVE_CONFIG_H -c ../sshd.c
In file included from ../openbsd-compat/sys-tree.h:29:0,
from ../sshd.c:56:
./config.h:1606:0: warning: "SUPERUSER_PATH" redefined [enabled by default]
#define SUPERUSER_PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
^
In file included from ../includes.h:171:0,
from ../sshd.c:45:
../defines.h:399:0: note: this is the location of the previous definition
# define SUPERUSER_PATH _PATH_STDPATH
^
In file included from ../openbsd-compat/sys-tree.h:29:0,
from ../sshd.c:56:
./config.h:1615:0: warning: "USER_PATH" redefined [enabled by default]
#define USER_PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
^
In file included from ../includes.h:19:0,
from ../sshd.c:45:
../config.h:1615:0: note: this is the location of the previous definition
#define USER_PATH "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"
^
In file included from ../openbsd-compat/openbsd-compat.h:157:0,
from ../includes.h:174,
from ../sshd.c:45:
**../openbsd-compat/bsd-misc.h:122:39: error: expected identifier or ‘(’ before ‘while’**
# define krb5_free_error_message(a,b) while(0)
有谁知道解决这个问题的方法吗?
我尝试将该while(0)
部件放入()
或{}
,但没有帮助。
使用 14.04.0 时我没有遇到这个问题。
如能提供任何建议/提示我将非常感激。
谢谢!
答案1
make
并且configure
是标准 Unix 的一部分(即不是Debian 专用的工具链,用于构建软件。Debian 在内部使用它们并不奇怪,但它很可能将构建过程的每个部分包装在自己的命令中,以便它可以控制如何configure
调用make
。这就是你想要的,因为你不知道(也不知道)想了解)所有必要的琐碎细节,以便“劫持” Debian 的构建过程make
并configure
取得成功。
我从来没有试过重建 Debian 软件包但正如我所怀疑的,有一个指导果然,我找到了构建包的命令那里:
fakeroot debian/rules clean
fakeroot debian/rules binary
该fakeroot
命令允许您以非 root 用户身份运行任何需要 root 访问权限的程序。这很好,因为gcc
它不是设计为以 root 身份运行的,而且实际上永远都不应该。但是,如果这不困扰您,您可以跳过安装fakeroot
,只需运行
debian/rules binary
直接。正如我所说,我从未尝试过,所以如果它有效,请告诉我!:-)