วิธีบอก Ubuntu ว่าจะติดตั้งโปรแกรมที่ไหนและจะบอกตำแหน่งของโปรแกรมที่ติดตั้งไว้ได้อย่างไร


10

ตอนนี้ฉันยังใหม่กับ Ubuntu / Linux โดยใช้เซิร์ฟเวอร์ Ubuntu ในตอนนี้ แค่พยายามคิดอะไรบางอย่างพื้นฐาน

คุณจะบอกได้อย่างไรว่าคุณกำลังติดตั้งโปรแกรมไว้ที่ไหน ตัวอย่างเช่นฉันเพิ่งติดตั้งเครื่องมือค้นหาสฟิงซ์ด้วยการวาง tarball ที่ฉันดาวน์โหลดจากเว็บไซต์ของพวกเขาไปที่:

/home/sphinx

ไดเรกทอรี ฉันสร้างไดเรกทอรี sphinx เพื่อวาง tarball นั้นแล้วฉันก็ใช้คำสั่งเหล่านี้:

tar xvzf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1/
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

แล้วสิ่งเหล่านี้:

make
sudo make install

ตอนนี้ฉันมีไฟล์จำนวนมากนั่งอยู่ในไดเรกทอรีที่ฉันรันคำสั่งเหล่านี้ นี่เป็นการติดตั้ง Spynx ของฉันหรือติดตั้งที่อื่นหรือไม่

ใน windows หากคุณเรียกใช้โปรแกรมติดตั้ง (ไฟล์. exe) ที่ใดก็ได้โปรแกรมจะยังคงติดตั้งในไดเรกทอรี C: \ Program Files ทำสิ่งที่คล้ายกันกับลินุกซ์ที่ติดตั้งโปรแกรมทั้งหมดไว้ในที่ส่วนกลางหรือคุณสามารถติดตั้งโปรแกรมได้ทุกที่บนระบบ

คำถาม

  1. ฉันต้องการเก็บโปรแกรมที่ติดตั้งไว้ทั้งหมดไว้ในที่เดียวดังนั้นสิ่งที่ถูกต้องสำหรับเรื่องนี้ในแง่ของแนวปฏิบัติที่ดีที่สุด กล่าวอีกนัยหนึ่งลีนุกซ์เทียบเท่าของไฟล์ C: \ Program คืออะไร?

  2. และจะติดตั้งที่ตำแหน่งนี้ได้อย่างไรมันเป็นเรื่องของการวางลูกแก้วและเรียกใช้คำสั่งติดตั้งจากตำแหน่งนี้หรือไม่?

  3. จะเป็นอย่างไรถ้าฉันใช้ sudo apt-get เพื่อติดตั้งแพ็คเกจ ฉันจะชี้ไปยังตำแหน่งนี้เพื่อบอกให้ติดตั้งที่ฉลาดได้ตลอดเวลาได้อย่างไร

คำตอบ:


15

ทำสิ่งที่คล้ายกันใช้กับ linux ที่ติดตั้งโปรแกรมทั้งหมดในที่ส่วนกลาง

รายการเทียบเท่าการติดตั้ง Windows โดยประมาณใน Linux

  • \Windows = /bin
  • \Windows\System32= /libและ/sbin
  • \Program Files= /usr/binและ/usr/lib

ฉันต้องการเก็บโปรแกรมที่ติดตั้งไว้ทั้งหมดไว้ในที่เดียวดังนั้นสิ่งที่ถูกต้องสำหรับเรื่องนี้ในแง่ของแนวปฏิบัติที่ดีที่สุด กล่าวอีกนัยหนึ่งลีนุกซ์เทียบเท่าของไฟล์ C: \ Program คืออะไร?

ที่จะเป็นไดเรกทอรีภายใต้/usrโดยเฉพาะและ/usr/bin/usr/lib

และจะติดตั้งที่ตำแหน่งนี้ได้อย่างไรมันเป็นเรื่องของการวางลูกแก้วและเรียกใช้คำสั่งติดตั้งจากตำแหน่งนี้หรือไม่?

  • ไม่ ว่าคุณจะอยู่ที่ไหนเมื่อคุณเรียกใช้คำสั่งติดตั้งแทบไม่สำคัญ

  • โปรแกรมที่คุณติดตั้งผ่านทางapt-get(หรือaptitude) /usrเกือบตลอดเวลาจะจบลงอย่างเหมาะสม แต่โปรแกรมที่คุณรวบรวมจากแหล่งที่มาและmake installบ่อยขึ้นจะสิ้นสุดใน/usr/local/bin, /usr/local/libฯลฯ และคุณอาจจะมีปัญหาเกี่ยวกับการว่าตั้งแต่เส้นทางที่ใช้ในการติดตั้ง Debian / Ubuntu เป็นและไม่ได้/usr/usr/local

  • ./configure --prefix=/usrเมื่อรวบรวมจากแหล่งเพิ่มสวิตช์นี้เพื่อกำหนดค่า: วิธีนี้เมื่อคุณmake installไฟล์จะสิ้นสุดในไดเรกทอรีที่เหมาะสม

  • ดูที่checkinstallโปรแกรมซึ่งติดตามไฟล์ที่รวบรวมจากการติดตั้งซอร์สสร้างไฟล์ deb และอนุญาตให้ถอนการติดตั้ง / ติดตั้งใหม่ได้ง่าย

