coreutils

coreutils, Linux işletim sistemlerinde temel dosya yönetimi ve sistem komutlarını içeren bir paket olup, kullanıcıların dosyalarla etkileşimde bulunmalarını sağlayan temel araçları sunar. Bu paket, dosya kopyalama, taşıma, silme, listeleme gibi işlemleri gerçekleştiren komutları içerir. Örneğin, cp, mv, rm, ls gibi komutlar coreutils paketinin bir parçasıdır.

Derleme

#--------------------------------------------------------------------------------------------------------------------
#!/usr/bin/env bash
name="coreutils"
version="9.7"
description="The basic file, shell and text manipulation utilities of the GNU operating system"
source="https://ftp.gnu.org/gnu/coreutils/coreutils-$version.tar.xz"
depends="acl,attr,gmp,libcap,openssl"
display=":$(ls /tmp/.X11-unix/* | sed 's#/tmp/.X11-unix/X##' | head -1)"  # Display adı
user=$(who | grep "(${display})" | awk '{print $1}')                      # Display kullanıcısı

ROOT="/home/$user/distro"
ROOTBUILDDIR="$ROOT/build"                # Derleme dizini
BUILDDIR="$ROOT/build/build-${name}-${version}" # Alt dizin
DESTDIR="$ROOT/rootfs"                     # Yükleme dizini
PACKAGEDIR=$(pwd)                          # Paket dizini
SOURCEDIR="$ROOT/build/${name}-${version}" # Kaynak dizini

initsetup(){
            mkdir -p  $ROOTBUILDDIR #derleme dizini yoksa oluşturuluyor
            rm -rf $ROOTBUILDDIR/* #içeriği temizleniyor
            cd $ROOTBUILDDIR #dizinine geçiyoruz
    wget ${source}
    for f in *\ *; do mv "$f" "${f// /}"; done #isimde boşluk varsa silme işlemi yapılıyor
            dowloadfile=$(ls|head -1)
            filetype=$(file -b --extension $dowloadfile|cut -d'/' -f1)
            if [ "${filetype}" == "???" ]; then unzip  ${dowloadfile}; else tar -xvf ${dowloadfile};fi
            director=$(find ./* -maxdepth 0 -type d)
            directorname=$(basename ${director})
            if [ "${directorname}" != "${name}-${version}" ]; then mv $directorname ${name}-${version};fi
            mkdir -p $BUILDDIR&&mkdir -p $DESTDIR&&cd $SOURCEDIR
}

export CFLAGS="-static-libgcc -static-libstdc++ -fPIC"
setup(){
export FORCE_UNSAFE_CONFIGURE=1
./configure --prefix=/usr \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--enable-largefile \
--enable-single-binary=symlinks \
--enable-no-install-program=groups,hostname,kill,uptime \
--without-selinux --without-openssl
}

build(){
    make
}
package(){
    make install DESTDIR=$DESTDIR
    ${DESTDIR}/sbin/ldconfig -r ${DESTDIR}           # sistem guncelleniyor
}
initsetup       # initsetup fonksiyonunu çalıştırır ve kaynak dosyayı indirir
setup           # setup fonksiyonu çalışır ve derleme öncesi kaynak dosyaların ayalanması sağlanır.
build           # build fonksiyonu çalışır ve kaynak dosyaları derlenir.
package         # package fonksiyonu çalışır, yükleme öncesi ayarlamalar yapılır ve yüklenir.

Paket Derleme Yöntemi konusunda anlatıldığı gibi derleme işlemini yapınız.