![无法在 Linux 2.6.18 上安装 dpkg](https://linux22.com/image/26324/%E6%97%A0%E6%B3%95%E5%9C%A8%20Linux%202.6.18%20%E4%B8%8A%E5%AE%89%E8%A3%85%20dpkg.png)
我有一个正在尝试使用的虚拟机。它似乎没有 dpkg 或 apt-get,所以我从以下位置下载了源代码http://packages.debian.org/sid/dpkg-dev。
如果我运行 ./configure 然后运行 make 我得到
$ make
make all-recursive
make[1]: Entering directory `/home/dbadmin/temp/dpkg-1.16.8'
Making all in lib
make[2]: Entering directory `/home/dbadmin/temp/dpkg-1.16.8/lib'
Making all in compat
make[3]: Entering directory `/home/dbadmin/temp/dpkg-1.16.8/lib/compat'
CC empty.o
cc1: error: unrecognized command line option "-Wvla"
make[3]: *** [empty.o] Error 1
make[3]: Leaving directory `/home/dbadmin/temp/dpkg-1.16.8/lib/compat'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/dbadmin/temp/dpkg-1.16.8/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dbadmin/temp/dpkg-1.16.8'
make: *** [all] Error 2
我尝试 $ ./configure --disable-compiler-warnings $ make 来获取...
CC trigproc.o
CC update.o
CCLD dpkg
archives.o: In function `tar_writeback_barrier':
/home/dbadmin/temp/dpkg-1.16.8/src/archives.c:1139: undefined reference to `sync_file_range'
archives.o: In function `fd_writeback_init':
/home/dbadmin/temp/dpkg-1.16.8/src/archives.c:77: undefined reference to `sync_file_range'
collect2: ld returned 1 exit status
make[2]: *** [dpkg] Error 1
make[2]: Leaving directory `/home/dbadmin/temp/dpkg-1.16.8/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dbadmin/temp/dpkg-1.16.8'
make: *** [all] Error 2
这是我的机器
$ uname -a
Linux server.name.domain.tld 2.6.18-194.26.1.el5xen #1 SMP Fri Oct 29 14:30:03 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
我应该如何获得一个功能包管理器来解决这个问题?
更新: $ gcc --版本 gcc (GCC) 4.1.2 20080704 (红帽 4.1.2-51)
答案1
Dpkg 设计用于 Debian 和类似 Debian 的发行版。在其他系统上编译可能很困难,并且无论如何您都无法有效地使用它。另外,2.6.18 的内核版本很古老(我闻到了 CentOS 5),只有旧版本的 dpkg 有机会工作。
gcc --版本 gcc (GCC) 4.1.2 20080704(红帽 4.1.2-51)
所以你有一个红帽发行版:RHEL或其重新打包,例如 CentOS。 Red Hat 发行版上的基本包操作工具(相当于 dpkg)是转速。高级包操作工具(相当于 apt-get)是嗯。
有关确定 Linux 计算机正在运行哪个发行版的更系统的方法,请参阅如何编写有效确定发行版名称的脚本?。如果你幸运的话,lsb-release -si
会给你答案。否则,请查找指示性文件,例如/etc/*release*
或/etc/*version*
.
答案2
您是否安装了所有依赖项,特别是 GCC?
unrecognized command line option "-Wvla"
听起来你没有 GCC,或者版本不够新。
您到底运行什么系统(发行版、版本……)?
PS:为什么要在非debian / barebones Linux系统上安装dpkg,而不安装Debian?