จะเป็นอย่างไรถ้าฉันใช้ sudo apt-get เพื่อติดตั้งแพ็คเกจ ฉันจะชี้ไปยังตำแหน่งนี้เพื่อบอกให้ติดตั้งที่ฉลาดได้ตลอดเวลาได้อย่างไร

apt-get/ dpkgดูแลสิ่งนี้โดยอัตโนมัติ คุณสามารถใช้dpkg -L name-of-packageเพื่อดูไฟล์ทั้งหมดที่ติดตั้งโดยแพ็คเกจและตำแหน่งที่ติดตั้ง


ขอบคุณสำหรับคำตอบโดยละเอียดเพียงคำถามเดียว เนื่องจากคุณพูดว่า "ไม่ว่าคุณจะอยู่ที่ไหนเมื่อคุณเรียกใช้คำสั่งติดตั้งแทบจะไม่สำคัญเลย" หมายความว่าตอนนี้ฉันติดตั้งโปรแกรมแล้วฉันสามารถลบโฟลเดอร์สฟิงซ์ได้อย่างปลอดภัยใน / home / sphinx / ที่สกัดจาก tarball และรันการติดตั้งและทำคำสั่งใน? นี่เป็นสิ่งที่เทียบเท่ากับตัวติดตั้งที่ฉันเคยใช้ในการติดตั้งโปรแกรมและตอนนี้ไม่มีประโยชน์อะไรเลยเหรอ?
JakeRow123

1
ใช่คุณสามารถลบโฟลเดอร์ที่ดึงออกมาจาก tarball - เป็นหลักเหมือนกับโฟลเดอร์ "temp" ที่ตัวติดตั้งถูกแตกไปและตอนนี้ก็ไม่มีประโยชน์ นั่นเป็นคำถามที่ดีฉันจะแก้ไขคำตอบเพื่อรวมข้อมูลนี้
ish

คุณทำได้ แต่คุณจะมีปัญหาในการถอนการติดตั้งด้วย 'ถอนการติดตั้ง' ใน Debian / Ubuntu คุณไม่ควรติดตั้งซอฟต์แวร์ในส่วนนำหน้า / หรือ / usr คุณควรใช้ / usr / local ทำไมเพราะ / usr / local ถูกสร้างขึ้นสำหรับผู้ดูแลระบบนั่นคือคุณ JakeRow123 เพื่อติดตั้งโปรแกรมของตัวเอง / และ / usr ใช้สำหรับแพ็คเกจ Debian เท่านั้น หากคุณติดตั้งที่นั่น chanses มีขนาดใหญ่ที่คุณจะได้รับปัญหา ดังนั้นให้ใช้สวิตช์ '--prefix = / usr / local' เพื่อกำหนดค่าคำสั่งเมื่อคุณคอมไพล์คุณเอง จากนั้นทำ sudo make install 'จะติดตั้งโปรแกรมที่นั่น
Anders

@Anders make uninstallไม่ใช่คุณสมบัติมาตรฐานและไม่พบในแหล่งโปรแกรมมากมาย นอกจากนี้/usr/localมักจะไม่ได้อยู่ในเส้นทางบน Ubuntu และอาจทำให้เกิดปัญหาเมื่อพยายามเรียกใช้โปรแกรมหรือพยายามรวบรวม (เนื่องจากมีอยู่ใน/usr/local)
ish

คุณไม่ควรติดตั้งซอฟต์แวร์ในตำแหน่งที่ไม่ถูกต้องเช่นใต้ / usr และไม่ถูกที่เช่น / usr / local คุณควรแก้ไขข้อผิดพลาดด้วย PATH หากคอมพิวเตอร์ / ผู้ใช้ไม่ได้ตั้งค่าอย่างถูกต้อง การติดตั้งภายใต้ / หรือ / usr จะทำให้คุณมีปัญหา เชื่อฉันในเรื่องนี้ เคยไปที่นั่นและทำอย่างนั้น มันไม่สนุกเลย เลย บางโปรแกรมทั้งหมดมี autoconfig เมื่อคุณตั้งค่าด้วยคำสั่ง configure จะได้รับการถอนการติดตั้ง คนอื่น ๆ ที่ไม่มีที่ไม่เป็นประโยชน์และควรรายงานข้อผิดพลาด ...
Anders

