我正在尝试安装git。我运行以下命令:
sudo apt-get install git-core git-gui git-doc
但是收到以下错误:
sudo: apt-get: command not found
我该怎么办?
2.6.9-023stab048.6-enterprise #1 SMP
CentOS release 5.2 (Final)
yum
如果我没有记错的话,CentOS会使用。
我正在尝试安装git。我运行以下命令:
sudo apt-get install git-core git-gui git-doc
但是收到以下错误:
sudo: apt-get: command not found
我该怎么办?
2.6.9-023stab048.6-enterprise #1 SMP
CentOS release 5.2 (Final)
yum
如果我没有记错的话,CentOS会使用。
Answers:
由于您使用的是CentOS 5,因此默认的软件包管理器为yum
,而不是apt-get
。要使用该程序安装程序,通常需要使用以下命令:
$ sudo yum install <packagename>
但是,当尝试以这种方式安装git时,您将在CentOS 5上遇到以下错误:
$ sudo yum install git
Setting up Install Process
Parsing package install arguments
No package git available.
Nothing to do
这表明您知道的软件包存储库yum
不包含要安装的必需rpm(RPM软件包管理器文件)git
。据推测,这是因为CentOS 5基于RHEL 5,该版本于2007年发布,之前git
被认为是成熟的版本控制系统。要解决此问题,我们需要向yum
使用的列表中添加其他存储库(按照这些说明,我们将添加RPMforge存储库)。
假设您要使用i386软件包。通过运行进行测试uname -i
。如果要使用x86_64软件包,请在以下命令中将所有出现的i386替换为x86_64
首先,下载rpmforge-release
软件包:
$ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
接下来,验证并安装软件包:
$ sudo rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
$ rpm -K rpmforge-release-0.5.3-1.el5.rf.i386.rpm
$ sudo rpm -i rpmforge-release-0.5.3-1.el5.rf.i386.rpm
现在我们应该可以安装了git
:
$ sudo yum install git-gui
yum
将解决依赖关系,并在相关时间询问您是否要继续。按y是,n或return按否。
您正在使用与Debian相关的发行版吗?如果没有,您可能需要使用其他软件包管理器,例如YUM(当今的Red Hat,CentOS等),Portage,Entropy,RPM等。
使用与Debian相关的发行版时:
它给你什么?
$ command -V apt-get
apt-get is /usr/bin/apt-get
二进制文件真的在吗?
$ file /usr/bin/apt-get
/usr/bin/apt-get: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
-bash: command: apt-get: not found
第一个。第二个是apt-get: ERROR: cannot open
apt-get(没有这样的文件或目录)。那么,这是什么意思呢?那不在那里吗?有替代品吗?我应该以某种方式添加它吗?怎么样?还有其他安装git的方法吗?谢谢
lsb_release -a
查找所使用的发行版的详细信息,它会告诉您可用的软件包管理器,例如YUM和RPM。重新使用Red Hat或CentOS。
apt-get install <package_name>
成为yum install <package_name>
注意,不同发行版有不同的包名。
如果您愿意从源代码构建Git,那么以下内容可能会有所帮助。它们是Noloader Github的构建脚本。构建脚本。我将它们用于旧的OS,例如CentOS 5和MIPS ci20开发板。发行版不再维护存储库,因此这是更新软件的唯一可靠方法。该脚本对于Solaris等较新的操作系统也很有用,因为Oracle希望您购买服务合同以获取更新。
这是Git脚本。它在此处添加以确保答案具有实质性。但是您应该回到GitHub,因为我有时会对其进行修改以获取某些软件包的最新版本。
#!/usr/bin/env bash
# See fixup for INSTALL_LIBDIR below
INSTALL_PREFIX=/usr/local
INSTALL_LIBDIR="$INSTALL_PREFIX/lib64"
# OpenSSH can only use OpenSSL 1.0.2 at the moment
OPENSSL_TAR=openssl-1.0.2l.tar.gz
OPENSSL_DIR=openssl-1.0.2l
#OPENSSL_TAR=openssl-1.1.0e.tar.gz
#OPENSSL_DIR=openssl-1.1.0e
ZLIB_TAR=zlib-1.2.11.tar.gz
ZLIB_DIR=zlib-1.2.11
BZ2_TAR=bzip2-1.0.6.tar.gz
BZ2_DIR=bzip2-1.0.6
READLN_TAR=readline-7.0.tar.gz
READLN_DIR=readline-7.0
UNISTR_TAR=libunistring-0.9.7.tar.gz
UNISTR_DIR=libunistring-0.9.7
ICONV_TAR=libiconv-1.15.tar.gz
ICONV_DIR=libiconv-1.15
IDN2_TAR=libidn2-0.16.tar.gz
IDN2_DIR=libidn2-0.16
PCRE_TAR=pcre-8.40.tar.gz
PCRE_DIR=pcre-8.40
PCRE2_TAR=pcre2-10.23.tar.gz
PCRE2_DIR=pcre2-10.23
CURL_TAR=curl-7.54.0.tar.gz
CURL_DIR=curl-7.54.0
GIT_TAR=v2.13.0.tar.gz
GIT_DIR=git-2.13.0
# Unset to avoid using an existing trust store when configuring cURL.
# No trust store will be supplied for some OSes, like Solaris.
# Also see '/usr/bin/curl-config --ca' and '/usr/bin/curl-config --configure'
USE_TRUST_STORE=1
###############################################################################
# Autotools on Solaris has an implied requirement for GNU gear. Things fall apart without it.
# Also see https://blogs.oracle.com/partnertech/entry/preparing_for_the_upcoming_removal.
if [[ -d "/usr/gnu/bin" ]]; then
if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then
echo
echo "Adding /usr/gnu/bin to PATH for Solaris"
PATH="/usr/gnu/bin:$PATH"
fi
elif [[ -d "/usr/swf/bin" ]]; then
if [[ ! ("$PATH" == *"/usr/sfw/bin"*) ]]; then
echo
echo "Adding /usr/sfw/bin to PATH for Solaris"
PATH="/usr/sfw/bin:$PATH"
fi
elif [[ -d "/usr/ucb/bin" ]]; then
if [[ ! ("$PATH" == *"/usr/ucb/bin"*) ]]; then
echo
echo "Adding /usr/ucb/bin to PATH for Solaris"
PATH="/usr/ucb/bin:$PATH"
fi
fi
###############################################################################
if [[ -z `which autoreconf` ]]; then
echo "Some packages require autoreconf. Please install autoconf or automake."
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
if [[ -z `which msgfmt` ]]; then
echo "Git requires msgfmt. Please install gettext."
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
###############################################################################
echo
echo "If you enter a sudo password, then it will be used for installation."
echo "If you don't enter a password, then ensure INSTALL_PREFIX is writable."
echo "To avoid sudo and the password, just press ENTER and they won't be used."
read -s -p "Please enter password for sudo: " SUDO_PASSWWORD
echo
###############################################################################
THIS_SYSTEM=$(uname -s 2>&1)
IS_DARWIN=$(echo -n "$THIS_SYSTEM" | grep -i -c darwin)
IS_LINUX=$(echo -n "$THIS_SYSTEM" | grep -i -c linux)
IS_CYGWIN=$(echo -n "$THIS_SYSTEM" | grep -i -c cygwin)
IS_MINGW=$(echo -n "$THIS_SYSTEM" | grep -i -c mingw)
IS_OPENBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c openbsd)
IS_DRAGONFLY=$(echo -n "$THIS_SYSTEM" | grep -i -c dragonfly)
IS_FREEBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c freebsd)
IS_NETBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c netbsd)
IS_SOLARIS=$(echo -n "$THIS_SYSTEM" | grep -i -c sunos)
if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1" || "$IS_SOLARIS" -eq "1") ]]; then
if [[ !(-z `which gmake 2>/dev/null | grep -v 'no gmake'`) ]]; then
MAKE=gmake
else
MAKE=make
fi
else
MAKE=make
fi
# Try to determine 32 vs 64-bit, /usr/local/lib, /usr/local/lib32 and /usr/local/lib64
# The Autoconf programs misdetect Solaris as x86 even though its x64. OpenBSD has
# getconf, but it does not have LONG_BIT.
IS_64BIT=$(getconf LONG_BIT 2>&1 | grep -i -c 64)
if [[ "$IS_64BIT" -eq "0" ]]; then
IS_64BIT=$(file /bin/ls 2>&1 | grep -i -c '64-bit')
fi
if [[ "$IS_SOLARIS" -eq "1" ]]; then
SH_KBITS=64
SH_MARCH=-m64
INSTALL_LIBDIR="$INSTALL_PREFIX/lib64"
INSTALL_LIBDIR_DIR="lib64"
elif [[ "$IS_64BIT" -eq "1" ]]; then
if [[ (-d /usr/lib) && (-d /usr/lib32) ]]; then
SH_KBITS=64
SH_MARCH=-m64
INSTALL_LIBDIR="$INSTALL_PREFIX/lib"
INSTALL_LIBDIR_DIR="lib"
elif [[ (-d /usr/lib) && (-d /usr/lib64) ]]; then
SH_KBITS=64
SH_MARCH=-m64
INSTALL_LIBDIR="$INSTALL_PREFIX/lib64"
INSTALL_LIBDIR_DIR="lib64"
else
SH_KBITS=64
SH_MARCH=-m64
INSTALL_LIBDIR="$INSTALL_PREFIX/lib"
INSTALL_LIBDIR_DIR="lib"
fi
else
SH_KBITS=32
SH_MARCH=-m32
INSTALL_LIBDIR="$INSTALL_PREFIX/lib"
INSTALL_LIBDIR_DIR="lib"
fi
if [[ -z "$CC" ]]; then CC=`which cc`; fi
MARCH_ERROR=`$CC $SH_MARCH -x c -c -o /dev/null - </dev/null 2>&1 | grep -i -c error`
if [[ "$MARCH_ERROR" -ne "0" ]]; then
SH_MARCH=
fi
echo
echo "********** libdir **********"
echo
echo "Using libdir $INSTALL_LIBDIR"
###############################################################################
echo
echo "********** zLib **********"
echo
wget "http://www.zlib.net/$ZLIB_TAR" -O "$ZLIB_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download zLib"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$ZLIB_DIR" &>/dev/null
tar -xzf "$ZLIB_TAR"
cd "$ZLIB_DIR"
SH_LDLIBS=("-ldl -lpthread")
SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR")
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure zLib"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(-j 4)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build zLib"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install)
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** Bzip **********"
echo
wget "http://www.bzip.org/1.0.6/$BZ2_TAR" -O "$BZ2_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download Bzip"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$BZ2_DIR" &>/dev/null
tar -xzf "$BZ2_TAR"
cd "$BZ2_DIR"
# Fix Bzip install paths
cp Makefile Makefile.orig
sed 's|$(PREFIX)/lib|$(LIBDIR)|g' Makefile.orig > Makefile
rm Makefile.orig
cp Makefile-libbz2_so Makefile-libbz2_so.orig
sed 's|$(PREFIX)/lib|$(LIBDIR)|g' Makefile-libbz2_so.orig > Makefile-libbz2_so
rm Makefile-libbz2_so.orig
# Fix Bzip cpu architecture
cp Makefile Makefile.orig
sed "s|CFLAGS=|CFLAGS=$SH_MARCH |g" Makefile.orig > Makefile
cp Makefile Makefile.orig
sed "s|CXXFLAGS=|CXXFLAGS=$SH_MARCH |g" Makefile.orig > Makefile
rm Makefile.orig
cp Makefile-libbz2_so Makefile-libbz2_so.orig
sed "s|CFLAGS=|CFLAGS=$SH_MARCH |g" Makefile-libbz2_so.orig > Makefile-libbz2_so
cp Makefile-libbz2_so Makefile-libbz2_so.orig
sed "s|CXXFLAGS=|CXXFLAGS=$SH_MARCH |g" Makefile-libbz2_so.orig > Makefile-libbz2_so
rm Makefile-libbz2_so.orig
# Add RPATH
cp Makefile Makefile.orig
sed "s|LDFLAGS=|LDFLAGS=$SH_MARCH -Wl,-rpath,$INSTALL_LIBDIR -L$INSTALL_LIBDIR|g" Makefile.orig > Makefile
rm Makefile.orig
cp Makefile-libbz2_so Makefile-libbz2_so.orig
sed "s|LDFLAGS=|LDFLAGS=$SH_MARCH -Wl,-rpath,$INSTALL_LIBDIR -L$INSTALL_LIBDIR|g" Makefile-libbz2_so.orig > Makefile-libbz2_so
rm Makefile-libbz2_so.orig
MAKE_FLAGS=(-j 4)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build Bzip"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install PREFIX="$INSTALL_PREFIX" LIBDIR="$INSTALL_LIBDIR")
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** Unistring **********"
echo
# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786
wget "https://ftp.gnu.org/gnu/libunistring/$UNISTR_TAR" --no-check-certificate -O "$UNISTR_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download IDN"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$UNISTR_DIR" &>/dev/null
tar -xzf "$UNISTR_TAR"
cd "$UNISTR_DIR"
SH_LDLIBS=("-ldl -lpthread")
SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR")
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure IDN"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(-j 4)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build IDN"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install)
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** Readline **********"
echo
# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786
wget "https://ftp.gnu.org/gnu/readline/$READLN_TAR" --no-check-certificate -O "$READLN_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download Readline"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$READLN_DIR" &>/dev/null
tar -xzf "$READLN_TAR"
cd "$READLN_DIR"
SH_LDLIBS=("-ldl" "-lpthread")
SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR")
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure Readline"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(-j 4)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build Readline"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install)
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** iConvert **********"
echo
# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786
wget "https://ftp.gnu.org/pub/gnu/libiconv/$ICONV_TAR" --no-check-certificate -O "$ICONV_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download iConvert"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$ICONV_DIR" &>/dev/null
tar -xzf "$ICONV_TAR"
cd "$ICONV_DIR"
SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR")
SH_LDLIBS=("-ldl" "-lpthread")
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure iConvert"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(-j 4)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build iConvert"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install)
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** IDN2 **********"
echo
# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786
wget "https://alpha.gnu.org/gnu/libidn/$IDN2_TAR" --no-check-certificate -O "$IDN2_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download IDN"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$IDN2_DIR" &>/dev/null
tar -xzf "$IDN2_TAR"
cd "$IDN2_DIR"
if [[ "$IS_SOLARIS" -eq "1" ]]; then
cp src/idn2.c src/idn2.c.orig
sed '/^#include "error.h"/d' src/idn2.c.orig > src/idn2.c
cp src/idn2.c src/idn2.c.orig
sed '43istatic void error (int status, int errnum, const char *format, ...);' src/idn2.c.orig > src/idn2.c
rm src/idn2.c.orig
echo "" >> src/idn2.c
echo "static void" >> src/idn2.c
echo "error (int status, int errnum, const char *format, ...)" >> src/idn2.c
echo "{" >> src/idn2.c
echo " va_list args;" >> src/idn2.c
echo " va_start(args, format);" >> src/idn2.c
echo " vfprintf(stderr, format, args);" >> src/idn2.c
echo " va_end(args);" >> src/idn2.c
echo " exit(status);" >> src/idn2.c
echo "}" >> src/idn2.c
echo "" >> src/idn2.c
fi
SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR")
SH_LDLIBS=("-ldl" "-lpthread")
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure IDN"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(-j 4)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build IDN"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install)
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** OpenSSL **********"
echo
# wget on Ubuntu 16 cannot validate against Let's Encrypt certificate
wget "https://www.openssl.org/source/$OPENSSL_TAR" --no-check-certificate -O "$OPENSSL_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download OpenSSL"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$OPENSSL_DIR" &>/dev/null
tar -xzf "$OPENSSL_TAR"
cd "$OPENSSL_DIR"
# OpenSSL and enable-ec_nistp_64_gcc_128 option
IS_X86_64=$(uname -m 2>&1 | egrep -i -c "(amd64|x86_64)")
if [[ "$SH_KBITS" -eq "32" ]]; then IS_X86_64=0; fi
CONFIG=./config
CONFIG_FLAGS=("no-ssl2" "no-ssl3" "no-comp" "shared" "-DNDEBUG" "-Wl,-rpath,$INSTALL_LIBDIR"
"--prefix=$INSTALL_PREFIX" "--openssldir=$INSTALL_PREFIX" "--libdir=$INSTALL_LIBDIR_DIR")
if [[ "$IS_X86_64" -eq "1" ]]; then
CONFIG_FLAGS+=("enable-ec_nistp_64_gcc_128")
fi
KERNEL_BITS="$SH_KBITS" "$CONFIG" "${CONFIG_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure OpenSSL"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(-j 4 depend)
"$MAKE" "${MAKE_FLAGS[@]}"
MAKE_FLAGS=(-j 4)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build OpenSSL"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install_sw)
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** PCRE **********"
echo
# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786
wget "https://ftp.pcre.org/pub/pcre/$PCRE_TAR" --no-check-certificate -O "$PCRE_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download PCRE"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$PCRE_DIR" &>/dev/null
tar -xzf "$PCRE_TAR"
cd "$PCRE_DIR"
SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR")
SH_LDLIBS=("-lz" "-ldl" "-lpthread")
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-shared --enable-pcregrep-libz --enable-pcregrep-libbz2 \
--prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure PCRE"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(-j 4 all)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build PCRE"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install)
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** PCRE2 **********"
echo
# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786
wget "https://ftp.pcre.org/pub/pcre/$PCRE2_TAR" --no-check-certificate -O "$PCRE2_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download PCRE2"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$PCRE2_DIR" &>/dev/null
tar -xzf "$PCRE2_TAR"
cd "$PCRE2_DIR"
SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR")
SH_LDLIBS=("-lz" "-ldl" "-lpthread")
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-shared --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 \
--prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure PCRE2"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(-j 4 all)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build PCRE2"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install)
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** cURL **********"
echo
# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786
wget "https://curl.haxx.se/download/$CURL_TAR" --no-check-certificate -O "$CURL_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download cURL"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$CURL_DIR" &>/dev/null
tar -xzf "$CURL_TAR"
cd "$CURL_DIR"
SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR")
SH_LDLIBS=("-lidn2" "-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread")
if [[ ("$IS_SOLARIS" -ne ")" && "$USE_TRUST_STORE" -ne "0") ]]; then
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-shared --without-ca-bundle --with-ca-path=/etc/openssl/certs --enable-ipv6 \
--with-nghttp2 --with-ssl="$INSTALL_PREFIX" \
--with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR"
else
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-shared --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \
--with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR"
fi
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure cURL"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(-j 4)
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -ne "0" ]]; then
echo "Failed to build cURL"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
MAKE_FLAGS=(install)
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** Git **********"
echo
# wget on Ubuntu 16 cannot validate against DigiCert certificate
wget "https://github.com/git/git/archive/$GIT_TAR" --no-check-certificate -O "$GIT_TAR"
if [[ "$?" -ne "0" ]]; then
echo "Failed to download Git"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
rm -rf "$GIT_DIR" &>/dev/null
tar -xzf "$GIT_TAR"
cd "$GIT_DIR"
"$MAKE" configure
if [[ "$?" -ne "0" ]]; then
echo "Failed to make configure Git"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
# "Instruct Git to use pthread library?", http://stackoverflow.com/q/43080417/
for file in $(find `pwd` -iname 'Makefile*')
do
cp "$file" "$file.orig"
sed 's|-lrt|-lrt -lpthread|g' "$file.orig" > "$file"
rm "$file.orig"
done
# Various Solaris 11 workarounds
if [[ "$IS_SOLARIS" -eq "1" ]]; then
for file in $(find `pwd` -iname 'Makefile*')
do
cp "$file" "$file.orig"
sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file"
cp "$file" "$file.orig"
sed 's|/usr/ucb/install|install|g' "$file.orig" > "$file"
rm "$file.orig"
done
for file in $(find `pwd` -iname 'config*')
do
cp "$file" "$file.orig"
sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file"
cp "$file" "$file.orig"
sed 's|/usr/ucb/install|install|g' "$file.orig" > "$file"
rm "$file.orig"
done
fi
if [[ -e /usr/local/bin/perl ]]; then
SH_PERL=/usr/local/bin/perl
elif [[ -e /usr/bin/perl ]]; then
SH_PERL=/usr/bin/perl
else
SH_PERL=perl
fi
SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR")
SH_LDLIBS=("-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread")
CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \
LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \
./configure --enable-pthreads --with-lib="$INSTALL_LIBDIR" --with-openssl="$INSTALL_PREFIX" \
--with-curl="$INSTALL_PREFIX" --with-libpcre="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" \
--with-iconv="$INSTALL_PREFIX" --with-perl="$SH_PERL" --prefix="$INSTALL_PREFIX"
if [[ "$?" -ne "0" ]]; then
echo "Failed to configure Git"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
# See INSTALL for the formats and the requirements
MAKE_FLAGS=(-j 4 all)
if [[ ! -z `which asciidoc 2>/dev/null | grep -v 'no asciidoc'` ]]; then
if [[ ! -z `which makeinfo 2>/dev/null | grep -v 'no makeinfo'` ]]; then
MAKE_FLAGS+=("man")
fi
if [[ ! -z `which xmlto 2>/dev/null | grep -v 'no xmlto'` ]]; then
MAKE_FLAGS+=("info" "html")
fi
fi
"$MAKE" "${MAKE_FLAGS[@]}"
if [[ "$?" -eq "1" ]]; then
echo "Failed to build Git"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
# See INSTALL for the formats and the requirements
MAKE_FLAGS=(install)
if [[ ! -z `which asciidoc 2>/dev/null | grep -v 'no asciidoc'` ]]; then
if [[ ! -z `which makeinfo 2>/dev/null | grep -v 'no makeinfo'` ]]; then
MAKE_FLAGS+=("install-man")
fi
if [[ ! -z `which xmlto 2>/dev/null | grep -v 'no xmlto'` ]]; then
MAKE_FLAGS+=("install-info" "install-html")
fi
fi
if [[ ! (-z "$SUDO_PASSWWORD") ]]; then
echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}"
else
"$MAKE" "${MAKE_FLAGS[@]}"
fi
cd ..
###############################################################################
echo
echo "********** Cleanup **********"
echo
# Set to false to retain artifacts
if true; then
ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$UNISTR_TAR" "$UNISTR_DIR" "$READLN_TAR" "$READLN_DIR"
"$PCRE_TAR" "$PCRE_DIR" "$PCRE2_TAR" "$PCRE2_DIR" "$ZLIB_TAR" "$ZLIB_DIR" "$BZ2_TAR" "$BZ2_DIR"
"$IDN2_TAR" "$IDN2_DIR" "$ICONV_TAR" "$ICONV_DIR" "$CURL_TAR" "$CURL_DIR" "$GIT_TAR" "$GIT_DIR")
for artifact in "${ARTIFACTS[@]}"; do
rm -rf "$artifact"
done
# ./build-git.sh 2>&1 | tee build-git.log
if [[ -e build-git.log ]]; then
rm build-git.log
fi
fi
[[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0
如果您决定使用sudo
密码,请考虑暂时禁用Bash历史记录,以便不记录密码。我禁用了历史记录,因此我不会意外记录敏感信息,因此这对我来说不是问题。