mirror of
https://github.com/RasppleII/a2cloud.git
synced 2025-01-04 18:30:59 +00:00
affeb535a0
We now install oysttyer 2.9.1 instead of old 2.7.2. While I was at it, I made the installation prefer the Debian package for oysttyer if you have it available (in buster and sid), while falling back on local installations if you don't. Changed how we remove local installations for Term::ReadKey. The way we do it now is less complete, but also less likely to break stuff that we didn't install maybe. It doesn't heart anything to leave it behind, but it requires a manual touch to clean it up. Finally fixed some missing sudos. Really the whole installation should be run with root privs if it's going to run with root privs, but I'm not ready to begin thinking about that since we don't necessarily know who the normal user is otherwise, and we still modify the normal user's account. (That should change, but we're not in a position to change it yet.)
276 lines
8.4 KiB
Bash
Executable File
276 lines
8.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.
|
|
|
|
# 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" -q
|
|
|
|
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_lftp() {
|
|
if ! hash lftp 2> /dev/null; then
|
|
echo "a2cloud: Installing lftp..."
|
|
sudo apt-get -y install lftp
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "a2cloud: lftp is already installed."
|
|
fi
|
|
}
|
|
|
|
install_mc() {
|
|
if ! hash mc 2> /dev/null; then
|
|
echo "a2cloud: Installing mc..."
|
|
sudo apt-get -y install mc
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "a2cloud: mc 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 tin..."
|
|
sudo apt-get -y install tin
|
|
sudo apt-get -y clean
|
|
else
|
|
echo "A2CLOUD: tin is already installed."
|
|
fi
|
|
|
|
# Leaving this here just in case, but it should not be necessary anymore.
|
|
|
|
# ### 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() {
|
|
rm_file() {
|
|
if [[ -f $1 ]]; then
|
|
echo "Removing $1"
|
|
sudo rm -f "$1"
|
|
fi
|
|
}
|
|
|
|
try_rmdir() {
|
|
if [[ -d $1 ]]; then
|
|
if sudo rmdir $1 &>/dev/null; then
|
|
echo "Removing directory $1"
|
|
else
|
|
echo "Cannot remove $1"
|
|
fi
|
|
fi
|
|
}
|
|
### 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-)
|
|
|
|
local oysttyerWork="$(mktemp -d /tmp/oysttyer.XXXXXXXXXXXX)"
|
|
pushd "$oysttyerWork" >/dev/null
|
|
|
|
# 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 "Removing ttytter in favor of oysttyer..."
|
|
sudo rm -f /usr/local/bin/ttytter
|
|
fi
|
|
|
|
# Now install the Debian's package
|
|
echo "Installing Debian's Term::ReadKey (libterm-readline-gnu-perl)..."
|
|
sudo apt-get -y install libterm-readline-gnu-perl
|
|
|
|
# Remove locally installed Term::ReadKey (libterm-readline-gnu-perl
|
|
if [[ -f /usr/local/man/man3/Term::ReadKey.3pm ]]; then
|
|
cat <<-EOF
|
|
You have a locally installed Term::ReadKey from an older version of a2cloud.
|
|
|
|
We will try to remove it, but locally installed perl modules are rather
|
|
difficult to completely remove. What we cannot remove will not interfere
|
|
with a running system, but if you like a tidy system, you'll need to clean
|
|
up a few perl files yourself.
|
|
|
|
EOF
|
|
rm_file "/usr/local/man/man3/Term::ReadKey.3pm"
|
|
|
|
# Deleting perl modules properly is hard, next to impossible, and this
|
|
# could be in man places. We'll do what we can.
|
|
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_file "/usr/local/lib/$perlDir/$ver/Term/ReadKey.pm"
|
|
try_rmdir "/usr/local/lib/$perlDir/$ver/Term"
|
|
rm_file "/usr/local/lib/$perlDir/$ver/auto/Term/ReadKey/autosplit.ix"
|
|
rm_file "/usr/local/lib/$perlDir/$ver/auto/Term/ReadKey/ReadKey.so"
|
|
try_rmdir "/usr/local/lib/$perlDir/$ver/auto/Term/ReadKey"
|
|
try_rmdir "/usr/local/lib/$perlDir/$ver/auto/Term"
|
|
echo "Additional cleaning may be needed under:"
|
|
echo " /usr/local/lib/$perlDir/$ver"
|
|
fi
|
|
done
|
|
done
|
|
fi
|
|
|
|
# Old TTYtter author still maintains the readline module for oysttyer
|
|
echo "Installing Term::ReadLine::TTYtter..."
|
|
if sudo apt-get -y install libterm-readline-ttytter-perl; then
|
|
# We have a package now, so remove any locally installed version
|
|
if [[ -f /usr/local/share/perl/$perlVersion/Term/ReadLine/TTYtter.pm ]]; then
|
|
echo "Removing local Term::ReadLine::TTYtter in favor of the package we installed."
|
|
sudo rm -f "/usr/local/share/perl/$perlVersion/Term/ReadLine/readline_ttytter.pm"
|
|
sudo rm -f "/usr/local/share/perl/$perlVersion/Term/ReadLine/TTYtter.pm"
|
|
fi
|
|
else
|
|
# We haven't got a package, install it locally
|
|
echo "No package. That's all right, we'll install it locally..."
|
|
|
|
# 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
|
|
echo "Installing oysttyer..."
|
|
if sudo apt-get -y install oysttyer; then
|
|
if [[ -f /usr/local/bin/oysttyer ]]; then
|
|
echo "Removing local oysttyer in favor of the package we installed."
|
|
sudo rm -f /usr/local/bin/oysttyer
|
|
fi
|
|
else
|
|
echo "No package. That's all right, we'll install it locally..."
|
|
wget -O oysttyer-2.9.1.tar.gz https://github.com/oysttyer/oysttyer/archive/2.9.1.tar.gz
|
|
tar -zxf oysttyer-2.9.1.tar.gz
|
|
sudo install -m 755 -o root -g root oysttyer-2.9.1/oysttyer.pl /usr/local/bin/oysttyer
|
|
fi
|
|
|
|
sudo apt-get clean
|
|
|
|
popd >/dev/null
|
|
rm -rf "$oysttyerWork"
|
|
}
|
|
|
|
install_curl
|
|
install_lrzsz
|
|
install_ftp
|
|
install_lftp
|
|
install_mc
|
|
install_lynx
|
|
install_links
|
|
install_a2news
|
|
install_a2chat
|
|
install_telnet
|
|
install_oysttyer
|