4

โปรแกรมมักจะติดตั้งในสองสามไดเรกทอรีภายใต้หนึ่งบนไดเรกทอรีที่เรียกว่าคำนำหน้า ซึ่งด้านบนไดเรกทอรีที่จะใช้ขึ้นอยู่กับที่มีการติดตั้งเพื่อวัตถุประสงค์แม่มดและผู้ที่จะจัดการซอฟต์แวร์

คำนำหน้า/usrใช้ซอฟต์แวร์ที่จัดทำโดยผู้จำหน่ายของคุณ คุณไม่ควรติดตั้งซอฟต์แวร์อื่นใดที่นั่นเพราะจะทำให้เกิดความสับสนในการกระจายเมื่อติดตั้งและอัปเกรดซอฟต์แวร์ที่บรรจุโดยการกระจาย ดังนั้นโปรดอย่าติดตั้งซอฟต์แวร์ที่รวบรวมของคุณเองที่นั่น นั่นไม่ใช่ความคิดที่ดีเว้นแต่คุณจะรู้ว่าคุณทำอะไรจริงๆ และถ้าคุณไม่ใช่นักพัฒนา Debian หรือ Ubunut คุณก็ไม่ได้ทำ ฉันจะไม่ทำอย่างนั้นต่อไป

สำหรับซอฟต์แวร์เชิงพาณิชย์/optจะใช้คำนำหน้า มันสงวนไว้สำหรับพวกเขาที่จะรบกวนน้อยที่สุดกับการกระจายและผู้ดูแลระบบท้องถิ่น

สำหรับซอฟแวร์การติดตั้งดูแลระบบสำหรับผู้ใช้ทั้งหมดคำนำหน้า/usr/localถูกนำมาใช้ มีวิธีการที่แตกต่างจากการติดตั้งเชิงพาณิชย์หรือการจัดจำหน่ายและจะไม่รบกวนพวกเขา ดังนั้นในฐานะผู้ดูแลระบบคุณใช้มัน (ถ้าคุณมีสิทธิ์ใช้งานรูทคุณเป็นผู้ดูแลระบบ)

หากคุณเป็นผู้ติดตั้งซอฟต์แวร์ใช้สามัญสำหรับตัวคุณเองคุณสามารถใช้ไดเรกทอรีบ้านของคุณเป็นคำนำหน้าโดยใช้--prefixตัวเลือกที่จะconfigureมีไดเรกทอรีคำนำหน้า " ~/" $HOME/หรือ ฉันใช้มันมากตอนเป็นนักเรียน :-)

ซอฟแวร์มักจะทำสิ่งที่ถูกต้องเมื่อคุณดำเนินการconfigureกับตัวเลือกที่มีค่าที่ถูกต้องแล้ว--prefixmake; make install

ภายใต้คำนำหน้าใด ๆ เหล่านี้คุณมักจะพบไดเรกทอรีเหล่านี้ในการติดตั้งมาตรฐาน

  • bin - โปรแกรมปฏิบัติการไบนารี
  • sbin - ระบบไบนารีซึ่งโดยทั่วไปไม่ควรดำเนินการโดยผู้ใช้ทั่วไป
  • man - หน้าคู่มือสำหรับโปรแกรมไลบรารีและไฟล์กำหนดค่าเป็นต้น
  • etc - ไฟล์กำหนดค่าที่มีค่าเริ่มต้นสำหรับซอฟต์แวร์
  • lib - ไลบรารีโปรแกรมและไฟล์ข้อมูลที่ขึ้นอยู่กับสถาปัตยกรรม (เช่น CPU) ในคอมพิวเตอร์ของคุณ
  • share - ไฟล์ข้อมูลที่ไม่แตกต่างกันในสถาปัตยกรรมที่แตกต่างกันและสามารถแชร์ระหว่างคอมพิวเตอร์ที่แตกต่างกัน
  • var- ไดเร็กทอรีที่มีข้อมูลที่เปลี่ยนแปลงระหว่างการทำงานของโปรแกรม เช่นไฟล์บันทึกเป็นต้น

ไดเรกทอรีเหล่านั้นส่วนใหญ่สามารถใช้กับระบบไฟล์ที่ป้องกันการเขียนเพื่อเพิ่มความปลอดภัย สิ่งเดียวที่ผู้ใช้จำเป็นต้องเขียนถึงคือvar/ไดเรกทอรี เมื่อซอฟต์แวร์มีการอัพเดทไดเรกทอรีเหล่านี้อย่างชัดเจน (?) จำเป็นต้องมีสิทธิ์ในการเขียน ที่สามารถทำได้ด้วย remount พร้อมสิทธิ์การเขียนระหว่างการติดตั้งจากนั้นติดตั้งใหม่พร้อมอ่านอย่างเดียวหลังการติดตั้ง แต่นี่คือขั้นสูงและฉันให้มันเป็นเพียงตัวอย่างของการจัดการแพคเกจขั้นสูง

