Nfs

aix:大文件

  • June 9, 2019
/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

刪除它們

引用自:https://unix.stackexchange.com/questions/237704