libcap

libcap paketi, Linux işletim sistemlerinde kullanıcı ve grup yetkilendirmelerini yönetmek için kullanılan bir kütüphanedir. Bu kütüphane, sistem kaynaklarına erişim kontrolü sağlamak amacıyla çeşitli yetki seviyeleri tanımlamaktadır. coreutils için gerekli olan paket.

Derleme

#--------------------------------------------------------------------------------------------------------------------
#!/usr/bin/env bash
version="2.69"
name="libcap"
depends="glibc,acl,openssl"
description="shell ve network copy"
source="https://mirrors.edge.kernel.org/pub/linux/libs/security/linux-privs/libcap2/${name}-${version}.tar.xz"
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}
        #isimde boşluk varsa silme işlemi yapılıyor
        for f in *\ *; do mv "$f" "${f// /}"; done
        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
}
_common_make_options=(
  CGO_CPPFLAGS="$CPPFLAGS"
  CGO_CFLAGS="$CFLAGS"
  CGO_CXXFLAGS="$CXXFLAGS"
  CGO_LDFLAGS="$LDFLAGS"
  CGO_REQUIRED="1"
  GOFLAGS="-buildmode=pie -mod=readonly -modcacherw"
  GO_BUILD_FLAGS="-ldflags '-compressdwarf=false -linkmode=external'"
)
setup(){ echo ""
}
build(){
make "${_common_make_options[@]}" SUDO="" prefix=/usr KERNEL_HEADERS=include lib=lib64 \
sbindir=bin RAISE_SETFCAP=no  DYNAMIC=yes
}
package(){
        make "${_common_make_options[@]}" DESTDIR="$DESTDIR" RAISE_SETFCAP=no prefix=/usr \
        lib=lib64 sbindir=bin install
        ${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.