นอกจากนี้ยังมีบางไดเรกทอรีโดยตรงภายใต้/(ไดเรกทอรีราก) ซึ่งไม่ได้อยู่ภายใต้คำนำหน้าอื่น ๆ เช่น/dev, /tmp, /procและ/srv(สำหรับเซิร์ฟเวอร์ไดเรกทอรีข้อมูล แต่พวกเขามักจะอยู่ภายใต้/var/libหรือ/var/wwwและไดเรกทอรีเช่นนั้นดังนั้นคุณต้องกำหนดค่าการเปลี่ยนแปลง ใช้ไดเรกทอรีนี้ฉันขอแนะนำให้คุณทำเช่นนั้นเมื่อคุณใช้เซิร์ฟเวอร์ใช้/var/สำหรับทดสอบการติดตั้งมาตรฐานเท่านั้น)

  1. Linux ไม่ใช่ MS Windows มีหลายที่สำหรับวางโปรแกรมที่คุณติดตั้ง ขึ้นอยู่กับว่าใครติดตั้งและใคร อ่านในโพสต์ของฉัน แจ้งให้ทราบ RedHat ใช้เป็นใช้/usr Debian / Ubuntu /usr/localเรียนรู้การกระจายของคุณ
  2. โปรแกรมที่ต่างกันมีวิธีการติดตั้งที่แตกต่างกัน มีประโยชน์สำหรับโปรแกรมที่ใช้--prefix configureวิธีที่ดีที่สุดที่จะรู้ก็คืออ่านREADME.txtไฟล์หรืออะไรทำนองนั้นซึ่งคุณอาจมีให้ในไฟล์เก็บถาวร tar ไฟล์ tar สามารถแตกออกได้ทุกที่เช่นโฮมไดเร็กตอรี่ของคุณ หลังจากขั้นตอนการติดตั้งเสร็จสิ้นคุณสามารถลบไฟล์เก็บถาวร tar ที่แยกออกได้หากคุณมีพื้นที่เก็บข้อมูลไม่เพียงพอ แต่อย่าทำอย่างนั้นก่อนเว้นแต่คุณจะได้ทดสอบการติดตั้งอย่างถูกต้อง
  3. โปรแกรมที่ติดตั้งพร้อมapt-getหรือaptitudeติดตั้งอยู่เสมอในตำแหน่งที่เหมาะสมสำหรับการแจกจ่าย คุณไม่สามารถเปลี่ยนสถานที่นั้นได้

2

เมื่อคุณติดตั้งโปรแกรมจากที่เก็บโดยใช้การติดตั้งปกติมันจะติดตั้งในตำแหน่งที่ถูกต้องสร้างไฟล์การกำหนดค่าในตำแหน่งที่ถูกต้อง (คล้ายกับการทำงานของ Windows) และสร้างรายการเมนูโดยอัตโนมัติ

เมื่อคุณดาวน์โหลดไฟล์ (ไม่เป็นที่ต้องการ แต่มักจำเป็นเมื่อแอพไม่ได้อยู่ในที่เก็บ) สิ่งแรกที่คุณทำคือเรียกใช้ tar เทียบเท่ากับ unzip บน Windows สิ่งนี้จะสร้างไฟล์ที่คุณน่าจะเห็นมากที่สุด

จากนั้นเมื่อคุณเรียกใช้ทำการติดตั้งซึ่งโดยปกติแล้วจะวางผลลัพธ์ไว้ในตำแหน่งที่ถูกต้องอาจสร้างเมนู แต่จะไม่ลบไฟล์ที่ไม่ติดไฟ คุณสามารถทำได้ แต่คุณอาจต้องการบันทึกไว้ชั่วคราวในกรณี

นี่คือบทความที่น่าสนใจเกี่ยวกับโครงสร้าง Debian ไดเรกทอรี


บทความที่ดียกเว้นว่ามันไม่มีการอ้างอิงถึง / usr / local ใด ๆ ที่คุณติดตั้งซอฟต์แวร์ของคุณเองเพื่อไม่ขัดแย้งกับซอฟต์แวร์ที่ติดตั้งโดยระบบและคุณแจกจ่ายแพคเกจ (เช่น Ubuntu) ในการติดตั้งซอฟต์แวร์ของคุณเองภายใต้ / หรือ / usr คือการถามปัญหาปัญหาที่อาจเป็นเพียงการแก้ปัญหาคือติดตั้งระบบใหม่อีกครั้ง ...
Anders
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.