mirror of
https://github.com/RasppleII/a2cloud.git
synced 2024-12-02 05:49:29 +00:00
c8a3a4ada5
Another temporary script. This performs the tasks from ivan.sh related to installCommTools. It differs from that block (which has not yet been formally replaced) primarily by having a rewritten and hopefully more logical installation for oysttyer. Oysttyer probably should be broken into its own script—all of these things should be really—but this one in particular because it's so involved even compared to other installations because we have stuff we need to clean up first.
247 lines
7.4 KiB
Bash
Executable File
247 lines
7.4 KiB
Bash
Executable File
#! /bin/bash
|
|
# vim: set tabstop=4 shiftwidth=4 noexpandtab filetype=sh:
|
|
|
|
# install_comm_tools - temporary script for comm tools from ivan.sh
|
|
#
|
|
# To the extent possible under law, T. Joseph Carter and Ivan Drucker have
|
|
# waived all copyright and related or neighboring rights to the a2cloud
|
|
# scripts themselves. Software used or installed by these scripts is subject
|
|
# to other licenses. This work is published from the United States.
|
|
|
|
a2cBinaryURL="http://blocksfree.com/downloads"
|
|
|
|
# Find the path of our source directory
|
|
a2cSource="$( dirname "${BASH_SOURCE[0]}" )/.."
|
|
pushd $a2cSource >/dev/null
|
|
a2cSource="$PWD"
|
|
popd >/dev/null
|
|
if [[ ! -f "$a2cSource/.a2cloud_source" ]]; then
|
|
printf "\na2cloud: cannot find a2cloud source directory in $a2cSource.\n\n"
|
|
exit 1
|
|
fi
|
|
|
|
# Make sure ras2_{os,arch} get set
|
|
. "$a2cSource/scripts/system_ident"
|
|
|
|
install_curl() {
|
|
if ! hash curl 2> /dev/null; then
|
|
### CommTools: Install curl
|
|
echo "A2CLOUD: Installing curl..."
|
|
sudo apt-get -y install curl
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "A2CLOUD: curl is already installed."
|
|
fi
|
|
}
|
|
|
|
install_lrzsz() {
|
|
if ! hash sz 2> /dev/null; then
|
|
### CommTools: Install lrzsz
|
|
echo "A2CLOUD: Installing rzsz for X/Y/Zmodem transfers..."
|
|
sudo apt-get -y install lrzsz
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "A2CLOUD: rzsz is already installed."
|
|
fi
|
|
}
|
|
|
|
install_ftp() {
|
|
if ! hash ftp 2> /dev/null; then
|
|
### CommTools: Install ftp
|
|
echo "A2CLOUD: Installing ftp..."
|
|
sudo apt-get -y install ftp
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "A2CLOUD: ftp is already installed."
|
|
fi
|
|
}
|
|
|
|
install_cftp() {
|
|
if ! hash cftp 2> /dev/null; then
|
|
### CommTools: Install cftp
|
|
echo "A2CLOUD: Installing cftp..."
|
|
|
|
local cftpWork="$(mktemp -d /tmp/nulib.XXXXXXXXXXXX)"
|
|
pushd "$cftpWork" >/dev/null
|
|
|
|
if [[ $downloadBinaries ]]; then
|
|
wget -qO- "${a2cBinaryURL}/picopkg/cftp-${ras2_os}_${ras2_arch}.tgz" | sudo tar Pzx
|
|
fi
|
|
|
|
if ! hash cftp 2> /dev/null; then
|
|
sudo apt-get -y install build-essential
|
|
sudo apt-get -y install ncurses-dev
|
|
sudo apt-get -y clean
|
|
wget -q -O cftp-0.12.tar.gz http://nih.at/cftp/cftp-0.12.tar.gz
|
|
tar zxf cftp-0.12.tar.gz
|
|
cd cftp-0.12
|
|
./configure
|
|
make
|
|
sudo make install
|
|
fi
|
|
|
|
popd >/dev/null
|
|
rm -rf "$cftpWork"
|
|
else
|
|
echo "A2CLOUD: cftp is already installed."
|
|
fi
|
|
}
|
|
|
|
install_lynx() {
|
|
if ! hash lynx 2> /dev/null; then
|
|
### CommTools: Install lynx
|
|
echo "A2CLOUD: Installing lynx..."
|
|
sudo apt-get -y install lynx
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "A2CLOUD: lynx is already installed."
|
|
fi
|
|
}
|
|
|
|
install_links() {
|
|
if ! hash links 2> /dev/null; then
|
|
### CommTools: Install links
|
|
echo "A2CLOUD: Installing links..."
|
|
sudo apt-get -y --force-yes install links
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "A2CLOUD: links is already installed."
|
|
fi
|
|
}
|
|
|
|
install_a2news() {
|
|
### CommTools: Install tin + a2news script
|
|
sudo install -o root -g root -m 755 "$a2cSource/setup/a2news" /usr/local/bin/a2news
|
|
if ! hash tin 2> /dev/null; then
|
|
echo "A2CLOUD: Installing a2news/tin..."
|
|
sudo apt-get -y install tin
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "A2CLOUD: a2news/tin is already installed."
|
|
fi
|
|
|
|
# FIXME: Installing tin pulls in exim4, and it used to have an error at
|
|
# startup. We should check to see if it still does.
|
|
|
|
### CommTools: Configure exim4 to use ipv4 to kill console errors
|
|
# have exim4 use IPv4 only to prevent log errors (IPv6 is off by default in Raspbian)
|
|
if [[ $(grep ' ; ::1' /etc/exim4/update-exim4.conf.conf) ]]; then
|
|
echo "A2CLOUD: Setting exim4 to use only IPv4 to prevent startup error messages..."
|
|
sudo sed -i 's/ ; ::1//' /etc/exim4/update-exim4.conf.conf
|
|
sudo update-exim4.conf
|
|
sudo rm /var/log/exim4/mainlog /var/log/exim4/paniclog &> /dev/null
|
|
fi
|
|
|
|
# restore exim4 log directory if occupied by a file put there by earlier A2CLOUD versions
|
|
if [[ -f /var/log/exim4 ]]; then
|
|
echo "A2CLOUD: Restoring exim4 log directory..."
|
|
sudo rm /var/log/exim4
|
|
sudo mkdir /var/log/exim4
|
|
sudo chown Debian-exim:adm /var/log/exim4
|
|
sudo chmod 2750 /var/log/exim4
|
|
fi
|
|
}
|
|
|
|
install_a2chat() {
|
|
### CommTools: Install irssi + a2chat script
|
|
sudo install -o root -g root -m 755 "$a2cSource/setup/a2chat" /usr/local/bin/a2chat
|
|
if ! hash irssi 2> /dev/null; then
|
|
echo "A2CLOUD: Installing a2chat/irssi..."
|
|
sudo apt-get -y install irssi
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "A2CLOUD: a2chat/irssi is already installed."
|
|
fi
|
|
}
|
|
|
|
install_telnet() {
|
|
### CommTools: Install telnet
|
|
if ! hash telnet 2> /dev/null; then
|
|
echo "A2CLOUD: Installing telnet..."
|
|
sudo apt-get -y install telnet
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "A2CLOUD: telnet is already installed."
|
|
fi
|
|
}
|
|
|
|
install_oysttyer() {
|
|
### CommTools: Install Oysttyer (formerly TTYtter)
|
|
|
|
# Do we need to check for the readline module here as well?
|
|
local perlVersion=$(perl -e 'print $^V' | cut -c 2-)
|
|
|
|
# Remove old ttytter
|
|
# Previous versions of a2cloud symlinked ttytter to oysttyer. I don't think
|
|
# we want to do that, because Debian won't in buster when we start using
|
|
# their oysttyer package.
|
|
if [[ -f /usr/local/bin/ttytter || -f /usr/local/share/perl/${perlVersion}/Term/ReadLine/TTYtter.pm ]]; then
|
|
echo "a2cloud: Removing ttytter in favor of oysttyer..."
|
|
sudo rm -f /usr/local/bin/ttytter
|
|
fi
|
|
|
|
# Remove locally installed Term::ReadKey (libterm-readline-gnu-perl
|
|
if [[ -f /usr/local/man/man3/Term::ReadKey.3pm ]]; then
|
|
echo "a2cloud: Removing locally installed Term::ReadKey"
|
|
rm -f /usr/local/man/man3/Term::ReadKey.3pm
|
|
|
|
# Oh yeah, this could've wound up lots of places…
|
|
for ver in 5.14.2 5.20.2 $perlVersion; do
|
|
for perlDir in perl arm-linux-gnueabihf/perl i686-linux-gnu/perl x86_64-linux-gnu/perl; do
|
|
if [[ -f /usr/local/lib/$perlDir/$ver/Term/ReadKey.pm ]]; then
|
|
rm -f /usr/local/lib/$perlDir/$ver/Term/ReadKey.pm
|
|
rm -f /usr/local/lib/$perlDir/$ver/perllocal.pod
|
|
rm -f /usr/local/lib/$perlDir/$ver/auto/Term/ReadKey/autosplit.ix
|
|
rm -f /usr/local/lib/$perlDir/$ver/auto/Term/ReadKey/ReadKey.so
|
|
rm -f /usr/local/lib/$perlDir/$ver/auto/Term/ReadKey/.packlist
|
|
fi
|
|
done
|
|
done
|
|
fi
|
|
|
|
# Now install the Debian's package
|
|
echo "a2cloud: Installing Debian's Term::ReadKey (libterm-readline-gnu-perl)"
|
|
apt-get -y install libterm-readline-gnu-perl
|
|
apt-get -y clean
|
|
|
|
local oysttyerWork="$(mktemp -d /tmp/nulib.XXXXXXXXXXXX)"
|
|
pushd "$oysttyerWork" >/dev/null
|
|
|
|
# Install old TTYtter readline module (still used by oysttyer)
|
|
if [[ ! -f "/usr/local/share/perl/$perlVersion/Term/ReadLine/TTYtter.pm" ]]; then
|
|
echo "a2cloud: Installing Term::ReadLine::TTYtter for oysttyer"
|
|
|
|
# We don't need to make anything for this, just copy the files
|
|
wget -O Term-ReadLine-TTYtter-1.4.tar.gz http://search.cpan.org/CPAN/authors/id/C/CK/CKAISER/Term-ReadLine-TTYtter-1.4.tar.gz
|
|
tar zxf Term-ReadLine-TTYtter-1.4.tar.gz
|
|
cd Term-ReadLine-TTYtter-1.4
|
|
sudo install -m 755 -o root -g root -d /usr/local/share/perl/$perlVersion/Term/ReadLine
|
|
sudo install -m 644 -o root -g root ReadLine/readline_ttytter.pm ReadLine/TTYtter.pm /usr/local/share/perl/$perlVersion/Term/ReadLine
|
|
cd ..
|
|
fi
|
|
|
|
# Actually install oysttyer now, if needed
|
|
if ! hash oysttyer 2>/dev/null; then
|
|
echo "a2cloud: Installing oysttyer..."
|
|
wget -qO- https://github.com/oysttyer/oysttyer/archive/2.7.2.tar.gz | sudo tar -zxP --transform 's|oysttyer-2.7.2/oysttyer.pl|/usr/local/bin/oysttyer|' oysttyer-2.7.2/oysttyer.pl
|
|
fi
|
|
|
|
popd >/dev/null
|
|
rm -rf "$oysttyerWork"
|
|
}
|
|
|
|
downloadBinaries=1
|
|
if [[ $1 == -c ]]; then
|
|
downloadBinaries=1
|
|
fi
|
|
install_curl
|
|
install_lrzsz
|
|
install_ftp
|
|
install_cftp
|
|
install_lynx
|
|
install_links
|
|
install_a2news
|
|
install_a2chat
|
|
install_telnet
|
|
install_oysttyer
|