ນີ້ແມ່ນຄໍາສັ່ງ dpkg-shlibdeps ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
dpkg-shlibdeps - ສ້າງການເພິ່ງພາອາໄສ substvar ຫ້ອງສະໝຸດທີ່ແບ່ງປັນ
ສະຫຼຸບສັງລວມ
dpkg-shlibdeps [ທາງເລືອກ... ] [-e]ປະຕິບັດໄດ້ [ທາງເລືອກ... ]
ລາຍລະອຽດ
dpkg-shlibdeps ຄິດໄລ່ການຂຶ້ນກັບຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນສໍາລັບການປະຕິບັດທີ່ມີຊື່ຢູ່ໃນມັນ
ການໂຕ້ຖຽງ. ການເພິ່ງພາອາໄສຖືກເພີ່ມໃສ່ໄຟລ໌ຕົວແປການທົດແທນ debian/substvars
ເປັນຊື່ຕົວແປ shlibs:ພາກສະຫນາມ dependency ບ່ອນທີ່ ພາກສະຫນາມ dependency ເປັນພາກສະຫນາມການເພິ່ງພາອາໄສ
ຊື່. ຕົວແປອື່ນໆທີ່ເລີ່ມຕົ້ນດ້ວຍ shlibs: ຖືກເອົາອອກຈາກໄຟລ໌.
dpkg-shlibdeps ມີສອງແຫຼ່ງຂໍ້ມູນທີ່ເປັນໄປໄດ້ເພື່ອສ້າງຂໍ້ມູນການເພິ່ງພາອາໄສ.
ບໍ່ວ່າຈະ ສັນຍາລັກ ແຟ້ມຫຼື shlibs ໄຟລ໌. ສໍາລັບແຕ່ລະຄູ່ນັ້ນ dpkg-shlibdeps ການວິເຄາະ, ມັນ
ຊອກຫາລາຍຊື່ຫ້ອງສະຫມຸດທີ່ມັນເຊື່ອມໂຍງກັບ. ຫຼັງຈາກນັ້ນ, ສໍາລັບແຕ່ລະຫ້ອງສະຫມຸດ, ມັນເບິ່ງ
ເຖິງວ່າ ສັນຍາລັກ ໄຟລ໌, ຫຼື shlibs ໄຟລ໌ (ຖ້າອະດີດບໍ່ມີຢູ່ຫຼືຖ້າ
debian/shlibs.local ປະກອບດ້ວຍການເພິ່ງພາອາໄສທີ່ກ່ຽວຂ້ອງ). ທັງສອງໄຟລ໌ແມ່ນຄວນຈະເປັນ
ສະຫນອງໃຫ້ໂດຍຊຸດຫ້ອງສະຫມຸດແລະດັ່ງນັ້ນຄວນຈະມີຢູ່ໃນ
/var/lib/dpkg/info/ຊຸດ.ສັນຍາລັກ or /var/lib/dpkg/info/ຊຸດ.shlibs. ຊື່ຊຸດ
ໄດ້ຖືກລະບຸໄວ້ໃນສອງຂັ້ນຕອນ: ຊອກຫາໄຟລ໌ຫ້ອງສະຫມຸດຢູ່ໃນລະບົບ (ເບິ່ງຄືກັນ
ໄດເລກະທໍລີນັ້ນ ດັ່ງນັ້ນ ຈະໃຊ້), ຫຼັງຈາກນັ້ນໃຊ້ dpkg -S ໄຟລ໌ຫ້ອງສະຫມຸດ ເພື່ອຊອກຫາຊຸດ
ການສະຫນອງຫ້ອງສະຫມຸດ.
ສັນຍາລັກ ໄຟ
ໄຟລ໌ສັນຍາລັກມີຂໍ້ມູນການເພິ່ງພາອາໄສທີ່ລະອຽດກວ່າໂດຍການໃຫ້ຂັ້ນຕ່ໍາ
ການຂຶ້ນກັບແຕ່ລະສັນຍາລັກທີ່ຫ້ອງສະຫມຸດສົ່ງອອກ. script ພະຍາຍາມຊອກຫາສັນຍາລັກ
ໄຟລ໌ທີ່ກ່ຽວຂ້ອງກັບຊຸດຫ້ອງສະໝຸດໃນສະຖານທີ່ຕໍ່ໄປນີ້ (ການຈັບຄູ່ທຳອິດແມ່ນໃຊ້):
debian/*/DEBIAN/ສັນຍາລັກ
ແບ່ງປັນຂໍ້ມູນຫ້ອງສະໝຸດທີ່ສ້າງຂຶ້ນໂດຍຂະບວນການສ້າງປະຈຸບັນທີ່ເອີ້ນກັນ
dpkg-shlibdeps. ພວກມັນຖືກສ້າງຂື້ນໂດຍ dpkg-gensymbols(1). ພວກເຂົາເຈົ້າໄດ້ຖືກນໍາໃຊ້ພຽງແຕ່ຖ້າຫາກວ່າ
ຫໍສະຫມຸດໄດ້ຖືກພົບເຫັນຢູ່ໃນຊຸດຂອງຕົ້ນໄມ້ກໍ່ສ້າງ. ໄຟລ໌ສັນຍາລັກຢູ່ໃນຕົ້ນໄມ້ກໍ່ສ້າງນັ້ນ
ມີຄວາມສຳຄັນກວ່າໄຟລ໌ສັນຍາລັກຈາກແພັກເກັດຖານສອງອື່ນໆ.
/etc/dpkg/symbols/ຊຸດ.ສັນຍາລັກ.ໂຄ້ງ
/etc/dpkg/symbols/ຊຸດ.ສັນຍາລັກ
ຕໍ່ລະບົບ overriding ແບ່ງປັນຂໍ້ມູນການຂຶ້ນກັບຫ້ອງສະໝຸດ. ໂຄ້ງ ເປັນ
ສະຖາປັດຕະຍະກໍາຂອງລະບົບປະຈຸບັນ (ໄດ້ມາໂດຍ dpkg-ຖາປັດຕະຍະ -qDEB_HOST_ARCH).
ຜົນຜະລິດຈາກ "dpkg-query -- ເສັ້ນທາງຄວບຄຸມ ຊຸດ ສັນຍາລັກ”
ຂໍ້ມູນການເພິ່ງພາອາໄສຫ້ອງສະຫມຸດທີ່ແບ່ງປັນໃຫ້ຫຸ້ມຫໍ່. ເວັ້ນເສຍແຕ່ overridden ໂດຍ
--admindir, ໄຟລ໌ເຫຼົ່ານັ້ນຢູ່ໃນ /var/lib/dpkg.
ໃນຂະນະທີ່ສະແກນສັນຍາລັກທີ່ໃຊ້ໂດຍ binaries ທັງຫມົດ, dpkg-shlibdeps ຈື່ໄດ້ (ໃຫຍ່ທີ່ສຸດ)
ສະບັບຕໍາ່ສຸດທີ່ຈໍາເປັນສໍາລັບແຕ່ລະຫ້ອງສະຫມຸດ. ໃນຕອນທ້າຍຂອງຂະບວນການ, ມັນສາມາດຂຽນໄດ້
ອອກການເພິ່ງພາອາໄສຫນ້ອຍສໍາລັບທຸກຫ້ອງສະຫມຸດນໍາໃຊ້ (ສະຫນອງໃຫ້ວ່າຂໍ້ມູນຂ່າວສານຂອງ
ສັນຍາລັກ ໄຟລ໌ແມ່ນຖືກຕ້ອງ).
ໃນຖານະເປັນມາດຕະການປ້ອງກັນ, ໄຟລ໌ສັນຍາລັກສາມາດສະຫນອງ a Build-Depends-Package ເມຕາ
ພາກສະຫນາມຂໍ້ມູນຂ່າວສານແລະ dpkg-shlibdeps ຈະສະກັດການສະບັບຫນ້ອຍທີ່ຕ້ອງການໂດຍ
ຊຸດທີ່ສອດຄ້ອງກັນໃນ ການກໍ່ສ້າງຂື້ນກັບ ພາກສະຫນາມແລະນໍາໃຊ້ສະບັບນີ້ຖ້າຫາກວ່າມັນສູງກວ່າ
ສະບັບຫນ້ອຍທີ່ຄິດໄລ່ໂດຍການສະແກນສັນຍາລັກ.
ໄສ້ກອກ ໄຟ
ໄຟລ໌ Shlibs ສົມທົບໂດຍກົງກັບຫ້ອງສະຫມຸດກັບການເພິ່ງພາອາໄສ (ໂດຍບໍ່ມີການເບິ່ງ
ສັນຍາລັກ). ດັ່ງນັ້ນມັນມັກຈະແຂງແຮງກວ່າຄວາມຕ້ອງການແທ້ໆແຕ່ມີຄວາມປອດໄພຫຼາຍແລະງ່າຍຕໍ່ການຈັດການ.
ການເພິ່ງພາອາໄສຂອງຫ້ອງສະໝຸດໄດ້ຖືກເບິ່ງຢູ່ໃນຫຼາຍບ່ອນ. ໄຟລ໌ທໍາອິດທີ່ສະຫນອງ
ຂໍ້ມູນສໍາລັບຫໍສະຫມຸດທີ່ສົນໃຈແມ່ນໄດ້ນໍາໃຊ້:
debian/shlibs.local
Package-local overriding ແບ່ງປັນຂໍ້ມູນການຂຶ້ນກັບຫ້ອງສະໝຸດ.
/etc/dpkg/shlibs.override
ຕໍ່ລະບົບ overriding ແບ່ງປັນຂໍ້ມູນການຂຶ້ນກັບຫ້ອງສະໝຸດ.
debian/*/DEBIAN/shlibs
ແບ່ງປັນຂໍ້ມູນຫ້ອງສະໝຸດທີ່ສ້າງຂຶ້ນໂດຍຂະບວນການສ້າງປະຈຸບັນທີ່ເອີ້ນກັນ
dpkg-shlibdeps. ພວກມັນຖືກນໍາໃຊ້ພຽງແຕ່ຖ້າຫ້ອງສະຫມຸດຖືກພົບເຫັນຢູ່ໃນການກໍ່ສ້າງຂອງຊຸດ
ຕົ້ນໄມ້. ໄຟລ໌ shlibs ໃນຕົ້ນໄມ້ກໍ່ສ້າງນັ້ນມີສ່ວນສໍາຄັນກວ່າໄຟລ໌ shlibs ຈາກ
ຊຸດຄູ່ອື່ນໆ.
ຜົນຜະລິດຈາກ "dpkg-query -- ເສັ້ນທາງຄວບຄຸມ ຊຸດ shlibs”
ຂໍ້ມູນການເພິ່ງພາອາໄສຫ້ອງສະຫມຸດທີ່ແບ່ງປັນໃຫ້ຫຸ້ມຫໍ່. ເວັ້ນເສຍແຕ່ overridden ໂດຍ
--admindir, ໄຟລ໌ເຫຼົ່ານັ້ນຢູ່ໃນ /var/lib/dpkg.
/etc/dpkg/shlibs.default
ຂໍ້ມູນການຂຶ້ນກັບຫ້ອງສະໝຸດທີ່ແບ່ງປັນໃນຕອນຕົ້ນຕໍ່ລະບົບ.
ການຂື້ນກັບສານສະກັດຈາກນັ້ນຖືກນໍາໃຊ້ໂດຍກົງ (ຍົກເວັ້ນຖ້າພວກມັນຖືກກັ່ນຕອງອອກເພາະວ່າ
ພວກມັນຖືກລະບຸວ່າເປັນຊໍ້າກັນ, ຫຼືອ່ອນກວ່າການເພິ່ງພາອາໄສອື່ນ).
OPTIONS
dpkg-shlibdeps ຕີຄວາມຂໍ້ໂຕ້ແຍ້ງທີ່ບໍ່ແມ່ນທາງເລືອກເປັນຊື່ທີ່ສາມາດປະຕິບັດໄດ້, ຄືກັບວ່າພວກເຂົາເຄີຍເປັນ
ສະຫນອງໃຫ້ເປັນ -eປະຕິບັດໄດ້.
-eປະຕິບັດໄດ້
ປະກອບມີການເພິ່ງພາອາໄສທີ່ເຫມາະສົມສໍາລັບຫ້ອງສະຫມຸດຮ່ວມກັນທີ່ຕ້ອງການໂດຍ ປະຕິບັດໄດ້.
ທາງເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ຫຼາຍຄັ້ງ.
-lລະບົບ
ຕື່ມ ລະບົບ ໄປຫາລາຍຊື່ໄດເລກະທໍລີເພື່ອຊອກຫາຫ້ອງສະຫມຸດທີ່ແບ່ງປັນສ່ວນຕົວ
(ນັບຕັ້ງແຕ່ dpkg 1.17.0). ທາງເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ຫຼາຍຄັ້ງ.
ໝາຍເຫດ: ໃຊ້ຕົວເລືອກນີ້ແທນການຕັ້ງຄ່າ LD_LIBRARY_PATH, ເປັນສະພາບແວດລ້ອມນັ້ນ
ຕົວແປແມ່ນໃຊ້ເພື່ອຄວບຄຸມຕົວເຊື່ອມຕໍ່ເວລາແລ່ນ ແລະໃຊ້ມັນເພື່ອຕັ້ງຄ່າການແບ່ງປັນ
ເສັ້ນທາງຫ້ອງສະຫມຸດໃນເວລາສ້າງສາມາດມີບັນຫາໃນເວລາທີ່ການລວບລວມຂ້າມຕົວຢ່າງ.
-dພາກສະຫນາມ dependency
ເພີ່ມການເພິ່ງພາອາໄສທີ່ຈະຖືກເພີ່ມໃສ່ພາກສະຫນາມການຂຶ້ນກັບໄຟລ໌ຄວບຄຸມ ພາກສະຫນາມ dependency.
(ການຂື້ນກັບຊ່ອງຂໍ້ມູນນີ້ຖືກຈັດໃສ່ຢູ່ໃນຕົວແປ shlibs:ເພິ່ງພາອາໄສ-
ພາກສະຫນາມ.)
ໄດ້ -dພາກສະຫນາມ dependency ທາງເລືອກມີຜົນສໍາລັບການປະຕິບັດທັງຫມົດຫຼັງຈາກທາງເລືອກ,
ຈົນກ່ວາຕໍ່ໄປ -dພາກສະຫນາມ dependency. ຄ່າເລີ່ມຕົ້ນ ພາກສະຫນາມ dependency is ແມ່ນຂຶ້ນຢູ່ກັບ.
ຖ້າຫາກວ່າການເຂົ້າ dependency ດຽວກັນ (ຫຼືຊຸດຂອງທາງເລືອກ) ປະກົດຢູ່ໃນຫຼາຍກ່ວາຫນຶ່ງຂອງ
ຊື່ພາກສະຫນາມການເພິ່ງພາອາໄສທີ່ໄດ້ຮັບການຍອມຮັບ ທາງສ່ວນຫນ້າແມ່ນຂຶ້ນກັບ, ແມ່ນຂຶ້ນຢູ່ກັບ, ແນະ ນຳ, ເສີມສ້າງ or
ຄຳ ແນະ ນຳ ຫຼັງຈາກນັ້ນ dpkg-shlibdeps ອັດຕະໂນມັດຈະເອົາການເພິ່ງພາອາໄສຈາກທັງຫມົດ
ຊ່ອງຂໍ້ມູນຍົກເວັ້ນອັນທີ່ສະແດງເຖິງການເພິ່ງພາອາໄສທີ່ສຳຄັນທີ່ສຸດ.
-pvarname-prefix
ເລີ່ມຕົວແປການທົດແທນດ້ວຍ varname-prefix: ແທນທີ່ shlibs:. ເຊັ່ນດຽວກັນ,
ຕົວແປການທົດແທນທີ່ມີຢູ່ແລ້ວເລີ່ມຕົ້ນດ້ວຍ varname-prefix: (ແທນທີ່ຈະ
shlibs:) ຖືກເອົາອອກຈາກໄຟລ໌ຕົວແປການທົດແທນ.
-O[ຊື່ເອກະສານ]
ການຕັ້ງຄ່າຕົວປ່ຽນແປງການພິມກັບຜົນຜະລິດມາດຕະຖານ (ຫຼື ຊື່ເອກະສານ ຖ້າຫາກວ່າລະບຸໄວ້,
ຕັ້ງແຕ່ dpkg 1.17.2), ແທນທີ່ຈະຖືກເພີ່ມໃສ່ໄຟລ໌ຕົວແປການທົດແທນ
(debian/substvars ໂດຍຄ່າເລີ່ມຕົ້ນ).
-tປະເພດ ຕ້ອງການຂໍ້ມູນການຂຶ້ນກັບຫ້ອງສະໝຸດທີ່ແບ່ງປັນທີ່ຖືກແທັກສຳລັບປະເພດແພັກເກດທີ່ລະບຸ. ຖ້າ
ບໍ່ມີຂໍ້ມູນທີ່ tagged ແມ່ນມີຢູ່, ກັບຄືນໄປບ່ອນຂໍ້ມູນທີ່ untagged. ຄ່າເລີ່ມຕົ້ນ
ປະເພດຊຸດແມ່ນ deb. ຂໍ້ມູນການເພິ່ງພາອາໄສຫ້ອງສະຫມຸດທີ່ແບ່ງປັນແມ່ນ tagged ສໍາລັບການໃຫ້
ປະເພດໂດຍການນໍາຫນ້າມັນດ້ວຍຊື່ຂອງປະເພດ, ຈໍ້າສອງເມັດ, ແລະຊ່ອງຫວ່າງ.
-Llocal-shlibs-file
ອ່ານ overriding ແບ່ງປັນຂໍ້ມູນການຂຶ້ນກັບຫ້ອງສະຫມຸດຈາກ local-shlibs-file
ແທນທີ່ debian/shlibs.local.
-Tsubstvars-file
ຂຽນຕົວແປການທົດແທນໃນ substvars-file; ຄ່າເລີ່ມຕົ້ນແມ່ນ debian/substvars.
-v ເປີດໃຊ້ໂໝດ verbose (ຕັ້ງແຕ່ dpkg 1.14.8). ຂໍ້ຄວາມຈໍານວນຫລາຍຖືກສະແດງເຖິງ
ອະທິບາຍສິ່ງທີ່ dpkg-shlibdeps ບໍ່
-xຊຸດ
ບໍ່ລວມແພັກເກັດຈາກການຂຶ້ນກັບທີ່ສ້າງຂຶ້ນ (ຕັ້ງແຕ່ dpkg 1.14.8). ນີ້ແມ່ນ
ເປັນປະໂຫຍດເພື່ອຫຼີກເວັ້ນການຂຶ້ນກັບຕົນເອງສໍາລັບຊຸດທີ່ສະຫນອງ ELF binaries
(executables or library plugins) ໂດຍໃຊ້ຫ້ອງສະໝຸດທີ່ບັນຈຸຢູ່ໃນຊຸດດຽວກັນ.
ຕົວເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ຫຼາຍຄັ້ງເພື່ອຍົກເວັ້ນຫຼາຍແພັກເກັດ.
-Spackage-build-dir
ເບິ່ງເຂົ້າໄປໃນ package-build-dir ທໍາອິດໃນເວລາທີ່ພະຍາຍາມຊອກຫາຫ້ອງສະຫມຸດ (ນັບຕັ້ງແຕ່ dpkg
1.14.15). ນີ້ແມ່ນເປັນປະໂຫຍດໃນເວລາທີ່ຊຸດແຫຼ່ງສ້າງຫຼາຍລົດຊາດຂອງ
ຫ້ອງສະຫມຸດດຽວກັນແລະທ່ານຕ້ອງການທີ່ຈະຮັບປະກັນວ່າທ່ານໄດ້ຮັບຄວາມເພິ່ງພາອາໄສຈາກຖານສອງທີ່ໃຫ້
ຊຸດ. ທ່ານສາມາດນໍາໃຊ້ທາງເລືອກນີ້ຫຼາຍຄັ້ງ: ລາຍການຈະໄດ້ຮັບການພະຍາຍາມໃນ
ຄໍາສັ່ງດຽວກັນກ່ອນທີ່ຈະໄດເລກະທໍລີຂອງຊຸດຄູ່ອື່ນໆ.
--ignore-missing-info
ຢ່າຫຼົ້ມເຫຼວຖ້າບໍ່ພົບຂໍ້ມູນການເພິ່ງພາອາໄສສຳລັບຫ້ອງສະໝຸດທີ່ແບ່ງປັນ (ຕັ້ງແຕ່
dpkg 1.14.8). ການນໍາໃຊ້ທາງເລືອກນີ້ແມ່ນທໍ້ຖອຍໃຈ, ຫ້ອງສະຫມຸດທັງຫມົດຄວນຈະສະຫນອງ
ຂໍ້ມູນການເພິ່ງພາອາໄສ (ບໍ່ວ່າຈະເປັນໄຟລ໌ shlibs, ຫຼືກັບໄຟລ໌ສັນຍາລັກ) ເຖິງແມ່ນວ່າ
ພວກມັນຍັງບໍ່ໄດ້ໃຊ້ໂດຍແພັກເກດອື່ນເທື່ອ.
--ຄໍາເຕືອນ=ມູນຄ່າ
ມູນຄ່າ ແມ່ນພາກສະຫນາມເລັກນ້ອຍທີ່ກໍານົດຊຸດຂອງຄໍາເຕືອນທີ່ສາມາດຖືກປ່ອຍອອກມາໂດຍ
dpkg-shlibdeps (ນັບຕັ້ງແຕ່ dpkg 1.14.17). Bit 0 (value=1) ເປີດໃຊ້ການເຕືອນ “ສັນຍາລັກ
ຊິມ ໃຊ້ໂດຍ binary ບໍ່ພົບຢູ່ໃນຫ້ອງສະໝຸດອັນໃດ", bit 1 (value=2) ເປີດໃຊ້
ການເຕືອນໄພ “ການຫຸ້ມຫໍ່ສາມາດຫຼີກເວັ້ນການເພິ່ງພາອາໄສທີ່ບໍ່ມີປະໂຫຍດ” ແລະ bit 2 (ຄ່າ = 4) ເຮັດໃຫ້ໄດ້
ເຕືອນ "binary ບໍ່ຄວນເຊື່ອມຕໍ່ກັບ ຫ້ອງສະຫມຸດ”. ຄ່າເລີ່ມຕົ້ນ ມູນຄ່າ ແມ່ນ 3: ໄດ້
ສອງ ຄຳ ເຕືອນ ທຳ ອິດແມ່ນເຮັດວຽກໂດຍຄ່າເລີ່ມຕົ້ນ, ອັນສຸດທ້າຍບໍ່ແມ່ນ. ຕັ້ງ ມູນຄ່າ ເຖິງ 7 ຖ້າ
ທ່ານຕ້ອງການການເຕືອນໄພທັງຫມົດມີການເຄື່ອນໄຫວ.
--admindir=dir
ການປ່ຽນແປງທີ່ຕັ້ງຂອງ dpkg ຖານຂໍ້ມູນ (ນັບຕັ້ງແຕ່ dpkg 1.14.0). ສະຖານທີ່ເລີ່ມຕົ້ນ
is /var/lib/dpkg.
-?, - ຊ່ວຍ
ສະແດງຂໍ້ຄວາມການນໍາໃຊ້ແລະອອກ.
- ການປ່ຽນແປງ
ສະແດງສະບັບແລະອອກ.
ທິດສະດີວິທະຍາ
ຄໍາເຕືອນ
ນັບຕັ້ງແຕ່ dpkg-shlibdeps ວິເຄາະຊຸດຂອງສັນຍາລັກທີ່ໃຊ້ໂດຍແຕ່ລະຄູ່ຂອງການສ້າງ
ຊຸດ, ມັນສາມາດປ່ອຍຄໍາເຕືອນໃນຫຼາຍໆກໍລະນີ. ພວກເຂົາແຈ້ງໃຫ້ເຈົ້າຮູ້ສິ່ງທີ່ສາມາດເຮັດໄດ້
ໄດ້ຮັບການປັບປຸງໃນຊຸດ. ໃນກໍລະນີຫຼາຍທີ່ສຸດ, ການປັບປຸງເຫຼົ່ານັ້ນກ່ຽວຂ້ອງກັບແຫຼ່ງນ້ໍາ
ໂດຍກົງ. ໂດຍຄໍາສັ່ງຂອງການຫຼຸດລົງຄວາມສໍາຄັນ, ນີ້ແມ່ນຄໍາເຕືອນຕ່າງໆທີ່ທ່ານສາມາດເຮັດໄດ້
ພົບກັບ:
ສັນຍາລັກ ຊິມ ໃຫມ່ by binary ພົບເຫັນ in none of ໄດ້ ຫ້ອງສະ ໝຸດ.
ສັນຍາລັກທີ່ລະບຸໄວ້ບໍ່ໄດ້ພົບເຫັນຢູ່ໃນຫ້ອງສະຫມຸດທີ່ເຊື່ອມຕໍ່ກັບຄູ່.
ໄດ້ binary ສ່ວນຫຼາຍອາດຈະເປັນຫ້ອງສະຫມຸດແລະມັນຈໍາເປັນຕ້ອງມີການເຊື່ອມຕໍ່ເພີ່ມເຕີມ
ຫ້ອງສະຫມຸດໃນລະຫວ່າງຂະບວນການສ້າງ (ທາງເລືອກ -lຫ້ອງສະຫມຸດ ຂອງ linker).
binary ປະກອບດ້ວຍ an ບໍ່ສາມາດແກ້ໄຂໄດ້ ອ້າງອິງ to ສັນຍາລັກ ຊິມ: ມັນ ອາດຈະເປັນ a plugin
ສັນຍາລັກທີ່ລະບຸໄວ້ບໍ່ໄດ້ພົບເຫັນຢູ່ໃນຫ້ອງສະຫມຸດທີ່ເຊື່ອມຕໍ່ກັບຄູ່.
ໄດ້ binary ສ່ວນຫຼາຍອາດຈະເປັນ plugin ແລະສັນຍາລັກແມ່ນອາດຈະສະຫນອງໃຫ້ໂດຍ
ໂຄງການທີ່ໂຫລດ plugin ນີ້. ໃນທາງທິດສະດີປລັກອິນບໍ່ມີ SONAME ແຕ່ອັນນີ້
binary ມີຫນຶ່ງແລະດັ່ງນັ້ນມັນບໍ່ສາມາດຖືກກໍານົດຢ່າງຊັດເຈນວ່າເປັນເຊັ່ນນັ້ນ.
ຢ່າງໃດກໍ່ຕາມຄວາມຈິງທີ່ວ່າ binary ຖືກເກັບໄວ້ໃນໄດເລກະທໍລີທີ່ບໍ່ແມ່ນສາທາລະນະແມ່ນແຂງແຮງ
ຕົວຊີ້ບອກວ່າມັນບໍ່ແມ່ນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນປົກກະຕິ. ຖ້າຫາກວ່າສອງແມ່ນແທ້ a
plugin, ຫຼັງຈາກນັ້ນບໍ່ສົນໃຈຄໍາເຕືອນນີ້. ແຕ່ມີຄວາມເປັນໄປໄດ້ສະເຫມີວ່າມັນເປັນ
ຫ້ອງສະຫມຸດທີ່ແທ້ຈິງແລະບັນດາໂຄງການທີ່ເຊື່ອມຕໍ່ກັບມັນກໍາລັງໃຊ້ RPATH ເພື່ອໃຫ້ມີການເຄື່ອນໄຫວ
loader ພົບມັນ. ໃນກໍລະນີດັ່ງກ່າວ, ຫໍສະຫມຸດໄດ້ຖືກທໍາລາຍແລະຕ້ອງໄດ້ຮັບການແກ້ໄຂ.
ຊຸດ ສາມາດເຮັດໄດ້ ຫລີກລ້ຽງ a ບໍ່ມີປະໂຫຍດ ການເພິ່ງພາອາໄສ if binary ແມ່ນ ບໍ່ ການເຊື່ອມຕໍ່ ຕໍ່ ຫ້ອງສະຫມຸດ (ມັນ ການນໍາໃຊ້
none of ໄດ້ ຫໍສະໝຸດ ສັນຍາລັກ)
ບໍ່ມີ ຄູ່ ທີ່ເຊື່ອມຕໍ່ກັບ ຫ້ອງສະຫມຸດ ໃຊ້ສັນຍາລັກໃດໆທີ່ສະຫນອງໃຫ້
ໂດຍຫ້ອງສະຫມຸດ. ໂດຍການແກ້ໄຂ binaries ທັງຫມົດ, ທ່ານຈະຫຼີກເວັ້ນການຂຶ້ນກັບ
ທີ່ກ່ຽວຂ້ອງກັບຫ້ອງສະຫມຸດນີ້ (ເວັ້ນເສຍແຕ່ການເພິ່ງພາອາໄສດຽວກັນຍັງໄດ້ຖືກສ້າງຂຶ້ນໂດຍຄົນອື່ນ
ຫ້ອງສະຫມຸດທີ່ຖືກນໍາໃຊ້ຢ່າງແທ້ຈິງ).
ຊຸດ ສາມາດເຮັດໄດ້ ຫລີກລ້ຽງ a ບໍ່ມີປະໂຫຍດ ການເພິ່ງພາອາໄສ if ຄູ່ ໄດ້ ບໍ່ ການເຊື່ອມຕໍ່ ຕໍ່ ຫ້ອງສະຫມຸດ (ພວກເຂົາ
ການນໍາໃຊ້ none of ໄດ້ ຫໍສະໝຸດ ສັນຍາລັກ)
ຄືກັນກັບຄໍາເຕືອນຂ້າງເທິງ, ແຕ່ສໍາລັບສອງຄູ່.
binary ຄວນ ບໍ່ be ການເຊື່ອມຕໍ່ ຕໍ່ ຫ້ອງສະຫມຸດ (ມັນ ການນໍາໃຊ້ none of ໄດ້ ຫໍສະໝຸດ ສັນຍາລັກ)
ໄດ້ binary ຖືກເຊື່ອມຕໍ່ກັບຫ້ອງສະຫມຸດທີ່ມັນບໍ່ຕ້ອງການ. ມັນບໍ່ແມ່ນບັນຫາແຕ່ບາງ
ການປັບປຸງການປະຕິບັດຂະຫນາດນ້ອຍໃນເວລາໂຫຼດ binary ສາມາດໄດ້ຮັບໂດຍການບໍ່ເຊື່ອມຕໍ່
ຫ້ອງສະຫມຸດນີ້ໄປຫາສອງນີ້. ການເຕືອນໄພນີ້ກວດເບິ່ງຂໍ້ມູນດຽວກັນກ່ວາ
ອັນທີ່ຜ່ານມາແຕ່ເຮັດມັນສໍາລັບແຕ່ລະ binary ແທນທີ່ຈະເຮັດການກວດສອບໃນທົ່ວໂລກທັງຫມົດ
binaries ວິເຄາະ.
ຂໍ້ຜິດພາດ
dpkg-shlibdeps ຈະລົ້ມເຫລວຖ້າຫາກວ່າມັນບໍ່ສາມາດຊອກຫາຫ້ອງສະຫມຸດສາທາລະນະທີ່ໃຊ້ໂດຍ binary ຫຼືຖ້າຫາກວ່ານີ້
ຫ້ອງສະຫມຸດບໍ່ມີຂໍ້ມູນການເພິ່ງພາອາໄສທີ່ກ່ຽວຂ້ອງ (ທັງໄຟລ໌ shlibs ຫຼືໄຟລ໌ສັນຍາລັກ). ກ
ຫໍສະໝຸດສາທາລະນະມີ SONAME ແລະເປັນເວີຊັນ (libsomething.so.X). ຫ້ອງສະໝຸດສ່ວນຕົວ (ເຊັ່ນ
plugin) ບໍ່ຄວນມີ SONAME ແລະບໍ່ຈໍາເປັນຕ້ອງມີເວີຊັນ.
ບໍ່ສາມາດ ຊອກຫາ ຫ້ອງສະຫມຸດ ຫ້ອງສະໝຸດ-sname ຈໍາເປັນ by binary (ມັນ RPATH is 'ເສັ້ນທາງ')
ໄດ້ binary ໃຊ້ຫໍສະຫມຸດທີ່ເອີ້ນວ່າ ຫ້ອງສະໝຸດ-sname ແຕ່ dpkg-shlibdeps ບໍ່ສາມາດ
ເພື່ອຊອກຫາຫ້ອງສະຫມຸດ. dpkg-shlibdeps ສ້າງບັນຊີລາຍຊື່ຂອງໄດເລກະທໍລີເພື່ອກວດເບິ່ງເປັນ
ຕໍ່ໄປນີ້: ລາຍການລະບຸໄວ້ໃນ RPATH ຂອງຖານສອງ, ລາຍການລະບຸໄວ້ໃນ
/etc/ld.so.conf, ໄດເລກະທໍລີເພີ່ມໂດຍ -l ທາງເລືອກ, ລາຍການລະບຸໄວ້ໃນ
LD_LIBRARY_PATH ຕົວປ່ຽນແປງສະພາບແວດລ້ອມ, ແລະມາດຕະຖານລາຍຊື່ສາທາລະນະ (/ lib,
/ usr / lib, /lib32, / usr / lib32, /lib64, /usr/lib64). ຫຼັງຈາກນັ້ນ, ມັນກວດເບິ່ງໄດເລກະທໍລີເຫຼົ່ານັ້ນ
in the package's build tree of binary is analysis , ໃນ packages ' build
ຕົ້ນໄມ້ຊີ້ບອກກັບ -S ທາງເລືອກແຖວຄໍາສັ່ງ, ໃນຊຸດອື່ນໆ 'ສ້າງຕົ້ນໄມ້
ທີ່ມີໄຟລ໌ DEBIAN/shlibs ຫຼື DEBIAN/symbols ແລະສຸດທ້າຍຢູ່ໃນຮາກ
ໄດເລກະທໍລີ. ຖ້າຫ້ອງສະຫມຸດບໍ່ພົບຢູ່ໃນໄດເລກະທໍລີເຫຼົ່ານັ້ນ, ຫຼັງຈາກນັ້ນທ່ານໄດ້ຮັບ
ຄວາມຜິດພາດນີ້.
ຖ້າຫ້ອງສະຫມຸດບໍ່ພົບຢູ່ໃນໄດເລກະທໍລີສ່ວນຕົວຂອງຊຸດດຽວກັນ, ຫຼັງຈາກນັ້ນທ່ານ
ຕ້ອງການເພີ່ມໄດເລກະທໍລີດ້ວຍ -l. ຖ້າມັນຢູ່ໃນຊຸດຄູ່ອື່ນທີ່ກໍາລັງສ້າງ,
ທ່ານຕ້ອງການໃຫ້ແນ່ໃຈວ່າໄຟລ໌ shlibs/symbols ຂອງຊຸດນີ້ແມ່ນຢູ່ແລ້ວ
ສ້າງຂຶ້ນແລະນັ້ນ -l ປະກອບດ້ວຍໄດເລກະທໍລີທີ່ເຫມາະສົມຖ້າມັນຢູ່ໃນເອກະຊົນ
ລະບົບ.
no ການເພິ່ງພາອາໄສ ຂໍ້ມູນຂ່າວສານ ພົບເຫັນ ສໍາລັບການ ໄຟລ໌ຫ້ອງສະຫມຸດ (ໃຊ້ by binary).
ຫ້ອງສະຫມຸດທີ່ຕ້ອງການໂດຍ binary ໄດ້ຖືກພົບເຫັນໂດຍ dpkg-shlibdeps in ໄຟລ໌ຫ້ອງສະຫມຸດ ແຕ່
dpkg-shlibdeps ບໍ່ສາມາດຊອກຫາຂໍ້ມູນການເພິ່ງພາອາໄສຂອງຫ້ອງສະໝຸດນັ້ນໄດ້.
ເພື່ອຊອກຫາການເພິ່ງພາອາໄສ, ມັນໄດ້ພະຍາຍາມສ້າງແຜນທີ່ຫ້ອງສະຫມຸດເປັນຊຸດ Debian
ໂດຍການຊ່ວຍເຫຼືອຂອງ dpkg -S ໄຟລ໌ຫ້ອງສະຫມຸດ. ຫຼັງຈາກນັ້ນ, ມັນໄດ້ກວດເບິ່ງ shlibs ທີ່ສອດຄ້ອງກັນ
ແລະສັນຍາລັກໄຟລ໌ໃນ /var/lib/dpkg/info/, ແລະໃນຊຸດຕ່າງໆຂອງການກໍ່ສ້າງຕົ້ນໄມ້
(debian/*/DEBIAN/).
ຄວາມລົ້ມເຫຼວນີ້ສາມາດເກີດມາຈາກໄຟລ໌ shlibs ທີ່ບໍ່ດີຫຼືຂາດຫາຍໄປຫຼືສັນຍາລັກໃນ
ຊຸດຂອງຫ້ອງສະຫມຸດ. ມັນອາດຈະເກີດຂຶ້ນຖ້າຫາກວ່າຫ້ອງສະຫມຸດໄດ້ຖືກສ້າງຂຶ້ນພາຍໃນ
ຊຸດແຫຼ່ງດຽວກັນແລະຖ້າໄຟລ໌ shlibs ຍັງບໍ່ທັນໄດ້ຖືກສ້າງຂຶ້ນ (ໃນກໍລະນີໃດກໍ່ຕາມ
ທ່ານຕ້ອງແກ້ໄຂ debian / ກົດລະບຽບເພື່ອສ້າງ shlibs ກ່ອນທີ່ຈະໂທຫາ dpkg-shlibdeps). ບໍ່ດີ
RPATH ຍັງສາມາດນໍາໄປສູ່ຫ້ອງສະຫມຸດໄດ້ຖືກພົບເຫັນພາຍໃຕ້ຊື່ທີ່ບໍ່ແມ່ນ canonical (ຕົວຢ່າງ:
/usr/lib/openoffice.org/../lib/libssl.so.0.9.8 ແທນ /usr/lib/libssl.so.0.9.8)
ທີ່ບໍ່ກ່ຽວຂ້ອງກັບຊຸດໃດໆ, dpkg-shlibdeps ພະຍາຍາມເຮັດວຽກປະມານນີ້ໂດຍ
ພະຍາຍາມປະຕິເສດຊື່ canonical (ໃຊ້ ເສັ້ນທາງທີ່ແທ້ຈິງ(3)) ແຕ່ມັນອາດຈະບໍ່ສະເຫມີໄປ
ເຮັດວຽກ. ມັນດີທີ່ສຸດທີ່ຈະເຮັດຄວາມສະອາດ RPATH ຂອງຖານສອງເພື່ອຫຼີກເວັ້ນບັນຫາ.
ການໂທ dpkg-shlibdeps ໃນຮູບແບບ verbose (-v) ຈະໃຫ້ຂໍ້ມູນເພີ່ມເຕີມ
ກ່ຽວກັບບ່ອນທີ່ມັນພະຍາຍາມຊອກຫາຂໍ້ມູນການເພິ່ງພາອາໄສ. ນີ້ອາດຈະເປັນປະໂຫຍດຖ້າຫາກວ່າ
ທ່ານບໍ່ເຂົ້າໃຈວ່າເປັນຫຍັງມັນເຮັດໃຫ້ເຈົ້າມີຄວາມຜິດພາດນີ້.
ໃຊ້ dpkg-shlibdeps ອອນລາຍໂດຍໃຊ້ບໍລິການ onworks.net
