スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

RHEL5 x86_64にcheckinstall-1.6.1をインストールしようとしたらmakeでエラー

RHEL5 x86_64にcheckinstall-1.6.1をインストールしようとした。

# tar zxf checkinstall-1.6.1.tgz
# cd checkinstall-1.6.1
# make

そしたら↓みたいなエラー。
for file in locale/checkinstall-*.po ; do \
case ${file} in \
locale/checkinstall-template.po) ;; \
*) \
out=`echo $file | sed -s 's/po/mo/'` ; \
msgfmt -o ${out} ${file} ; \
if [ $? != 0 ] ; then \
exit 1 ; \
fi ; \
;; \
esac ; \
done
msgfmt: locale/checkinstall-de.po: 警告: 文字セット "CHARSET" は汎用のエンコーディグ名ではありません.
ユーザの文字セットへのメッセージの変換はうまく働かないかも知れません.
msgfmt: locale/checkinstall-es.po: 警告: 文字セット "CHARSET" は汎用のエンコーディグ名ではありません.
ユーザの文字セットへのメッセージの変換はうまく働かないかも知れません.
make -C installwatch-0.7.0beta5
make[1]: ディレクトリ `/usr/local/src/checkinstall-1.6.1/installwatch-0.7.0beta5' に入ります
./create-localdecls
Checking truncate argument type... off_t
Checking libc version... libc.so.6
Checking glibc subversion... Treated as glibc >= 2.1 (finger crossed)
gcc -Wall -c -D_GNU_SOURCE -DPIC -fPIC -D_REENTRANT -DVERSION=\"0.7.0beta5\" installwatch.c
installwatch.c:262: 警告: conflicting types for built-in function ‘log’
installwatch.c: In function ‘__instw_printdirent64’:
installwatch.c:879: 警告: format ‘%lld’ expects type ‘long long int’, but argument 4 has type ‘__ino64_t’
installwatch.c:879: 警告: format ‘%lld’ expects type ‘long long int’, but argument 5 has type ‘__off64_t’
installwatch.c: In function ‘fopen’:
installwatch.c:2313: 警告: キャストによってポインタから異なるサイズの整数となります
installwatch.c:2328: 警告: キャストによってポインタから異なるサイズの整数となります
installwatch.c: トップレベル:
installwatch.c:2694: error: conflicting types for ‘readlink’
/usr/include/unistd.h:777: error: previous declaration of ‘readlink’ was here
installwatch.c: In function ‘fopen64’:
installwatch.c:3267: 警告: キャストによってポインタから異なるサイズの整数となります
make[1]: *** [installwatch.o] エラー 1
make[1]: ディレクトリ `/usr/local/src/checkinstall-1.6.1/installwatch-0.7.0beta5' から出ます
make: *** [all] エラー 2

RHEL4 Update3 x86_64のときは大丈夫だった。glibcのバージョンが新しいせいなのか。

checkinstall本家のメーリングリストを見るとこんなパッチ↓があった。
--- installwatch.c.ORG	2007-04-07 14:27:23.000000000 -0400
+++ installwatch.c 2007-04-07 14:25:06.000000000 -0400
@@ -84,7 +84,7 @@
static int (*true_open)(const char *, int, ...);
static DIR *(*true_opendir)(const char *);
static struct dirent *(*true_readdir)(DIR *dir);
-static int (*true_readlink)(const char*,char *,size_t);
+static ssize_t (*true_readlink)(const char*,char *,size_t);
static char *(*true_realpath)(const char *,char *);
static int (*true_rename)(const char *, const char *);
static int (*true_rmdir)(const char *);
@@ -546,7 +546,7 @@
struct utimbuf timbuf;
size_t truesz;
char linkpath[PATH_MAX+1];
- size_t linksz;
+ ssize_t linksz;

#if DEBUG
debug(2,"copy_path(%s,%s)\n",truepath,translroot);
@@ -1582,7 +1582,7 @@
struct stat reslvinfo;
instw_t iw;
char wpath[PATH_MAX+1];
- size_t wsz=0;
+ ssize_t wsz=0;
char linkpath[PATH_MAX+1];


@@ -2698,8 +2698,8 @@
return result;
}

-int readlink(const char *path,char *buf,size_t bufsiz) {
- int result;
+ssize_t readlink(const char *path,char *buf,size_t bufsiz) {
+ ssize_t result;
instw_t instw;
int status;

このパッチを適用してみる。

# cd installwatch-0.7.0beta5
# vi installwatch.c.patch
上のパッチをコピペ。
# patch < installwatch.c.patch
# cd ../
# make
… 以降は前記と同じ …

この記事のトラックバックURL

http://ysmt.blog21.fc2.com/tb.php/232-94840443

CentOS 5.2 x86_64にcheckinstallをインストールする
CentOS 5.2 x86_64にyumでcheckinstallをインストールできなかったので自力でインストールしてみました。 警告いっぱい出ます。 とりあえず使えるっぽ...

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。