您可以使用脚本非常轻松地禁用/启用 ppa。将脚本另存为toggle_ppa.sh
并放入/usr/local/bin
#!/bin/bash
#
# toggle_ppa.sh
#
# DESCRIPTION: Detects if a PPA is active/inactive and deactivates/activates it
# on user confirmation.
SOURCEDIRECTORY=/etc/apt/sources.list.d
PPA="$1"
if [ -z "$PPA" ]
then
echo "Error: Please provide a PPA name to toggle between activation/deactivation"
echo "The PPA name should be formatted as it appears on launchpad, e.g.:
"$0" ppa:webupd8team/y-ppa-manager"
exit 1
fi
## Root privileges
if [ "$(whoami)" != "root" ]; then
echo "Error: This script needs root privileges. Restarting..."
sudo "$0" "$1"
exit
fi
### MAIN
SOURCELIST_NOPFX="${PPA#*:}" #remove 'ppa:' prefix
SOURCELIST="${SOURCELIST_NOPFX////-}"-$(lsb_release -cs) #replace all slashes with dashes, include release
SOURCEFILE="$SOURCEDIRECTORY"/"$SOURCELIST".list #compose sources list path
if [ -e "$SOURCEFILE" ]
then
echo "Processing $SOURCEFILE..."
SOURCE_COMMENTED=$(grep "^\#deb\ " "$SOURCEFILE") #check if sources line is commented
if [ -z "$SOURCE_COMMENTED" ]
then
echo "$PPA is active. Going to deactivate. Proceed? [ y/n ]"
read ANSWER
if [ $ANSWER == "y" ]
then
sed -i "s/^deb\-src/\#deb\-src/" $SOURCEFILE
sed -i "s/^deb\ http/\#deb\ http/" $SOURCEFILE
echo "Updating package index files..."
sudo apt-get update
echo "Done."
else
echo "Aborted."
exit 0
fi
else
echo "$PPA is inactive. Going to activate. Proceed? [ y/n ]"
read ANSWER
if [ $ANSWER == "y" ]
then
sed -i "s/^\#deb\-src/deb\-src/" $SOURCEFILE
sed -i "s/^\#deb\ http/deb\ http/" $SOURCEFILE
echo "Updating package index files..."
sudo apt-get update
echo "Done."
else
echo "Aborted."
exit 0
fi
fi
else
echo "Error: Source file at $SOURCEFILE for $PPA does not exist. Please check PPA name."
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
用法
sudo toggle_ppa.sh <full-ppa-name>
Run Code Online (Sandbox Code Playgroud)
例子
sudo toggle_ppa.sh ppa:webupd8team/java
Run Code Online (Sandbox Code Playgroud)
怎么运行的
当使用软件中心 (GUI) 停用任何 ppa 存储库时,它实际上会#
在. 通常大多数文件包含两行以和开头的行,少数文件只有一行。上面的脚本使用. 首先,它检查 ppa (用户输入)是否存在。然后放置或移除.list
/etc/apt/sources.list.d/
.list
deb http
deb-src
sed
.list
#
然后相应地在行前面
该代码以非常交互式的方式运行。当有人以 ppa 名称作为参数运行此命令时,它将显示 PPA 的当前状态以及代码在成功执行后将执行的操作。然后它会请求用户的许可。仅当用户输入'y'
确认代码时,才会更改 PPA 的状态并激活/停用它。如果用户输入“'n'
否”,它将立即中止。
注意我在这个回答中提出了这个代码。谷氨酸盐对改进代码有很大帮助。
归档时间: |
|
查看次数: |
478 次 |
最近记录: |