24 changed files with 859 additions and 1 deletions
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
all: build |
||||
|
||||
build : |
||||
bash build.sh | tee ${HOME}/lfs_build.log |
||||
|
||||
install-strip-all: |
||||
cp --verbose ./build/1002010_strip-all.sh /usr/sbin/strip-all.sh |
||||
chmod --verbose 744 /usr/sbin/strip-all.sh |
||||
|
||||
install-remove-libtool: |
||||
cp --verbose ./build/1002020_remove-la-files.sh /usr/sbin/remove-la-files.sh |
||||
chmod +x /usr/sbin/remove-la-files.sh |
||||
|
||||
install-profile: |
||||
cp --verbose ./build/1003010_profile.sh /etc/profile |
||||
install --verbose --directory --mode=0755 --owner=root --group=root /etc/profile.d |
||||
cp --verbose ./build/1003020_extrapath.sh /etc/profile.d/extrapaths.sh |
||||
cp --verbose ./build/1003030_readline.sh /etc/profile.d/readline.sh |
||||
cp --verbose ./build/1003040_umask.sh /etc/profile.d/umask.sh |
||||
cp --verbose ./build/1003050_i18n.sh /etc/profile.d/i18n.sh |
||||
cp --verbose ./build/1003060_bashrc.sh /etc/bashrc |
||||
|
||||
install-vimrc: |
||||
cp --verbose ./build/1003100_vimrc.txt /etc/vimrc |
||||
@ -0,0 +1,415 @@
@@ -0,0 +1,415 @@
|
||||
#!/usr/bin/env bash |
||||
|
||||
cat > /tmp/blfs_sudo << EOF |
||||
blfs ALL = NOPASSWD: /usr/bin/make install* |
||||
EOF |
||||
|
||||
if [ "$(whoami)" != "blfs" ] |
||||
then |
||||
echo "Please execute this script as user blfs" |
||||
echo "# groupadd blfs" |
||||
echo "# useradd -g blfs -m blfs" |
||||
echo "# passwd blfs" |
||||
exit 1 |
||||
fi |
||||
|
||||
set -ueEo pipefail |
||||
|
||||
# shellcheck source=/dev/null |
||||
if [ ! -e "${HOME}"/.blfsbuild_config ] |
||||
then |
||||
cat > "${HOME}"/.blfsbuild_config << EOSF |
||||
# location of local package sources |
||||
BLFS_PACKAGE_DIR=${HOME}/packages |
||||
# Number of processors to use |
||||
BLFS_NPROC=$(nproc) |
||||
# Bypass step by step validation until a breakpoint |
||||
BLFS_BREAKPOINT=1 |
||||
# strip binaries or not |
||||
BLFS_STRIP_BINARIES=true |
||||
EOSF |
||||
fi |
||||
|
||||
# shellcheck source=/dev/null |
||||
source "${HOME}"/.lfsbuild_config |
||||
|
||||
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" |
||||
BLFS_PACKAGE_DIR=${BLFS_PACKAGE_DIR:-/home/blfs/packages} |
||||
BLFS_NPROC=${BLFS_NPROC:-$(nproc)} |
||||
BLFS_BREAKPOINT=${LFS_BREAKPOINT:-1000000} |
||||
BLFS_STRIP_BINARIES=${BLFS_STRIP_BINARIES:-false} |
||||
|
||||
ask_for_exit() |
||||
{ |
||||
echo "----- call ask_for_exit $1" |
||||
echo "find ${SCRIPT_DIR}/build/ \( -name \"*.sh\" -or -name \"*.txt\" \) -print |sort |grep --context=1 \$(cat ${HLFSB})" |
||||
find "${SCRIPT_DIR}/build/" \( -name "*.sh" -or -name "*.txt" \) -print |sort |grep --context=1 "$(cat "${HLFSB}")" |
||||
echo "ask_for_exit : args = $* && $1 < ${BLFS_BREAKPOINT} (BLFS_BREAKPOINT) || $1 < $(cat "${HLFSB}") (HLFSB) || ${BLFS_BREAKPOINT} (BLFS_BREAKPOINT) > $(cat "${HLFSB}") (HLFSB) " |
||||
if [[ $# -eq 1 ]] && [[ $1 -ge 10000 ]] && [[ $1 -lt 10000000 ]] && [[ $1 -lt ${BLFS_BREAKPOINT} ]] |
||||
then |
||||
echo "BLFS_BREAKPOINT : validation disabled" |
||||
return 0 |
||||
elif [[ $# -eq 1 ]] && [[ $1 -ge 10000 ]] && [[ $1 -lt 10000000 ]] && [[ $1 -lt $(cat "${HLFSB}") ]] |
||||
then |
||||
echo "STEP_COUNTER : already done. validation disabled" |
||||
return 0 |
||||
elif [[ $# -eq 1 ]] && [[ $1 -ge 10000 ]] && [[ $1 -lt 10000000 ]] && [[ ${BLFS_BREAKPOINT} -gt $(cat "${HLFSB}") ]] |
||||
then |
||||
echo "BLFS_BREAKPOINT : validation forced" |
||||
return 0 |
||||
else |
||||
USER_ANSWER="?"; |
||||
while [ "${USER_ANSWER}" != "n" ] && [ "${USER_ANSWER}" != "y" ] ; do |
||||
echo -n "Continue ? [y/n]" |
||||
read -r -n 1 USER_ANSWER |
||||
echo ""; |
||||
done |
||||
if [ "$USER_ANSWER" == "n" ] |
||||
then |
||||
exit 0 |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
ask_for_execution() { |
||||
USER_ANSWER="?"; |
||||
while [ "${USER_ANSWER}" != "n" ] && [ "${USER_ANSWER}" != "y" ] && [ "${USER_ANSWER}" != "q" ] |
||||
do |
||||
echo -n "Execute ? [y/n/q]" |
||||
read -r -n 1 USER_ANSWER |
||||
echo ""; |
||||
done |
||||
if [ "$USER_ANSWER" == "y" ] |
||||
then |
||||
return 0 |
||||
elif [ "$USER_ANSWER" == "n" ] |
||||
then |
||||
return 1 |
||||
elif [ "$USER_ANSWER" == "q" ] |
||||
then |
||||
exit 0 |
||||
else |
||||
exit 0 |
||||
fi |
||||
} |
||||
|
||||
cat > "${HOME}"/.bashrc << EOF |
||||
set +h |
||||
umask 022 |
||||
export PATH=/usr/bin |
||||
export MAKEFLAGS=-j${BLFS_NPROC} |
||||
export ARCH=$(uname -m) |
||||
export LC_ALL=POSIX |
||||
export SOURCES=/sources |
||||
export SLFSB=/sources/lfs_build |
||||
EOF |
||||
|
||||
# shellcheck source=/dev/null |
||||
source "${HOME}"/.bashrc |
||||
|
||||
describe() |
||||
{ |
||||
case $1 in |
||||
w3m) |
||||
echo "w3m is a text browser" |
||||
;; |
||||
*) |
||||
echo "Unknown package" |
||||
exit 1 |
||||
;; |
||||
esac |
||||
|
||||
} |
||||
|
||||
check_installed() |
||||
{ |
||||
chapter=$1 |
||||
package=$2 |
||||
|
||||
check() |
||||
{ |
||||
proof=$1 |
||||
echo "$ find /usr -name ${proof} (${package})" |
||||
if [ ! -e "${proof}" ] |
||||
then |
||||
echo "FAILED: ${proof} not found" |
||||
describe "${package}" |
||||
exit 1 |
||||
fi |
||||
} |
||||
|
||||
case ${package} in |
||||
w3m) |
||||
check /usr/bin/w3m |
||||
;; |
||||
*) |
||||
echo "Unkwnown package : ${package}" |
||||
exit 1 |
||||
;; |
||||
esac |
||||
} |
||||
|
||||
check_sources() |
||||
{ |
||||
echo "call check_sources" |
||||
while IFS= read -r line |
||||
do |
||||
echo "Line: $line" |
||||
local packagefilename=${line##*/} |
||||
echo "${packagefilename}" |
||||
[ -d "${BLFS_PACKAGE_DIR}" ] && mkdir -v "${BLFS_PACKAGE_DIR}" |
||||
pushd "${BLFS_PACKAGE_DIR}" |
||||
md5sum --check "${SCRIPT_DIR}/md5sums" |
||||
ret=$? |
||||
popd |
||||
return ${ret} |
||||
done < "${SCRIPT_DIR}/wget-list-systemd.txt" |
||||
} |
||||
|
||||
check_download() |
||||
{ |
||||
echo "call check_download" |
||||
wget --input-file=wget-list-systemd.txt --continue --directory-prefix="${BLFS_PACKAGE_DIR}" |
||||
ret=$? |
||||
return ${ret} |
||||
} |
||||
|
||||
check_errors() |
||||
{ |
||||
echo "call check_errors $1" |
||||
if [[ $# -ne 1 ]] |
||||
then |
||||
echo "bad argument in function call" |
||||
return 1 |
||||
fi |
||||
logfile=$1 |
||||
if grep "Permission denied" "${logfile}" |
||||
then |
||||
echo "Rights error" |
||||
exit 1 |
||||
fi |
||||
# if grep "configure: error" "${logfile}" |
||||
# then |
||||
# echo "Configure Error" |
||||
# cat "${buildpath}"/config.log |
||||
# exit 1 |
||||
# fi |
||||
if grep "^make: .* Error .*$" "${logfile}" |
||||
then |
||||
echo "Make Error" |
||||
exit 1 |
||||
fi |
||||
} |
||||
|
||||
copy_sources() |
||||
{ |
||||
echo "call copy_sources" |
||||
echo cp --verbose "${BLFS_PACKAGE_DIR}"/* /sources/ |
||||
if cp --verbose "${BLFS_PACKAGE_DIR}"/* /sources/ |
||||
then |
||||
return 0 |
||||
else |
||||
return 1 |
||||
fi |
||||
} |
||||
|
||||
copy_scripts() |
||||
{ |
||||
echo "call copy_scripts" |
||||
echo cp --verbose "${SCRIPT_DIR}"/build/* /sources/ |
||||
if cp --verbose "${SCRIPT_DIR}"/build/* /sources/ |
||||
then |
||||
return 0 |
||||
else |
||||
return 1 |
||||
fi |
||||
} |
||||
|
||||
main() { |
||||
|
||||
cd "$SCRIPT_DIR" |
||||
|
||||
echo "1001000" > "${SLFSB}" |
||||
|
||||
echo "Chapter 1. Welcome to BLFS" |
||||
|
||||
### DOWNLOAD PACKAGES ### |
||||
echo "Getting the Source Packages" |
||||
if [[ $(cat "${SLFSB}") -lt 1001010 ]] |
||||
then |
||||
if ! check_sources |
||||
then |
||||
echo "Some package are missing" |
||||
if ! download |
||||
then |
||||
echo "Some package are unavailable" |
||||
echo "Try manually" |
||||
exit 1 |
||||
fi |
||||
else |
||||
echo "1001010" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
if [[ $(cat "${SLFSB}") -lt 1001020 ]] |
||||
then |
||||
if ! check_sources |
||||
then |
||||
echo "Some package are unavailable" |
||||
echo "Fix it manually" |
||||
exit 1 |
||||
else |
||||
echo "1001020" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
ask_for_exit 1001020 |
||||
|
||||
### COPY SOURCES ### |
||||
|
||||
echo "Copy sources" |
||||
if [[ $(cat "${SLFSB}") -lt 1001030 ]] |
||||
then |
||||
if ! copy_sources |
||||
then |
||||
echo "Copy packages to sources failed" |
||||
exit 1 |
||||
else |
||||
echo "1001030" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
ask_for_exit 1001030 |
||||
|
||||
echo "Copy scripts" |
||||
if [[ $(cat "${SLFSB}") -lt 1001040 ]] |
||||
then |
||||
if ! copy_scripts |
||||
then |
||||
echo "Copy scripts to sources failed" |
||||
exit 1 |
||||
else |
||||
echo "1001040" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
######################################### |
||||
### Begin to follow steps on target ##### |
||||
######################################### |
||||
|
||||
ask_for_exit 1000040 |
||||
|
||||
echo "Chapter 2. Important Information" |
||||
echo "Install strip script" |
||||
if [[ $(cat "${SLFSB}") -lt 1002010 ]] |
||||
then |
||||
if ! sudo make install-strip-all |
||||
then |
||||
echo "Copy failed" |
||||
exit 1 |
||||
else |
||||
echo "1002010" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
ask_for_exit 1002010 |
||||
|
||||
echo "Install libtool cleaning script" |
||||
if [[ $(cat "${SLFSB}") -lt 1002020 ]] |
||||
then |
||||
if ! sudo make install-remove-libtool |
||||
then |
||||
echo "Copy failed" |
||||
exit 1 |
||||
else |
||||
echo "1002020" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
ask_for_exit 1002020 |
||||
echo "Chapter 3. After LFS Configuration Issues " |
||||
echo "The Bash Shell Startup Files" |
||||
if [[ $(cat "${SLFSB}") -lt 1003010 ]] |
||||
then |
||||
if ! sudo make install-profile |
||||
then |
||||
echo "Copy failed" |
||||
exit 1 |
||||
else |
||||
echo "1003010" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
ask_for_exit 1003060 |
||||
echo " The /etc/vimrc and ~/.vimrc Files " |
||||
if [[ $(cat "${SLFSB}") -lt 1003100 ]] |
||||
then |
||||
if ! sudo make install-profile |
||||
then |
||||
echo "Copy failed" |
||||
exit 1 |
||||
else |
||||
echo "1003100" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
ask_for_exit 1003100 |
||||
echo "Chapter 4. Security" |
||||
if [[ $(cat "${SLFSB}") -lt 1003030 ]] |
||||
then |
||||
if ! sudo make install-profile |
||||
then |
||||
echo "Copy failed" |
||||
exit 1 |
||||
else |
||||
echo "1003030" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
ask_for_exit 1003040 |
||||
echo "Chapter 3. After LFS Configuration Issues " |
||||
echo "The Bash Shell Startup Files" |
||||
if [[ $(cat "${SLFSB}") -lt 1003040 ]] |
||||
then |
||||
if ! sudo make install-profile |
||||
then |
||||
echo "Copy failed" |
||||
exit 1 |
||||
else |
||||
echo "1003020" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
ask_for_exit 1003010 |
||||
echo "Chapter 3. After LFS Configuration Issues " |
||||
echo "The Bash Shell Startup Files" |
||||
if [[ $(cat "${SLFSB}") -lt 1003020 ]] |
||||
then |
||||
if ! sudo make install-profile |
||||
then |
||||
echo "Copy failed" |
||||
exit 1 |
||||
else |
||||
echo "1003020" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
ask_for_exit 1003010 |
||||
echo "Chapter 3. After LFS Configuration Issues " |
||||
echo "The Bash Shell Startup Files" |
||||
if [[ $(cat "${SLFSB}") -lt 1003020 ]] |
||||
then |
||||
if ! sudo make install-profile |
||||
then |
||||
echo "Copy failed" |
||||
exit 1 |
||||
else |
||||
echo "1003020" > "${SLFSB}" |
||||
fi |
||||
fi |
||||
|
||||
} |
||||
|
||||
if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then |
||||
main "$@" |
||||
fi |
||||
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/bash |
||||
if [ $EUID -ne 0 ]; then |
||||
echo "Need to be root" |
||||
exit 1 |
||||
fi |
||||
last_fs_inode= |
||||
last_file= |
||||
{ find /usr/lib -type f -name '*.so*' ! -name '*dbg' |
||||
find /usr/lib -type f -name '*.a' |
||||
find /usr/{bin,sbin,libexec} -type f |
||||
} | xargs stat -c '%m %i %n' | sort | while read fs inode file; do |
||||
if ! readelf -h $file >/dev/null 2>&1; then continue; fi |
||||
if file $file | grep --quiet --invert-match 'not stripped'; then continue; fi |
||||
|
||||
if [ "$fs $inode" = "$last_fs_inode" ]; then |
||||
ln -f $last_file $file; |
||||
continue; |
||||
fi |
||||
cp --preserve $file ${file}.tmp |
||||
strip --strip-debug ${file}.tmp |
||||
mv ${file}.tmp $file |
||||
last_fs_inode="$fs $inode" |
||||
last_file=$file |
||||
done |
||||
@ -0,0 +1,56 @@
@@ -0,0 +1,56 @@
|
||||
#!/bin/bash |
||||
|
||||
# /usr/sbin/remove-la-files.sh |
||||
# Written for Beyond Linux From Scratch |
||||
# by Bruce Dubbs <bdubbs@linuxfromscratch.org> |
||||
|
||||
# Make sure we are running with root privs |
||||
if test "${EUID}" -ne 0; then |
||||
echo "Error: $(basename ${0}) must be run as the root user! Exiting..." |
||||
exit 1 |
||||
fi |
||||
|
||||
# Make sure PKG_CONFIG_PATH is set if discarded by sudo |
||||
source /etc/profile |
||||
|
||||
OLD_LA_DIR=/var/local/la-files |
||||
|
||||
mkdir -p $OLD_LA_DIR |
||||
|
||||
# Only search directories in /opt, but not symlinks to directories |
||||
OPTDIRS=$(find /opt -mindepth 1 -maxdepth 1 -type d) |
||||
|
||||
# Move any found .la files to a directory out of the way |
||||
find /usr/lib $OPTDIRS -name "*.la" ! -path "/usr/lib/ImageMagick*" \ |
||||
-exec mv -fv {} $OLD_LA_DIR \; |
||||
############### |
||||
|
||||
# Fix any .pc files that may have .la references |
||||
|
||||
STD_PC_PATH='/usr/lib/pkgconfig |
||||
/usr/share/pkgconfig |
||||
/usr/local/lib/pkgconfig |
||||
/usr/local/share/pkgconfig' |
||||
|
||||
# For each directory that can have .pc files |
||||
for d in $(echo $PKG_CONFIG_PATH | tr : ' ') $STD_PC_PATH; do |
||||
|
||||
# For each pc file |
||||
for pc in $d/*.pc ; do |
||||
if [ $pc == "$d/*.pc" ]; then continue; fi |
||||
|
||||
# Check each word in a line with a .la reference |
||||
for word in $(grep '\.la' $pc); do |
||||
if $(echo $word | grep -q '.la$' ); then |
||||
mkdir -p $d/la-backup |
||||
cp -fv $pc $d/la-backup |
||||
|
||||
basename=$(basename $word ) |
||||
libref=$(echo $basename|sed -e 's/^lib/-l/' -e 's/\.la$//') |
||||
|
||||
# Fix the .pc file |
||||
sed -i "s:$word:$libref:" $pc |
||||
fi |
||||
done |
||||
done |
||||
done |
||||
@ -0,0 +1,75 @@
@@ -0,0 +1,75 @@
|
||||
# Begin /etc/profile |
||||
# Written for Beyond Linux From Scratch |
||||
# by James Robertson <jameswrobertson@earthlink.net> |
||||
# modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg> |
||||
|
||||
# System wide environment variables and startup programs. |
||||
|
||||
# System wide aliases and functions should go in /etc/bashrc. Personal |
||||
# environment variables and startup programs should go into |
||||
# ~/.bash_profile. Personal aliases and functions should go into |
||||
# ~/.bashrc. |
||||
|
||||
# Functions to help us manage paths. Second argument is the name of the |
||||
# path variable to be modified (default: PATH) |
||||
pathremove () { |
||||
local IFS=':' |
||||
local NEWPATH |
||||
local DIR |
||||
local PATHVARIABLE=${2:-PATH} |
||||
for DIR in ${!PATHVARIABLE} ; do |
||||
if [ "$DIR" != "$1" ] ; then |
||||
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR |
||||
fi |
||||
done |
||||
export $PATHVARIABLE="$NEWPATH" |
||||
} |
||||
|
||||
pathprepend () { |
||||
pathremove $1 $2 |
||||
local PATHVARIABLE=${2:-PATH} |
||||
export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}" |
||||
} |
||||
|
||||
pathappend () { |
||||
pathremove $1 $2 |
||||
local PATHVARIABLE=${2:-PATH} |
||||
export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1" |
||||
} |
||||
|
||||
export -f pathremove pathprepend pathappend |
||||
|
||||
# Set the initial path |
||||
export PATH=/usr/bin |
||||
|
||||
# Attempt to provide backward compatibility with LFS earlier than 11 |
||||
if [ ! -L /bin ]; then |
||||
pathappend /bin |
||||
fi |
||||
|
||||
if [ $EUID -eq 0 ] ; then |
||||
pathappend /usr/sbin |
||||
if [ ! -L /sbin ]; then |
||||
pathappend /sbin |
||||
fi |
||||
unset HISTFILE |
||||
fi |
||||
|
||||
# Set up some environment variables. |
||||
export HISTSIZE=1000 |
||||
export HISTIGNORE="&:[bf]g:exit" |
||||
|
||||
# Set some defaults for graphical systems |
||||
export XDG_DATA_DIRS=${XDG_DATA_DIRS:-/usr/share} |
||||
export XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS:-/etc/xdg} |
||||
export XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/tmp/xdg-$USER} |
||||
|
||||
for script in /etc/profile.d/*.sh ; do |
||||
if [ -r $script ] ; then |
||||
. $script |
||||
fi |
||||
done |
||||
|
||||
unset script |
||||
|
||||
# End /etc/profile |
||||
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
if [ -d /usr/local/lib/pkgconfig ] ; then |
||||
pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH |
||||
fi |
||||
if [ -d /usr/local/bin ]; then |
||||
pathprepend /usr/local/bin |
||||
fi |
||||
if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then |
||||
pathprepend /usr/local/sbin |
||||
fi |
||||
|
||||
if [ -d /usr/local/share ]; then |
||||
pathprepend /usr/local/share XDG_DATA_DIRS |
||||
fi |
||||
|
||||
# Set some defaults before other applications add to these paths. |
||||
pathappend /usr/share/info INFOPATH |
||||
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
# Set up the INPUTRC environment variable. |
||||
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then |
||||
INPUTRC=/etc/inputrc |
||||
fi |
||||
export INPUTRC |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
# By default, the umask should be set. |
||||
if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then |
||||
umask 002 |
||||
else |
||||
umask 022 |
||||
fi |
||||
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
# Set up i18n variables |
||||
for i in $(locale); do |
||||
unset ${i%=*} |
||||
done |
||||
|
||||
if [[ "$TERM" = linux ]]; then |
||||
export LANG=C.UTF-8 |
||||
else |
||||
source /etc/locale.conf |
||||
|
||||
for i in $(locale); do |
||||
key=${i%=*} |
||||
if [[ -v $key ]]; then |
||||
export $key |
||||
fi |
||||
done |
||||
fi |
||||
@ -0,0 +1,48 @@
@@ -0,0 +1,48 @@
|
||||
# Begin /etc/bashrc |
||||
# Written for Beyond Linux From Scratch |
||||
# by James Robertson <jameswrobertson@earthlink.net> |
||||
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org> |
||||
|
||||
# System wide aliases and functions. |
||||
|
||||
# System wide environment variables and startup programs should go into |
||||
# /etc/profile. Personal environment variables and startup programs |
||||
# should go into ~/.bash_profile. Personal aliases and functions should |
||||
# go into ~/.bashrc |
||||
|
||||
# Provides colored /bin/ls and /bin/grep commands. |
||||
|
||||
if [ -f "/etc/dircolors" ] ; then |
||||
eval $(dircolors -b /etc/dircolors) |
||||
fi |
||||
|
||||
if [ -f "$HOME/.dircolors" ] ; then |
||||
eval $(dircolors -b $HOME/.dircolors) |
||||
fi |
||||
|
||||
alias ls='ls --color=auto' |
||||
alias grep='grep --color=auto' |
||||
|
||||
# Provides prompt for interactive shells, specifically shells started |
||||
# in the X environment. [Review the LFS archive thread titled |
||||
# PS1 Environment Variable for a great case study behind this script |
||||
# addendum.] |
||||
|
||||
NORMAL="\[\e[0m\]" |
||||
RED="\[\e[1;31m\]" |
||||
GREEN="\[\e[1;32m\]" |
||||
if [[ $EUID == 0 ]] ; then |
||||
PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL" |
||||
else |
||||
PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL" |
||||
fi |
||||
|
||||
unset RED GREEN NORMAL |
||||
|
||||
# GnuPG wants this or it'll fail with pinentry-curses under some |
||||
# circumstances (for example signing a Git commit) |
||||
# Note that tty -s will "succeed" in LFS chroot environment so we cannot |
||||
# use -s instead of redirecting to /dev/null. |
||||
$(tty &>/dev/null) && export GPG_TTY=$(tty) |
||||
|
||||
# End /etc/bashrc |
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
" Begin .vimrc |
||||
|
||||
set columns=80 |
||||
set wrapmargin=8 |
||||
set ruler |
||||
|
||||
" End .vimrc |
||||
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
install -v -g sys -m700 -d /var/lib/sshd |
||||
|
||||
groupadd -g 50 sshd |
||||
useradd -c 'sshd PrivSep' \ |
||||
-d /var/lib/sshd \ |
||||
-g sshd \ |
||||
-s /bin/false \ |
||||
-u 50 sshd |
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
./configure --prefix=/usr \ |
||||
--sysconfdir=/etc/ssh \ |
||||
--with-privsep-path=/var/lib/sshd \ |
||||
--with-default-path=/usr/bin \ |
||||
--with-superuser-path=/usr/sbin:/usr/bin \ |
||||
--with-pid-dir=/run && |
||||
make |
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
install -v -m755 contrib/ssh-copy-id /usr/bin |
||||
install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1 |
||||
install -v -m755 -d /usr/share/doc/openssh-10.2p1 |
||||
install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-10.2p1 |
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
./configure --prefix=/usr \ |
||||
--libexecdir=/usr/lib \ |
||||
--with-secure-path \ |
||||
--with-env-editor \ |
||||
--docdir=/usr/share/doc/sudo-1.9.17p2 \ |
||||
--with-passprompt="[sudo] password for %p: " && |
||||
make |
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
./configure --prefix=/usr \ |
||||
--libexecdir=/usr/lib \ |
||||
--with-secure-path \ |
||||
--with-env-editor \ |
||||
--docdir=/usr/share/doc/sudo-1.9.17p2 \ |
||||
--with-passprompt="[sudo] password for %p: " && |
||||
make |
||||
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
dc81be0bed3eaef5a6865784182a7487 build-1.4.0.tar.gz |
||||
5e36b19bcc9a817051a88c4167b51030 blfs-systemd-units-20251204.tar.xz |
||||
803a1720ec822a8660118a38ca51fc1b cmake-4.2.3.tar.gz |
||||
3394d444ca1905ea56c94b628b706a0b cpio-2.15.tar.bz2 |
||||
dae6088bf7af69d3b0a87c762de92248 curl-8.18.0.tar.xz |
||||
d0efec10b9f110a32e9b8f796e21782c dejavu-fonts-ttf-2.37.tar.bz2 |
||||
f68f95052c7297b98eccb7709d817f6a fontconfig-2.17.1.tar.xz |
||||
78c7d7450fb7d0999ccd029f84094340 freetype-2.14.1.tar.xz |
||||
3857733169a6443e48d20c75ee32f732 git-2.53.0.tar.xz |
||||
acf29c16cd20dc0cc8585215a3e63e5f icewm-4.0.0.tar.gz |
||||
8c66b4dabc52225562324be5a994accf imlib2-1.12.6.tar.xz |
||||
13651949a013bc47be0483d888e4f558 iwd-3.12.tar.xz |
||||
605237f35de238dfacc83bcae406d95d libaio-0.3.113.tar.gz |
||||
3cba344d6b351cf308114865afa0d91e libfontenc-1.1.9.tar.xz |
||||
c5cc0942ed39c49b8fcd47a427bd4305 libFS-1.0.10.tar.xz |
||||
d1ffde0a07709654b20bada3f9abdd16 libICE-1.1.2.tar.xz |
||||
57c7efbeceedefde006123a77a7bc825 libpciaccess-0.18.1.tar.xz |
||||
870a798ee9860b6e77896548428dba7b libpsl-0.21.5.tar.gz |
||||
3aeeea05091db1c69e6f768e0950a431 libSM-1.2.6.tar.xz |
||||
74f97df306b8d6149d3d9898a1d44c6e libtirpc-1.3.7.tar.bz2 |
||||
b617a053d2003cc81309f4e13d01379c libX11-1.8.13.tar.xz |
||||
4c9f81acf00b62e5de56a912691bd737 libXau-1.0.12.tar.xz |
||||
2a9793533224f92ddad256492265dd82 libXaw-1.0.16.tar.xz |
||||
96565523e9f9b701fcb35d31f1d4086e libxcb-1.17.0.tar.xz |
||||
132816d5efccb883bbc2bf45eb905770 libXcomposite-0.4.7.tar.xz |
||||
5ce55e952ec2d84d9817169d5fdb7865 libXcursor-1.2.3.tar.xz |
||||
72bb73f2a07f81784ad69a39d7df1da2 libXdamage-1.1.7.tar.xz |
||||
ea8149187a26e9df6dbd94a60b3d8da0 libXext-1.3.7.tar.xz |
||||
baa39ada682dd524491a165bb0dfc708 libXfixes-6.0.2.tar.xz |
||||
66e03e3405d923dfaf319d6f2b47e3da libXfont2-2.0.7.tar.xz |
||||
d378be0fcbd1f689f9a132e0d642bc4b libXft-2.3.9.tar.xz |
||||
95a960c1692a83cc551979f7ffe28cf4 libXi-1.8.2.tar.xz |
||||
5f3f5754a40730d1518233a60ba5c48e libXinerama-1.1.6.tar.xz |
||||
fa0faa5b6a8e726186c535d73712ccea libxkbfile-1.2.0.tar.xz |
||||
1ef8065f0284e76c2238770365012ab2 libXmu-1.3.1.tar.xz |
||||
d22b838e42ac0229ddf5a3afaf23910c libXpm-3.5.18.tar.xz |
||||
53b72ce969745f8d3e41175d6549ce0b libXpresent-1.0.2.tar.xz |
||||
b550dfa388292a821aecdd52acecc94c libXrandr-1.5.5.tar.xz |
||||
4c54dce455d96e3bdee90823b0869f89 libXrender-0.9.12.tar.xz |
||||
5014282a08b54ec0edfa73c5cf9ae2c1 libXres-1.2.3.tar.xz |
||||
ec09c90a1cfd2c0630321d366a5e7203 libXScrnSaver-1.2.5.tar.xz |
||||
9805be7e18f858bed9938542ed2905dc libxshmfence-1.3.3.tar.xz |
||||
9acd189c68750b5028cf120e53c68009 libXt-1.3.1.tar.xz |
||||
b62dc44d8e63a67bb10230d54c44dcb7 libXtst-1.2.5.tar.xz |
||||
8a26503185afcb1bbd2c65e43f775a67 libXv-1.0.13.tar.xz |
||||
de4227c5722a8f5ca5748f3ef524aeee libXvMC-1.0.15.tar.xz |
||||
543164f1239fbe92cc0a9128d8da88e9 libXxf86dga-1.1.7.tar.xz |
||||
bea9e3707fae6c3275769e771006fa0f libXxf86vm-1.1.7.tar.xz |
||||
dc56041551980c74dd354cd7c2882539 links-2.30.tar.bz2 |
||||
00f5844ae3520b5699c249dd424500c2 lsof-4.99.5.tar.gz |
||||
d03e636d2f919bb21e77aec16a53247d luit-20250912.tgz |
||||
a661c55b5a1fcaa068b9e4a561c35f36 LVM2.2.03.38.tgz |
||||
3ce01505e82626ca4d7291d7e649c4c9 lynx2.9.2.tar.bz2 |
||||
4d6b817ed0739141656e06a74bac5e57 nmap-7.98.tar.bz2 |
||||
801b5ad6da38e0045de20dd5dd2f6a80 openssh-10.2p1.tar.gz |
||||
93d2d8f22baebc5eb65b85da05a79e4e parted-3.6.tar.xz |
||||
ed3dd1b984339e83e35f676d7169c192 pyproject_hooks-1.2.0.tar.gz |
||||
fb5e5dfc9353225c2d6929777344b1a6 screen-5.0.1.tar.gz |
||||
dcbf46f739ae06b076e1a11cbb271a10 sudo-1.9.17p2.tar.gz |
||||
5f683a1966834b0a6ae07b3680bcb863 util-macros-1.20.2.tar.xz |
||||
f49abd197b60d71dc6b95a00ea584b65 w3m-v0.5.6.tar.gz |
||||
c415553d2ee1a8cea43c3234a079b53f xcb-proto-1.17.0.tar.xz |
||||
e7430a710261c9129b1280f26cb159a5 xinit-1.4.4.tar.xz |
||||
15534fa6fb13a6a70afe7561c1424f3c xorgproto-2025.1.tar.xz |
||||
587fc7e8c30e2665e6dec8f685279ac2 xterm-407.tgz |
||||
6ad67d4858814ac24e618b8072900664 xtrans-1.6.0.tar.xz |
||||
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
https://files.pythonhosted.org/packages/source/b/build/build-1.4.0.tar.gz |
||||
https://www.linuxfromscratch.org/blfs/downloads/13.0-systemd/blfs-systemd-units-20251204.tar.xz |
||||
https://cmake.org/files/v4.2/cmake-4.2.3.tar.gz |
||||
https://ftpmirror.gnu.org/cpio/cpio-2.15.tar.bz2 |
||||
https://curl.se/download/curl-8.18.0.tar.xz |
||||
https://www.kernel.org/pub/software/scm/git/git-2.53.0.tar.xz |
||||
https://github.com/ice-wm/icewm/archive/4.0.0/icewm-4.0.0.tar.gz |
||||
https://downloads.sourceforge.net/enlightenment/imlib2-1.12.6.tar.xz |
||||
https://kernel.org/pub/linux/network/wireless/iwd-3.12.tar.xz |
||||
https://sourceware.org/ftp/lvm2/LVM2.2.03.38.tgz |
||||
https://pagure.io/libaio/archive/libaio-0.3.113/libaio-0.3.113.tar.gz |
||||
https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.gz |
||||
https://downloads.sourceforge.net/libtirpc/libtirpc-1.3.7.tar.bz2 |
||||
http://links.twibright.com/download/links-2.30.tar.bz2 |
||||
https://github.com/lsof-org/lsof/releases/download/4.99.5/lsof-4.99.5.tar.gz |
||||
https://invisible-mirror.net/archives/lynx/tarballs/lynx2.9.2.tar.bz2 |
||||
https://nmap.org/dist/nmap-7.98.tar.bz2 |
||||
https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.2p1.tar.gz |
||||
https://ftpmirror.gnu.org/parted/parted-3.6.tar.xz |
||||
https://files.pythonhosted.org/packages/source/p/pyproject-hooks/pyproject_hooks-1.2.0.tar.gz |
||||
https://ftpmirror.gnu.org/screen/screen-5.0.1.tar.gz |
||||
https://www.sudo.ws/dist/sudo-1.9.17p2.tar.gz |
||||
https://www.x.org/pub/individual/lib/xtrans-1.6.0.tar.xz |
||||
https://www.x.org/pub/individual/lib/libX11-1.8.13.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXext-1.3.7.tar.xz |
||||
https://www.x.org/pub/individual/lib/libFS-1.0.10.tar.xz |
||||
https://www.x.org/pub/individual/lib/libICE-1.1.2.tar.xz |
||||
https://www.x.org/pub/individual/lib/libSM-1.2.6.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXScrnSaver-1.2.5.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXt-1.3.1.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXmu-1.3.1.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXpm-3.5.18.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXaw-1.0.16.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXfixes-6.0.2.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXcomposite-0.4.7.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXrender-0.9.12.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXcursor-1.2.3.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXdamage-1.1.7.tar.xz |
||||
https://www.x.org/pub/individual/lib/libfontenc-1.1.9.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXfont2-2.0.7.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXft-2.3.9.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXi-1.8.2.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXinerama-1.1.6.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXrandr-1.5.5.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXres-1.2.3.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXtst-1.2.5.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXv-1.0.13.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXvMC-1.0.15.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXxf86dga-1.1.7.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXxf86vm-1.1.7.tar.xz |
||||
https://www.x.org/pub/individual/lib/libpciaccess-0.18.1.tar.xz |
||||
https://www.x.org/pub/individual/lib/libxkbfile-1.2.0.tar.xz |
||||
https://www.x.org/pub/individual/lib/libxshmfence-1.3.3.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXpresent-1.0.2.tar.xz |
||||
https://gitlab.freedesktop.org/api/v4/projects/890/packages/generic/fontconfig/2.17.1/fontconfig-2.17.1.tar.xz |
||||
https://downloads.sourceforge.net/freetype/freetype-2.14.1.tar.xz |
||||
https://xorg.freedesktop.org/archive/individual/lib/libxcb-1.17.0.tar.xz |
||||
https://www.x.org/pub/individual/lib/libXau-1.0.12.tar.xz |
||||
https://xorg.freedesktop.org/archive/individual/proto/xorgproto-2025.1.tar.xz |
||||
https://www.x.org/pub/individual/util/util-macros-1.20.2.tar.xz |
||||
https://xorg.freedesktop.org/archive/individual/proto/xcb-proto-1.17.0.tar.xz |
||||
https://git.sr.ht/~rkta/w3m/archive/v0.5.6.tar.gz |
||||
https://www.x.org/pub/individual/app/xinit-1.4.4.tar.xz |
||||
https://invisible-mirror.net/archives/luit/luit-20250912.tgz |
||||
https://invisible-mirror.net/archives/xterm/xterm-407.tgz |
||||
https://sourceforge.net/projects/dejavu/files/dejavu/2.37/dejavu-fonts-ttf-2.37.tar.bz2 |
||||
Loading…
Reference in new issue