这个众所周知:
pkg install <软件包名称>
可以精简成:
pkg i <软件包名称>
pkg remove <软件包名称>
精简:
pkg rem <软件包名称>
- 这里的精简命令可能不全,请实时关注源代码的更新。
看看pkg的源代码就知道了:
case "$TERMUX_APP_PACKAGE_MANAGER" in
apt)
case "$CMD" in
f*) dpkg -L "$@";;
sh*|inf*) apt show "$@";;
add|i*) select_mirror; update_apt_cache; apt install "$@";;
autoc*) apt autoclean;;
cl*) apt clean;;
list-a*) apt list "$@";;
list-i*) apt list --installed "$@";;
rei*) apt install --reinstall "$@";;
se*) select_mirror; update_apt_cache; apt search "$@";;
un*|rem*|rm|del*) apt remove "$@";;
upd*) select_mirror; apt update;;
upg*) select_mirror; apt update; apt full-upgrade "$@";;
*) ERROR=true;;
esac;;
pacman)
case "$CMD" in
f*) pacman -Ql "$@";;
sh*|inf*) pacman -Qi "$@";;
add|i*) pacman -Sy --needed "$@";;
autoc*) pacman -Sc;;
cl*) pacman -Scc;;
list-a*) pacman -Sl "$@";;
list-i*) pacman -Q "$@";;
rei*) pacman -S "$@";;
se*) pacman -Sys "$@";;
un*|rem*|rm|del*) pacman -Rcns "$@";;
upd*) pacman -Sy "$@";;
upg*) pacman -Syu "$@";;
*) ERROR=true;;
esac;;
esac
官方也想偷懒
这个众所周知:
pkg update -y
精简:
pkg upd -y
pkg upgrade -y
精简:
pkg upg -y
pkg search <软件包名称>
精简:
pkg se <软件包名称>
pkg list-all
精简:
pkg list-a
pkg list-installed
精简:
pkg list-i
pkg reinstall <软件包名称> -y
精简:
pkg rei <软件包名称> -y
pkg info
跟pkg show
效果一样
pkg show <软件包名称>
精简:
pkg sh <软件包名称>
或者:
pkg inf <软件包名称>
pkg files <软件包名称>
精简:
pkg f <软件包名称>
pkg clean
精简:
pkg cl
pkg autoclean
精简:
pkg autoc
apt autoremove -y
pkg执行时间比较长,因为它会检测你的地区来选择合适的源:
select_mirror() {
local default_repo="${MIRROR_BASE_DIR}/default"
if [ -d "@TERMUX_PREFIX@/etc/termux/chosen_mirrors" ]; then
# Mirror group selected
mirrors=($(find @TERMUX_PREFIX@/etc/termux/chosen_mirrors/ -type f ! -name "*\.dpkg-old" ! -name "*\.dpkg-new" ! -name "*~"))
elif [ -f "@TERMUX_PREFIX@/etc/termux/chosen_mirrors" ]; then
# Single mirror selected
mirrors=("$(realpath @TERMUX_PREFIX@/etc/termux/chosen_mirrors)")
elif [ -L "@TERMUX_PREFIX@/etc/termux/chosen_mirrors" ]; then
# Broken symlink, use all mirrors
mirrors=("${MIRROR_BASE_DIR}/default")
mirrors+=($(find ${MIRROR_BASE_DIR}/{asia,china,europe,north_america,russia}/ -type f ! -name "*\.dpkg-old" ! -name "*\.dpkg-new" ! -name "*~"))
else
echo "No mirror or mirror group selected. You might want to select one by running 'termux-change-repo'"
mirrors=("${MIRROR_BASE_DIR}/default")
mirrors+=($(find ${MIRROR_BASE_DIR}/{asia,china,europe,north_america,russia}/ -type f ! -name "*\.dpkg-old" ! -name "*\.dpkg-new" ! -name "*~"))
fi
local current_mirror
current_mirror=$(grep -m 1 -P "^\s*deb\s+" @TERMUX_PREFIX@/etc/apt/sources.list | grep -oP 'https?://[^\s]+')
# Do not update mirror if $TERMUX_PKG_NO_MIRROR_SELECT was set.
if [ -n "${TERMUX_PKG_NO_MIRROR_SELECT-}" ] && [ -n "$current_mirror" ]; then
return
fi
# Mirrors are rotated if 6 hours timeout has been passed or mirror is no longer accessible.
local pkgcache="@TERMUX_CACHE_DIR@/apt/pkgcache.bin"
if [ -e "$pkgcache" ] && (( $(last_modified "$pkgcache") <= 6 * 3600 )) && [ "$force_check_mirror" = "false" ]; then
if [ -n "$current_mirror" ]; then
echo "Checking availability of current mirror:"
echo -n "[*] $current_mirror: "
if check_mirror "$current_mirror"; then
echo "ok"
return
else
echo "bad"
fi
fi
fi
# Test mirror availability, remove unaccessible mirrors from list.
echo "Testing the available mirrors:"
local parallel_jobs_max_count=10
if [[ ! "$parallel_jobs_max_count" =~ ^[0-9]+$ ]] || \
[[ "$parallel_jobs_max_count" -lt 1 ]] || \
[[ "$parallel_jobs_max_count" -gt 1000 ]]; then
parallel_jobs_max_count=1
fi
declare -a parallel_jobs_mirrors=()
declare -a parallel_jobs_weights=()
declare -a parallel_jobs_urls=()
declare -a parallel_jobs_numbers=()
declare -a parallel_jobs_pids=()
declare -a parallel_jobs_return_values=()
local i j mirror url job_number job_pid return_value
local total_mirrors=${#mirrors[@]}
local parallel_jobs_current_count=1
set +e
i=0
for mirror in "${!mirrors[@]}"; do
url="$(get_mirror_url ${mirrors[$mirror]})"
job_number=$parallel_jobs_current_count
parallel_jobs_current_count=$((parallel_jobs_current_count + 1))
# Start mirror check in background
check_mirror "$url" &
job_pid=$!
parallel_jobs_mirrors=("${parallel_jobs_mirrors[@]}" "$mirror")
parallel_jobs_weights=("${parallel_jobs_weights[@]}" "$(get_mirror_weight ${mirrors[$mirror]})")
parallel_jobs_urls=("${parallel_jobs_urls[@]}" "$url")
parallel_jobs_numbers=("${parallel_jobs_numbers[@]}" "$job_number")
parallel_jobs_pids=("${parallel_jobs_pids[@]}" "$job_pid")
# If current job count has reached max value or is the last mirror, wait for already started jobs to finish
if [ "$job_number" -ge $parallel_jobs_max_count ] || \
[ "$i" -ge $((total_mirrors - 1)) ]; then
j=0
# For pids of all jobs
for job_pid in "${parallel_jobs_pids[@]}"; do
# Wait for job with matching pid to return
# echo "waiting for check_mirror job ${parallel_jobs_numbers[j]} for mirror \"${parallel_jobs_urls[j]}\" with pid ${parallel_jobs_pids[j]}"
wait "$job_pid"
return_value=$?
parallel_jobs_return_values=("${parallel_jobs_return_values[@]}" "$return_value")
j=$((j + 1))
done
j=0
# For return_values of all jobs
for return_value in "${parallel_jobs_return_values[@]}"; do
echo -n "[*] (${parallel_jobs_weights[j]}) ${parallel_jobs_urls[j]}: "
if [ "$return_value" -eq 0 ]; then
echo "ok"
else
echo "bad"
# echo "check_mirror job ${parallel_jobs_numbers[j]} for mirror \"${parallel_jobs_urls[j]}\" with pid ${parallel_jobs_pids[j]} failed with exit code $return_value"
unset "mirrors[${parallel_jobs_mirrors[j]}]"
fi
j=$((j + 1))
done
# Reset job related variables
parallel_jobs_current_count=1
parallel_jobs_mirrors=()
parallel_jobs_weights=()
parallel_jobs_urls=()
parallel_jobs_numbers=()
parallel_jobs_pids=()
parallel_jobs_return_values=()
fi
i=$((i + 1))
done
set -e
# Build weighted array of valid mirrors
declare -a weighted_mirrors
local total_mirror_weight=0
local weight
for mirror in "${!mirrors[@]}"; do
# Check if mirror was unset in parallel check
if [ -z "${mirrors[$mirror]-}" ]; then
continue
fi
weight="$(get_mirror_weight ${mirrors[$mirror]})"
total_mirror_weight=$((total_mirror_weight + weight))
j=0
while [ "$j" -lt "$weight" ]; do
weighted_mirrors+=(${mirrors[$mirror]})
j=$((j + 1))
done
done
# Select random mirror
local selected_mirror=""
if ((total_mirror_weight > 0)); then
local random_weight
random_weight=$(( (RANDOM % total_mirror_weight + 1) - 1 ))
echo "Picking mirror: (${random_weight}) ${weighted_mirrors[${random_weight}]}"
selected_mirror="${weighted_mirrors[${random_weight}]}"
fi
if [ -n "$selected_mirror" ]; then
(
source "$selected_mirror"
echo "deb $MAIN stable main" > @TERMUX_PREFIX@/etc/apt/sources.list
if [ "$(has_repo x11)" == "true" ]; then
echo "deb $X11 x11 main" > @TERMUX_PREFIX@/etc/apt/sources.list.d/x11.list
fi
if [ "$(has_repo root)" == "true" ]; then
echo "deb $ROOT root stable" > @TERMUX_PREFIX@/etc/apt/sources.list.d/root.list
fi
)
else
# Should not happen unless there is some issue with
# the script, or the mirror files
echo "Error: None of the mirrors are accessible"
exit 1
fi
}