Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
tr:docs:guide-user:advanced:opkg_extras [2021/12/23 04:48] – [Uygulama] 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''