-
Notifications
You must be signed in to change notification settings - Fork 0
/
add-apt-repository
92 lines (80 loc) · 3.25 KB
/
add-apt-repository
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash
function func_help () {
echo "使用法: add-apt-repository [options] repository"
echo
echo "Options:"
echo " -h, --help このヘルプを表示して終了します。"
echo " -y, --yes 全ての確認を同意したものとみなしてそのまま続行する。"
echo " -r, --remove 指定されたリポジトリを消去する。"
echo " -e, --exc-src ppaリポジトリでソースコードを登録しない。"
echo " -v, --ppaver=ARCH ppaリポジトリでバージョンを個別に指定する。" ##あとで
echo " -u, --update リポジトリを追加/削除したあとにパッケージリストの更新を行う。"
exit 0
}
function func_ppa () {
identifier=`echo ${repo} | cut -c 5-`
identifier_formatted=${identifier/\//\-}
identifier_dist=`echo ${identifier} | awk -F "/" '{ print $NR}'`
identifier_arc=`echo ${identifier} | awk -F "/" '{ print $NF}'`
arch=`cat /etc/os-release | grep UBUNTU_CODENAME | cut -c 17-`
[[ ${flag_remove} = 1 ]] && func_remove_ppa || func_add_ppa
[[ ${flag_update} = 1 ]] && apt update || :
}
function func_add_ppa () {
if [[ ${yes} != 1 ]]; then
echo ${repo} :このリポジトリを追加しますか?続行するにはEnter、中止するにはCtrl+Cを押してください
read -p ""
fi
echo deb http://ppa.launchpad.net/${identifier}/ubuntu $arch main >/etc/apt/sources.list.d/${identifier_formatted}-${arch}.list
[[ ${flag_excsrc} != 1 ]] && \
echo deb-src http://ppa.launchpad.net/${identifier}/ubuntu $arch main >>/etc/apt/sources.list.d/${identifier_formatted}-${arch}.list
:;
key=`wget -q -O - https://api.launchpad.net/1.0/~${identifier_dist}/+archive/${identifier_arc} | jq -r '.signing_key_fingerprint'`
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ${key}
}
function func_remove_ppa () {
if [[ ${yes} != 1 ]]; then
echo $repo :このリポジトリを削除しますか?続行するにはEnter、中止するにはCtrl+Cを押してください
read -p ""
fi
rm /etc/apt/sources.list.d/${identifier_formatted}-${arch}.list
key=`wget -q -O - https://api.launchpad.net/1.0/~${identifier_dist}/+archive/${identifier_arc} | jq -r '.signing_key_fingerprint'`
apt-key del ${key}
}
function func_adtrepo () {
[[ ${flag_remove} = 1 ]] && func_remove_adtrepo || func_add_adtrepo
[[ ${flag_update} = 1 ]] && apt update || :
}
function func_add_adtrepo () {
if [[ ${yes} != 1 ]]; then
echo ${repo} :このリポジトリを追加しますか?続行するにはEnter、中止するにはCtrl+Cを押してください
read -p ""
fi
echo ${repo} >>/etc/apt/sources.list.d/additional-repositories.list
}
function func_remove_adtrepo () {
if [[ ${yes} != 1 ]]; then
echo ${repo} :このリポジトリを削除しますか?続行するにはEnter、中止するにはCtrl+Cを押してください
read -p ""
fi
echo あとでやる
}
arg=("$@")
for i in `seq 0 $#`
do
if [[ ${arg[$i]} == "-"* ]]; then
case ${arg[$i]} in
"-h" | "--help" ) func_help ;;
"-y" | "--yes" ) eval yes=1 ;;
"-e" | "--exc-src" ) eval flag_excsrc=1 ;;
"-r" | "--remove" ) eval flag_remove=1 ;;
"-u" | "--update" ) eval flag_update=1 ;;
esac
elif [[ ${arg[$i]} == "ppa:"* ]]; then
flag_ppa=1
[ $repo ] || eval repo=${arg[$i]}
else
[ $repo ] || eval repo=${arg[$i]}
fi
done
[[ ${flag_ppa} = 1 ]] && func_ppa || func_adtrepo