Created
March 25, 2016 20:07
-
-
Save anaisbetts/dd17235f393c56d40b12 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# Copyright (c) 2009 The Chromium Authors. All rights reserved. | |
# Use of this source code is governed by a BSD-style license that can be | |
# found in the LICENSE file. | |
# | |
# This script is part of the slack package, modified from the google-chrome package. | |
# | |
# It creates the repository configuration file for package updates, since | |
# we cannot do this during the google-chrome installation since the repository | |
# is locked. | |
# | |
# This functionality can be controlled by creating the $DEFAULTS_FILE and | |
# setting "repo_add_once" to "true" or "false" as desired. An empty | |
# $DEFAULTS_FILE is the same as setting the value to "false". | |
# System-wide package configuration. | |
DEFAULTS_FILE="/etc/default/slack" | |
# sources.list setting for slack updates. | |
REPOCONFIG="https://packagecloud.io/slacktechnologies/slack/fedora/21" | |
# Install the repository signing key (see also: | |
# https://www.google.com/linuxrepositories/) | |
install_rpm_key() { | |
# Check to see if key already exists. | |
rpm -q gpg-pubkey-d59097ab-52d46e88 > /dev/null 2>&1 | |
if [ "$?" -eq "0" ]; then | |
# Key already exists | |
return 0 | |
fi | |
# This is to work around a bug in RPM 4.7.0. (see http://crbug.com/22312) | |
rpm -q gpg-pubkey-d59097ab-52d46e88 > /dev/null 2>&1 | |
if [ "$?" -eq "0" ]; then | |
# Key already exists | |
return 0 | |
fi | |
# RPM on Mandriva 2009 is dumb and does not understand "rpm --import -" | |
TMPKEY=$(mktemp /tmp/slack.sig.XXXXXX) | |
if [ -n "$TMPKEY" ]; then | |
cat > "$TMPKEY" <<KEYDATA | |
-----BEGIN PGP PUBLIC KEY BLOCK----- | |
Version: GnuPG v1.4.11 (GNU/Linux) | |
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 | |
sA== | |
=H60S | |
-----END PGP PUBLIC KEY BLOCK----- | |
KEYDATA | |
rpm --import "$TMPKEY" | |
rc=$? | |
rm -f "$TMPKEY" | |
if [ "$rc" -eq "0" ]; then | |
return 0 | |
fi | |
fi | |
return 1 | |
} | |
# NB: The original key we used above is the public PackageCloud | |
# key which we are now moving away from and moving to a key that | |
# Slack uses solely for Slack packages. However, in order to not | |
# break updates for people, we need to ship an update where we | |
# include both keys. In a future update, we'll remove the | |
# PackageCloud key. | |
install_new_rpm_key() { | |
# Check to see if key already exists. | |
rpm -q gpg-pubkey-038651bd-56c6038f > /dev/null 2>&1 | |
if [ "$?" -eq "0" ]; then | |
# Key already exists | |
return 0 | |
fi | |
# This is to work around a bug in RPM 4.7.0. (see http://crbug.com/22312) | |
rpm -q gpg-pubkey-038651bd-56c6038f > /dev/null 2>&1 | |
if [ "$?" -eq "0" ]; then | |
# Key already exists | |
return 0 | |
fi | |
# RPM on Mandriva 2009 is dumb and does not understand "rpm --import -" | |
TMPKEY=$(mktemp /tmp/slack.sig.XXXXXX) | |
if [ -n "$TMPKEY" ]; then | |
cat > "$TMPKEY" <<KEYDATA | |
-----BEGIN PGP PUBLIC KEY BLOCK----- | |
Version: GnuPG v1.4.11 (GNU/Linux) | |
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 | |
lIs= | |
=ZPAR | |
-----END PGP PUBLIC KEY BLOCK----- | |
KEYDATA | |
rpm --import "$TMPKEY" | |
rc=$? | |
rm -f "$TMPKEY" | |
if [ "$rc" -eq "0" ]; then | |
return 0 | |
fi | |
fi | |
return 1 | |
} | |
determine_rpm_package_manager() { | |
local RELEASE | |
LSB_RELEASE="$(which lsb_release 2> /dev/null)" | |
if [ -x "$LSB_RELEASE" ]; then | |
RELEASE=$(lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-) | |
case $RELEASE in | |
"Fedora") | |
PACKAGEMANAGER=yum | |
;; | |
"Mageia"|"MandrivaLinux") | |
PACKAGEMANAGER=urpmi | |
;; | |
"SUSE LINUX") | |
PACKAGEMANAGER=yast | |
;; | |
esac | |
fi | |
if [ "$PACKAGEMANAGER" ]; then | |
return | |
fi | |
# Fallback methods that are probably unnecessary on modern systems. | |
if [ -f "/etc/lsb-release" ]; then | |
# file missing on Fedora, does not contain DISTRIB_ID on OpenSUSE. | |
eval $(sed -e '/DISTRIB_ID/!d' /etc/lsb-release) | |
case $DISTRIB_ID in | |
MandrivaLinux) | |
PACKAGEMANAGER=urpmi | |
;; | |
esac | |
fi | |
if [ "$PACKAGEMANAGER" ]; then | |
return | |
fi | |
if [ -f "/etc/fedora-release" ] || [ -f "/etc/redhat-release" ]; then | |
PACKAGEMANAGER=yum | |
elif [ -f "/etc/SuSE-release" ]; then | |
PACKAGEMANAGER=yast | |
elif [ -f "/etc/mandriva-release" ]; then | |
PACKAGEMANAGER=urpmi | |
fi | |
} | |
DEFAULT_ARCH="x86_64" | |
YUM_REPO_FILE="/etc/yum.repos.d/slack.repo" | |
ZYPPER_REPO_FILE="/etc/zypp/repos.d/slack.repo" | |
URPMI_REPO_FILE="/etc/urpmi/urpmi.cfg" | |
install_yum() { | |
install_rpm_key | |
install_new_rpm_key | |
if [ ! "$REPOCONFIG" ]; then | |
return 0 | |
fi | |
if [ -d "/etc/yum.repos.d" ]; then | |
cat > "$YUM_REPO_FILE" << REPOCONTENT | |
[slack] | |
name=slack | |
baseurl=$REPOCONFIG/$DEFAULT_ARCH | |
enabled=1 | |
gpgcheck=1 | |
gpgkey=https://packagecloud.io/gpg.key | |
sslverify=1 | |
sslcacert=/etc/pki/tls/certs/ca-bundle.crt | |
REPOCONTENT | |
fi | |
} | |
# This is called by the cron job, rather than in the RPM postinstall. | |
# We cannot do this during the install when urpmi is running due to | |
# database locking. We also need to enable the repository, and we can | |
# only do that while we are online. | |
# see: https://qa.mandriva.com/show_bug.cgi?id=31893 | |
configure_urpmi() { | |
if [ ! "$REPOCONFIG" ]; then | |
return 0 | |
fi | |
urpmq --list-media | grep -q -s "^slack$" | |
if [ "$?" -eq "0" ]; then | |
# Repository already configured | |
return 0 | |
fi | |
urpmi.addmedia --update \ | |
"slack" "$REPOCONFIG/$DEFAULT_ARCH" | |
} | |
install_urpmi() { | |
# urpmi not smart enough to pull media_info/pubkey from the repository? | |
install_rpm_key | |
install_new_rpm_key | |
# Defer urpmi.addmedia to configure_urpmi() in the cron job. | |
# See comment there. | |
# | |
# urpmi.addmedia --update \ | |
# "slack" "$REPOCONFIG/$DEFAULT_ARCH" | |
} | |
install_yast() { | |
if [ ! "$REPOCONFIG" ]; then | |
return 0 | |
fi | |
# We defer adding the key to later. See comment in the cron job. | |
# Ideally, we would run: zypper addrepo -t YUM -f \ | |
# "$REPOCONFIG/$DEFAULT_ARCH" "slack" | |
# but that does not work when zypper is running. | |
if [ -d "/etc/zypp/repos.d" ]; then | |
cat > "$ZYPPER_REPO_FILE" << REPOCONTENT | |
[slack] | |
name=slack | |
enabled=1 | |
autorefresh=1 | |
baseurl=$REPOCONFIG/$DEFAULT_ARCH | |
type=rpm-md | |
keeppackages=0 | |
REPOCONTENT | |
fi | |
} | |
# Check if the automatic repository configuration is done, so we know when to | |
# stop trying. | |
verify_install() { | |
# It's probably enough to see that the repo configs have been created. If they | |
# aren't configured properly, update_bad_repo should catch that when it's run. | |
case $1 in | |
"yum") | |
[ -f "$YUM_REPO_FILE" ] | |
;; | |
"yast") | |
[ -f "$ZYPPER_REPO_FILE" ] | |
;; | |
"urpmi") | |
urpmq --list-url | grep -q -s "\bslack\b" | |
;; | |
esac | |
} | |
# Update the Google repository if it's not set correctly. | |
update_bad_repo() { | |
if [ ! "$REPOCONFIG" ]; then | |
return 0 | |
fi | |
determine_rpm_package_manager | |
case $PACKAGEMANAGER in | |
"yum") | |
update_repo_file "$YUM_REPO_FILE" | |
;; | |
"yast") | |
update_repo_file "$ZYPPER_REPO_FILE" | |
;; | |
"urpmi") | |
update_urpmi_cfg | |
;; | |
esac | |
} | |
update_repo_file() { | |
REPO_FILE="$1" | |
# Don't do anything if the file isn't there, since that probably means the | |
# user disabled it. | |
if [ ! -r "$REPO_FILE" ]; then | |
return 0 | |
fi | |
# Check if the correct repository configuration is in there. | |
REPOMATCH=$(grep "^baseurl=$REPOCONFIG/$DEFAULT_ARCH" "$REPO_FILE" \ | |
2>/dev/null) | |
# If it's there, nothing to do | |
if [ "$REPOMATCH" ]; then | |
return 0 | |
fi | |
# Check if it's there but disabled by commenting out (as opposed to using the | |
# 'enabled' setting). | |
MATCH_DISABLED=$(grep "^[[:space:]]*#.*baseurl=$REPOCONFIG/$DEFAULT_ARCH" \ | |
"$REPO_FILE" 2>/dev/null) | |
if [ "$MATCH_DISABLED" ]; then | |
# It's OK for it to be disabled, as long as nothing bogus is enabled in its | |
# place. | |
ACTIVECONFIGS=$(grep "^baseurl=.*" "$REPO_FILE" 2>/dev/null) | |
if [ ! "$ACTIVECONFIGS" ]; then | |
return 0 | |
fi | |
fi | |
# If we get here, the correct repository wasn't found, or something else is | |
# active, so fix it. This assumes there is a 'baseurl' setting, but if not, | |
# then that's just another way of disabling, so we won't try to add it. | |
sed -i -e "s,^baseurl=.*,baseurl=$REPOCONFIG/$DEFAULT_ARCH," "$REPO_FILE" | |
} | |
update_urpmi_cfg() { | |
REPOCFG=$(urpmq --list-url | grep "\bslack\b") | |
if [ ! "$REPOCFG" ]; then | |
# Don't do anything if the repo isn't there, since that probably means the | |
# user deleted it. | |
return 0 | |
fi | |
# See if it's the right repo URL | |
REPOMATCH=$(echo "$REPOCFG" | grep "\b$REPOCONFIG/$DEFAULT_ARCH\b") | |
# If so, nothing to do | |
if [ "$REPOMATCH" ]; then | |
return 0 | |
fi | |
# Looks like it's the wrong URL, so recreate it. | |
urpmi.removemedia "slack" && \ | |
urpmi.addmedia --update "slack" "$REPOCONFIG/$DEFAULT_ARCH" | |
} | |
# We only remove the repository configuration during a purge. Since RPM has | |
# no equivalent to dpkg --purge, the code below is actually never used. We | |
# keep it only for reference purposes, should we ever need it. | |
# | |
#remove_yum() { | |
# rm -f "$YUM_REPO_FILE" | |
#} | |
# | |
#remove_urpmi() { | |
# # Ideally, we would run: urpmi.removemedia "slack" | |
# # but that does not work when urpmi is running. | |
# # Sentinel comment text does not work either because urpmi.update removes | |
# # all comments. So we just delete the entry that matches what we originally | |
# # inserted. If such an entry was added manually, that's tough luck. | |
# if [ -f "$URPMI_REPO_FILE" ]; then | |
# sed -i '\_^slack $REPOCONFIG/$DEFAULT_ARCH {$_,/^}$/d' "$URPMI_REPO_FILE" | |
# fi | |
#} | |
# | |
#remove_yast() { | |
# # Ideally, we would run: zypper removerepo "slack" | |
# # but that does not work when zypper is running. | |
# rm -f /etc/zypp/repos.d/slack.repo | |
#} | |
DEFAULT_ARCH="x86_64" | |
get_lib_dir() { | |
if [ "$DEFAULT_ARCH" = "i386" ]; then | |
LIBDIR=lib | |
elif [ "$DEFAULT_ARCH" = "x86_64" ]; then | |
LIBDIR=lib64 | |
else | |
echo Unknown CPU Architecture: "$DEFAULT_ARCH" | |
exit 1 | |
fi | |
} | |
## MAIN ## | |
DEFAULTS_FILE="/etc/default/slack" | |
if [ -r "$DEFAULTS_FILE" ]; then | |
. "$DEFAULTS_FILE" | |
else | |
echo "repo_add_once=\"true\"" > /etc/default/slack | |
repo_add_once="true" | |
fi | |
if [ "$repo_add_once" = "true" ]; then | |
determine_rpm_package_manager | |
# The initial install happens in the post-install scripts, but there have been | |
# reports of configuration problems, so just verify that everything looks | |
# good, and if not, try to install again. | |
verify_install $PACKAGEMANAGER | |
if [ $? -ne 0 ]; then | |
install_${PACKAGEMANAGER} | |
fi | |
# Now do any extra configuration that couldn't be done by post-install. | |
case $PACKAGEMANAGER in | |
"urpmi") | |
# We need to configure urpmi after the install has finished. | |
# See configure_urpmi() for details. | |
configure_urpmi | |
;; | |
"yast") | |
# It looks as though yast/zypper has a lock on the RPM DB during | |
# postinstall, so we cannot add the signing key with install_rpm_key(). | |
# Instead, we attempt to do this here. If the user attempt to update before | |
# the cron job imports the key, Yast will grab the key from our server and | |
# prompt the user to accept the key. | |
install_rpm_key | |
install_new_rpm_key | |
;; | |
esac | |
if [ $? -eq 0 ]; then | |
# Before we quit auto-configuration, check that everything looks sane, since | |
# part of this happened during package install and we don't have the return | |
# value of that process. | |
verify_install $PACKAGEMANAGER | |
if [ $? -eq 0 ]; then | |
sed -i -e 's/[[:space:]]*repo_add_once=.*/repo_add_once="false"/' \ | |
"$DEFAULTS_FILE" | |
fi | |
fi | |
else | |
update_bad_repo | |
install_new_rpm_key | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment