aix:大文件
/opt/freeware/bin/ls //media/nfs/slack64/pubblica /opt/freeware/bin/ls: cannot open directory //media/nfs/slack64/pubblica: Value too large to be stored in data type
這發生在 perlz 的 coreutils-8.23 和在 aix 上重新編譯的 8.24 fs 是 nfs。怎麼解決?
這是 coreutils 的規範
Summary: The GNU core utilities: a set of tools commonly used in shell scripts Name: coreutils Version: 8.24 Release: 1 License: GPL Group: System Environment/Base URL: http://www.gnu.org/software/coreutils/ Source0: ftp://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz Source1: ftp://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz.sig Source2: %{name}-DIR_COLORS Source3: %{name}-DIR_COLORS.xterm Source4: %{name}-colorls.sh Source5: %{name}-colorls.csh Patch0: %{name}-%{version}-aix-uname.patch Patch1: %{name}-%{version}-aix-configure.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: gettext, gmp-devel >= 4.3.2 BuildRequires: gcc >= 4.2.3-2 BuildRequires: make Requires: /sbin/install-info Requires: info, gettext, gmp >= 4.3.2 Conflicts: mktemp, coreutils-64bit Provides: fileutils = %{version}-%{release} Provides: sh-utils = %{version}-%{release} Provides: stat = %{version}-%{release} Provides: textutils = %{version}-%{release} Obsoletes: fileutils <= 4.1.9 Obsoletes: sh-utils <= 2.0.12 Obsoletes: stat <= 3.3 Obsoletes: textutils <= 2.0.21 %description These are the GNU core utilities. This package is the combination of the old GNU fileutils, sh-utils, and textutils packages. These tools are the GNU versions of common useful and popular file and text utilities which are used for: - file management - shell scripts - modifying text file (spliting, joining, comparing, modifying, ...) Most of these programs have significant advantages over their Unix counterparts, such as greater speed, additional options, and fewer arbitrary limits. %prep %setup -q %patch0 %patch1 %build # required if you run 'configure' as root user export FORCE_UNSAFE_CONFIGURE=1 export CC="gcc -pthread -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" export CFLAGS="-DSYSV -D_AIX -D_AIX32 -D_AIX41 -D_AIX43 -D_AIX51 -D_ALL_SOURCE -DFUNCPROTO=15 -O -I/opt/freeware/include" ./configure \ --prefix=%{_prefix} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --enable-largefile \ --enable-nls gmake %{?_smp_mflags} gmake %install [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} gmake DESTDIR=${RPM_BUILD_ROOT} install bzip2 -9f ChangeLog ( cd ${RPM_BUILD_ROOT} /usr/bin/strip .%{_bindir}/* || : gzip --best .%{_infodir}/*info* mkdir -p usr/linux/bin mkdir -p usr/bin cd usr/linux/bin ln -sf ../../..%{_bindir}/* . cd ../../bin for i in dir dircolors vdir tac md5sum pinky seq do rm ../linux/bin/$i ln -sf ../..%{_bindir}/$i . done ) mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d cp %{SOURCE2} ${RPM_BUILD_ROOT}%{_sysconfdir}/DIR_COLORS cp %{SOURCE3} ${RPM_BUILD_ROOT}%{_sysconfdir}/DIR_COLORS.xterm cp %{SOURCE4} ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/colorls.sh cp %{SOURCE5} ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/colorls.csh chmod 644 ${RPM_BUILD_ROOT}%{_sysconfdir}/DIR* chmod 644 ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/* %pre # We must deinstall these info files since they're merged in # coreutils.info. else their postun'll be run too late # and install-info will fail badly because of duplicates for file in sh-utils textutils fileutils; do /sbin/install-info --delete %{_infodir}/$file.info.gz --dir=%{_infodir}/dir &> /dev/null || : done %preun if [ $1 = 0 ]; then /sbin/install-info --delete %{_infodir}/%{name}.info.gz %{_infodir}/dir || : fi %post /usr/bin/grep -v '(sh-utils)\|(fileutils)\|(textutils)' %{_infodir}/dir > \ %{_infodir}/dir.rpmmodify || exit 0 /bin/mv -f %{_infodir}/dir.rpmmodify %{_infodir}/dir /sbin/install-info %{_infodir}/%{name}.info.gz %{_infodir}/dir || : %clean [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,system,-) %doc COPYING ABOUT-NLS ChangeLog.bz2 NEWS README THANKS TODO old/* %config(noreplace) %{_sysconfdir}/DIR_COLORS* %{_sysconfdir}/profile.d/* %{_bindir}/* %{_infodir}/coreutils* # exclude %{_libdir}/charset.alias as it conflicts with glib2 # %{_libdir}/* %{_mandir}/man?/* %{_datadir}/locale/*/*/* /usr/bin/* /usr/linux/bin/*
基本上,您需要確保 _LARGE_FILES 已定義,例如,嘗試
# export CFLAGS="-O3 -D_LARGE_FILES"
是
-OX
可選的。我推薦 -O3 作為 gcc 的預設值, -O2 作為 xlc 的預設值或者,你可以試試我的包裝(至少 coreutils-8.25)。
ps 我剛剛檢查了 perzl 網站 - 他現在也在打包 8.25。我們的打包方法之間的主要區別在於我使用 installp 作為包管理器並使用
/opt/bin
而不是/opt/freeware/bin
(這意味著您可以同時安裝並決定哪個更易於管理) - 注意:因為我不知道約定在這裡,我還沒有(還)向我的“aixtools”添加 URL。如果您有興趣,可以嘗試通過 twitter @rootvgnet 引起我的注意。因為它太大而無法評論 - 添加 - 如果您選擇使用我的包裝,安裝說明
安裝命令:-as root-#installp -d /some/dir -agX aixtools.gnu.coreutils;應該在輸出中顯示一個資訊塊,包括:
SUCCESSES --------- Filesets listed in this section passed pre-installation verification and will be installed. Selected Filesets ----------------- aixtools.gnu.coreutils.rte 8.25.0.0 # built 22-Aug-2016 1702 UTC Requisites ---------- (being installed automatically; required by filesets listed above) aixtools.gnu.gettext.rte 0.19.8.1 # built 21-Aug-2016 1821 UTC aixtools.gnu.gettext.share 0.19.8.1 # universal files aixtools.gnu.libiconv.rte 1.14.0.4 # built 21-Aug-2016 1623 UTC aixtools.gnu.libiconv.share 1.14.0.4 # universal files
這意味著除了 coreutils 之外,您還需要用於文本國際化的 gnu 依賴項“gettext”和 GNU iconv,因為 coreutils 不接受 AIX iconv 實現許多翻譯的方式。
相應的 wiki(因為軟體包可能會隨著時間的推移而更新)連結是: - http://www.aixtools.net/index.php/coreutils
簡而言之,將三個 installp 文件下載到(例如,/tmp/aixtools)後
# installp -d /tmp/aixtools -agX aixtools.gnu.coreutils
這將安裝每個組件的“share”和“rte”組件,以及 coreutils 的手冊頁。
如果您不希望手冊頁使用:
# installp -u aixtools.gnu.aixtools.man
刪除它們