Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
tr:docs:guide-user:advanced:opkg_extras [2021/12/23 04:39] – created sorcuntr:docs:guide-user:advanced:opkg_extras [2023/08/18 07:09] – [Otomatik] use wget stokito
Line 1: Line 1:
 +FIXME **This page is not fully translated, yet. Please help completing the translation.**\\ //(remove this paragraph once the translation is finished)//
  
 +====== Opkg ekleri ======
 +{{section>tr:meta:infobox:howto_links#basic_skills&noheader&nofooter&noeditbutton}}
 +
 +===== Önsöz =====
 +  * Bu yönerge [[tr:docs:guide-user:additional-software:opkg|Opkg]]'nin işlevselliğini genişletir.
 +  * Hızlı kurulum için [[tr:docs:guide-user:advanced:opkg_extras#otomatik|otomatik]] kısmını takip et.
 +
 +===== Vasıflar =====
 +  * Opkg profilleri kaydetme, geri yükleme, ve geri alma
 +  * Otomatik ve özel prfil desteği.
 +  * RWM, overlay ve extroot paketleri desteği.
 +  * Kullanıcının kaldırdığı/yüklediği paketleri tanımlama.
 +  * Bellenim yükseltme sonrası otomatik yükleme.
 +  * Yükseltilebilir tüm paketleri yükseltme.
 +  * Yeni yapılandırmalar bulma.
 +
 +===== Uygulama =====
 +  * Opkg çağrılarını pürüzsüz çağrı yöntemi sağlamak üzere sarmalama.
 +  * Profilleri depolamak ve yönetmek için [[tr:docs:guide-user:base-system:uci|UCI]] ve [[https://github.com/openwrt/openwrt/blob/master/package/base-files/Makefile#L47|yedekleme varsayılanları]]na dayanır.
 +  * Paket tiplerini [[man>grep(1)|grep]] ve [[man>find(1)|find]], ve RWM'i [[man>mount(8)|mount]] ile tanımlar.
 +  * [[https://github.com/openwrt/openwrt/blob/master/package/base-files/files/sbin/sysupgrade#L245-L251|kullanıcı─yüklemesi]] paketleri [[tr:docs:techref:sysupgrade|Sysupgrade]]'den içe aktarmayı destekler.
 +  * WAN bağlanabilirliğinin tespiti ve profil geri-yüklemenin tetiklenmesi için Use [[tr:docs:guide-user:base-system:hotplug|Hotplug]] kullanır.
 +  * Döngülerden ve mücadele durumlarından sakınmak için [[https://github.com/openwrt/openwrt/blob/master/package/utils/busybox/patches/220-add_lock_util.patch|lock]] ile kilit-dosyalarından yararlanır.
 +  * Otomatik profil geri-yükleme sonrası değişiklikleri uygulamak için [[man>reboot(8)|yeniden başlat]] ortaya koyar.
 +  * Sorun-giderme için etkileşimsiz günlükleri [[tr:docs:guide-user:base-system:log.essentials|Syslog]] ile yazar ve okur.
 +  * El ile özelleştirilmediyse, geri-yüklemek veya geri almak için varsayılan profili UCI'den getirir.
 +  * Profilleri geri-yüklerken paket çatışmalarından sakınmak için kaldırmayı yüklemeden üstün kılar.
 +  * İşlem sahasını zaman kazanmak için sınırlandırır: yüklüyü kaldır, eksiği yükle, yükseltilebiliri yükselt.
 +  * Paketleri, kaynak tüketimini olabildiğince azaltmak ve aktarma hatasından sakınmak için birer birer işler.
 +
 +===== Komutlar =====
 +^ Alt-komut ^ Tanım ^
 +| ''**init**'' | Opkg yapılandırmasını başlatma. |
 +| ''**uci** [<prof>] < <uciprof>'' | stdin'den veya dosyadan UCI'ye Opkg profili ithal etme. |
 +| ''**import** [<bakprof>]'' | Sysupgrade yedeğinden UCI'ye Opkg profili ithal etme. |
 +| ''**save** [<prof>]'' | Geçerli Opkg profilini UCI'ye kaydet. |
 +| ''**restore** [<prof>]'' | Opkg profilini geri-yükle:\\ ''auto'' ya da hiç - varsayılan profil,\\ ''rwm'' - RWM profili,\\ ''custom'' - özel profil. |
 +| ''**rollback** [<prof>]'' | Opkg profilini geri-al:\\ kullanıcı-yüklemesi paketleri kaldır,\\ kullanıcı-kaldırması paketleri yükle,\\ yükseltilmiş paketleri atla. |
 +| ''**upgr** [<pkgtype>]'' | Paketleri tipe göre yükselt:\\ ''ai'' veya hiç - tüm yüklenmişler,\\ ''oi'' - bindirmeli-yüklenmişler. |
 +| ''**export** [<pkgtype>]'' | Paketleri tipe göre ihrac et:\\ ''ai'' ya da hiç - tüm yüklenmişler,\\ ''au'' - tüm yükseltilebilirler,\\ ''ri'' - ROM'a yüklenmişler,\\ ''wr'' - RWM-kaldırılmışlar,\\ ''wi'' - RWM-yüklenmişler,\\ ''or'' - bindirmeli-kaldırılmışlar,\\ ''oi'' - bindirmeli-yüklenmişler,\\ ''ur'' - kullanıcıca-kaldırılmışlar,\\ ''ui'' - kullanıcıca-yüklenmişler,\\ ''pr'' - profilce-kaldırılmışlar,\\ ''pi'' - profilce-kaldırılmışlar. |
 +| ''**proc** <cmd> < <pkgs>'' | Paketleri stdin'den verili alt-komut ile işle. |
 +| ''**reinstall** <pkgs>'' | Belirli paketleri yeniden-yükle. |
 +| ''**newconf** [<path>]'' | Yeni yapılandırmaları bul. |
 +
 +===== Direktifler =====
 +Takip eden kodu kopyalayım SSH veya uçbirim üzerinde kullanın.
 +<code bash>
 +# Configure profile
 +mkdir -p /etc/profile.d
 +cat << "EOF" > /etc/profile.d/opkg.sh
 +opkg() {
 +local OPKG_CMD="${1}"
 +local OPKG_UCI="$(uci -q get opkg.defaults."${OPKG_CMD}")"
 +case "${OPKG_CMD}" in
 +(init|uci|import|save|restore|rollback\
 +|upgr|export|newconf|proc|reinstall) opkg_"${@}" ;;
 +(*) command opkg "${@}" ;;
 +esac
 +}
 +
 +opkg_init() {
 +uci import opkg < /dev/null
 +uci -q batch << EOI
 +set opkg.defaults='opkg'
 +set opkg.defaults.import='/etc/backup/installed_packages.txt'
 +set opkg.defaults.save='auto'
 +set opkg.defaults.restore='auto'
 +set opkg.defaults.rollback='auto'
 +set opkg.defaults.upgr='ai'
 +set opkg.defaults.export='ai'
 +set opkg.defaults.proc='--force-depends'
 +set opkg.defaults.reinstall='--force-reinstall'
 +set opkg.defaults.newconf='/etc'
 +EOI
 +}
 +
 +opkg_uci() {
 +local OPKG_OPT="${1:-${OPKG_UCI}}"
 +local OPKG_OPT="${OPKG_OPT:-auto}"
 +if ! uci -q get opkg > /dev/null
 +then opkg init
 +fi
 +uci -q batch << EOI
 +delete opkg.'${OPKG_OPT}'
 +set opkg.'${OPKG_OPT}'='opkg'
 +$(sed -r -e "s/^(.*)\s(.*)$/\
 +del_list opkg.'${OPKG_OPT}'.'\2'='\1'\n\
 +add_list opkg.'${OPKG_OPT}'.'\2'='\1'/")
 +commit opkg
 +EOI
 +}
 +
 +opkg_import() {
 +local OPKG_OPT="${1:-${OPKG_UCI}}"
 +if [ -e "${OPKG_OPT}" ]
 +then sed -n -r -e "s/\s(overlay|unknown)$/\
 +\tipkg/p" "${OPKG_OPT}" \
 +| opkg uci auto
 +fi
 +}
 +
 +opkg_save() {
 +local OPKG_OPT="${1:-${OPKG_UCI}}"
 +local OPKG_WR="$(opkg export wr)"
 +local OPKG_WI="$(opkg export wi)"
 +local OPKG_UR="$(opkg export ur)"
 +local OPKG_UI="$(opkg export ui)"
 +if uci -q get fstab.rwm > /dev/null \
 +&& grep -q -e "\s/rwm\s" /etc/mtab
 +then {
 +sed -e "s/$/\trpkg/" "${OPKG_WR}"
 +sed -e "s/$/\tipkg/" "${OPKG_WI}"
 +} | opkg uci init
 +fi
 +{
 +sed -e "s/$/\trpkg/" "${OPKG_UR}"
 +sed -e "s/$/\tipkg/" "${OPKG_UI}"
 +} | opkg uci "${OPKG_OPT}"
 +rm -f "${OPKG_WR}" "${OPKG_WI}" "${OPKG_UR}" "${OPKG_UI}"
 +}
 +
 +opkg_restore() {
 +local OPKG_OPT="${1:-${OPKG_UCI}}"
 +local OPKG_CONF="${OPKG_OPT}"
 +local OPKG_AI="$(opkg export ai)"
 +local OPKG_PR="$(opkg export pr)"
 +local OPKG_PI="$(opkg export pi)"
 +grep -x -f "${OPKG_AI}" "${OPKG_PR}" \
 +| opkg proc remove
 +grep -v -x -f "${OPKG_AI}" "${OPKG_PI}" \
 +| opkg proc install
 +rm -f "${OPKG_AI}" "${OPKG_PR}" "${OPKG_PI}"
 +}
 +
 +opkg_rollback() {
 +local OPKG_OPT="${1:-${OPKG_UCI}}"
 +local OPKG_CONF="${OPKG_OPT}"
 +local OPKG_UR="$(opkg export ur)"
 +local OPKG_UI="$(opkg export ui)"
 +local OPKG_PR="$(opkg export pr)"
 +local OPKG_PI="$(opkg export pi)"
 +if uci -q get opkg."${OPKG_CONF}" > /dev/null
 +then opkg restore "${OPKG_CONF}"
 +grep -v -x -f "${OPKG_PI}" "${OPKG_UI}" \
 +| opkg proc remove
 +grep -v -x -f "${OPKG_PR}" "${OPKG_UR}" \
 +| opkg proc install
 +fi
 +rm -f "${OPKG_UR}" "${OPKG_UI}" "${OPKG_PR}" "${OPKG_PI}"
 +}
 +
 +opkg_upgr() {
 +local OPKG_OPT="${1:-${OPKG_UCI}}"
 +case "${OPKG_OPT}" in
 +(ai|oi) opkg_"${OPKG_CMD}"_type ;;
 +esac | opkg proc upgrade
 +}
 +
 +opkg_upgr_type() {
 +local OPKG_AI="$(opkg export ai)"
 +local OPKG_OI="$(opkg export oi)"
 +local OPKG_AU="$(opkg export au)"
 +case "${OPKG_OPT::1}" in
 +(a) grep -x -f "${OPKG_AI}" "${OPKG_AU}" ;;
 +(o) grep -x -f "${OPKG_OI}" "${OPKG_AU}" ;;
 +esac
 +rm -f "${OPKG_AI}" "${OPKG_OI}" "${OPKG_AU}"
 +}
 +
 +opkg_export() {
 +local OPKG_OPT="${1:-${OPKG_UCI}}"
 +local OPKG_TEMP="$(mktemp -t opkg.XXXXXX)"
 +case "${OPKG_OPT}" in
 +(ai|au) opkg_"${OPKG_CMD}"_cmd ;;
 +(ri|wr|wi|or|oi) opkg_"${OPKG_CMD}"_type ;;
 +(ur|ui) opkg_"${OPKG_CMD}"_run ;;
 +(pr|pi) opkg_"${OPKG_CMD}"_uci ;;
 +esac > "${OPKG_TEMP}"
 +echo "${OPKG_TEMP}"
 +}
 +
 +opkg_export_cmd() {
 +local OPKG_TYPE
 +case "${OPKG_OPT:1}" in
 +(i) OPKG_TYPE="installed" ;;
 +(u) OPKG_TYPE="upgradable" ;;
 +esac
 +opkg list-"${OPKG_TYPE}" \
 +| sed -e "s/\s.*$//"
 +}
 +
 +opkg_export_type() {
 +local OPKG_INFO="/usr/lib/opkg/info"
 +local OPKG_TYPE
 +case "${OPKG_OPT::1}" in
 +(r) OPKG_INFO="/rom${OPKG_INFO}" ;;
 +(w) OPKG_INFO="/rwm/upper${OPKG_INFO}" ;;
 +(o) OPKG_INFO="/overlay/upper${OPKG_INFO}" ;;
 +esac
 +case "${OPKG_OPT:1}" in
 +(r) OPKG_TYPE="c" ;;
 +(i) OPKG_TYPE="f" ;;
 +esac
 +find "${OPKG_INFO}" -name "*.control" \
 +-type "${OPKG_TYPE}" 2> /dev/null \
 +| sed -e "s/^.*\///;s/\.control$//"
 +}
 +
 +opkg_export_run() {
 +local OPKG_AI="$(opkg export ai)"
 +local OPKG_RI="$(opkg export ri)"
 +case "${OPKG_OPT:1}" in
 +(r) grep -v -x -f "${OPKG_AI}" "${OPKG_RI}" ;;
 +(i) grep -v -x -f "${OPKG_RI}" "${OPKG_AI}" ;;
 +esac
 +rm -f "${OPKG_AI}" "${OPKG_RI}"
 +}
 +
 +opkg_export_uci() {
 +local OPKG_TYPE
 +case "${OPKG_OPT:1}" in
 +(r) OPKG_TYPE="rpkg" ;;
 +(i) OPKG_TYPE="ipkg" ;;
 +esac
 +uci -q get opkg."${OPKG_CONF}"."${OPKG_TYPE}" \
 +| sed -e "s/\s/\n/g"
 +}
 +
 +opkg_proc() {
 +local OPKG_OPT="${OPKG_UCI}"
 +local OPKG_CMD="${1:?}"
 +local OPKG_PKG
 +while read -r OPKG_PKG
 +do opkg "${OPKG_CMD}" "${OPKG_PKG}" ${OPKG_OPT}
 +done
 +}
 +
 +opkg_reinstall() {
 +local OPKG_OPT="${OPKG_UCI}"
 +opkg install "${@}" ${OPKG_OPT}
 +}
 +
 +opkg_newconf() {
 +local OPKG_OPT="${1:-${OPKG_UCI}}"
 +find "${OPKG_OPT}" -name "*-opkg"
 +}
 +EOF
 +. /etc/profile.d/opkg.sh
 +
 +# Configure hotplug
 +mkdir -p /etc/hotplug.d/online
 +cat << "EOF" > /etc/hotplug.d/online/50-opkg-restore
 +OPKG_CONF="init main"
 +for OPKG_CONF in ${OPKG_CONF}
 +do if [ ! -e /etc/opkg-restore-"${OPKG_CONF}" ] \
 +&& lock -n /var/lock/opkg-restore \
 +&& opkg update
 +then . /etc/profile.d/opkg.sh
 +opkg restore "${OPKG_CONF/main}" 2>&1 \
 +| logger -t opkg
 +touch /etc/opkg-restore-"${OPKG_CONF}"
 +lock -u /var/lock/opkg-restore
 +reboot
 +break
 +fi
 +done
 +EOF
 +cat << "EOF" >> /etc/sysupgrade.conf
 +/etc/hotplug.d/online/50-opkg-restore
 +EOF
 +</code>
 +
 +===== Örnekler =====
 +<code bash>
 +# Save Opkg profile
 +opkg save
 +
 +# Restore Opkg profile
 +opkg update
 +opkg restore
 +
 +# Roll back Opkg profile
 +opkg rollback
 +
 +# Set up a custom Opkg profile
 +uci set opkg.defaults.restore="custom"
 +uci set opkg.custom="opkg"
 +uci add_list opkg.custom.rpkg="dnsmasq"
 +uci add_list opkg.custom.rpkg="ppp"
 +uci add_list opkg.custom.ipkg="curl"
 +uci add_list opkg.custom.ipkg="diffutils"
 +uci add_list opkg.custom.ipkg="dnsmasq-full"
 +uci commit opkg
 +
 +# Check Opkg log
 +logread -e opkg
 +
 +# Upgrade packages
 +opkg update
 +opkg upgr
 +</code>
 +
 +===== Otomatik =====
 +<code bash>
 +wget -O opkg-extras.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/opkg_extras?codeblock=0"
 +. ./opkg-extras.sh
 +</code>
 +
 +===== Ayrıca Bakınız =====
 +Gözetimli sistem yükseltme: ''luc-app-attended-sysupgrades'' veya ''auc''