ฉันสามารถทำให้ตัวจัดการแพ็กเกจแก้ไขข้อขัดแย้งเช่นโดยเปลี่ยนชื่อไบนารี ( เช่น parallel → gparallel ) หรือติดตั้งไปยังตำแหน่งอื่น ( เช่น / usr / → / usr / local / ) ได้หรือไม่
ฉันสามารถทำให้ตัวจัดการแพ็กเกจแก้ไขข้อขัดแย้งเช่นโดยเปลี่ยนชื่อไบนารี ( เช่น parallel → gparallel ) หรือติดตั้งไปยังตำแหน่งอื่น ( เช่น / usr / → / usr / local / ) ได้หรือไม่
คำตอบ:
สำหรับUbuntu v17.04 ("Zesty Zapus")และDebian v9 ("Stretch") , ( 2017หรือใหม่กว่า) หรือ distros ตามเวอร์ชันเหล่านั้นโปรดอ่านคำตอบของ Bryan Larsen ก่อนซึ่งควรจะเพียงพอ
สำหรับรุ่นก่อนปี 2560อ่านต่อ ...
ใช้dpkg
เพื่อบังคับให้ติดตั้ง ขนานรับพร้อมอย่างกับmoreutils - มันเปลี่ยนชื่อmoreutils ' parallel
util parallel.moreutils
ไป เมื่อติดตั้งจะทำทั้งสองโปรแกรม ( GNUและmoreutils ) ที่มีอยู่
NB: หากสคริปต์ผู้ใช้ใด ๆเรียกmoreutilsเก่า parallel
เปลี่ยนสคริปต์เหล่านั้นเพื่อใช้ชื่ออีกต่อไป
รายละเอียด: ดึงแพคเกจแบบขนาน (โดยไม่ต้องติดตั้งหรือลบอะไรเลย) จากนั้นใช้compgen
( bash
คำสั่งภายใน) ค้นหาแพ็กเกจแบบขนานในไฟล์เก็บถาวร หากมีมากกว่าหนึ่งใช้ล่าสุด บังคับให้แพคเกจนั้นติดตั้งแม้จะมีข้อขัดแย้ง
apt-get --assume-yes --download-only install parallel &&
ls --sort=version $(compgen -f /var/cache/apt/archives/parallel) |
tail -n 1 | xargs dpkg --force-conflicts -i
วิธีดูความแตกต่างที่เกิดขึ้น:
dpkg-divert --list 'par*'
เอาท์พุท:
diversion of /usr/share/man/man1/parallel.1.gz to /usr/share/man/man1/parallel.moreutils.1.gz by parallel
diversion of /usr/bin/parallel to /usr/bin/parallel.moreutils by parallel
ดูว่ามีไบนารีที่สามารถใช้งานได้ทั้งสองแบบ:
compgen -c parallel | xargs which | xargs ls -l
เอาท์พุท:
-rwxr-xr-x 1 root root 240814 Oct 31 2014 /usr/bin/parallel
-rwxr-xr-x 1 root root 10592 Jul 21 2015 /usr/bin/parallel.moreutils
apt-get install
จะบ่นเกี่ยวกับความขัดแย้งดังที่คุณเขียนไว้ก่อนหน้านี้
/var/lib/dpkg/status
เพื่อลบข้อขัดแย้ง ค้นหา "Conflicts: moreutils" ลบบรรทัดนี้ ที่มา: superuser.com/a/815371/99136 ดูเหมือนว่าจะใช้งานได้ในตอนนี้ แต่ฉันกลัวว่าการอัปเดตแพคเกจ "ขนาน" จะทำให้สิ่งต่าง ๆ เสียหายอีกครั้ง
apt-get install
เตือนว่าparallel
แพ็คเกจจะไม่ได้รับการอัพเกรด แต่apt-cache policy
จะไม่แสดงเวอร์ชั่นที่แตกต่างกันและapt-get dist-upgrade
จะไม่แตะต้องparallel
แพ็คเกจ ดังนั้นการอัพเกรดparallel
ดูเหมือนจะเป็นกระบวนการที่ต้องเริ่มต้นอย่างมีสติ สบายดีกับฉัน
หากคุณติดตั้งแบบขนานและmoreutilsคุณได้รับGNU parallel
เป็น/usr/bin/parallel
และmoreutil 's เป็นparallel
/usr/bin/parallel.moreutils
ถ้าคุณติดตั้งmoreutils/usr/bin/parallel
ก็ให้
หากคุณใช้UbuntuหรือDebianรุ่นเก่ากว่าคุณสามารถดาวน์โหลดและติดตั้ง. deb จากเวอร์ชั่นที่ใหม่กว่า: ติดตั้งและใช้งานได้ดี
ฉันเดาเส้นทางที่ง่ายที่สุดคือการติดตั้งแพ็คเกจใดแพ็คเกจหนึ่งตามปกติ (เช่นparallel
) และแยกไฟล์อื่นไปยังเส้นทางที่กำหนดเอง:
$ sudo apt-get install libio-pty-perl libipc-run-perl
$ sudo apt-get download moreutils
$ dpkg -x moreutils_0.54-1_amd64.deb /tmp/moreutils
$ cd /tmp/moreutils/usr/bin/
GNU Parallels เป็นเพียงสคริปต์ Perl ดังนั้นคุณสามารถคัดลอกมันที่ไหนก็ได้ที่มีประโยชน์ (เช่น / usr / local / bin / gnu-parallel)
(เพียงตรวจสอบการพึ่งพา Perl)