ฉันจะบังคับให้ 16.04 เพิ่มที่เก็บแม้ว่าจะไม่ถือว่าปลอดภัยเพียงพอหรือไม่


9

ฉันต้องการติดตั้ง Nvidia Cuda จริงๆ แต่ฉันได้รับข้อผิดพลาด

E: Failed to fetch file:/var/cuda-repo-7-5-local/Release  No Hash entry in Release file /var/lib/apt/lists/partial/_var_cuda-repo-7-5-local_Release which is considered strong enough for security purposes

ฉันสามารถบังคับให้ติดตั้งได้หรือไม่ ฉันจำเป็นต้องใช้จริงๆแม้ว่ามันจะไม่ปลอดภัย ฉันสงสัยว่า Nvidia จะทำการอัพเดต repo ให้ทำงานกับ 16.04 เร็ว ๆ นี้

คำตอบ:


9

ฉันมีปัญหาเดียวกันกับที่พยายามติดตั้ง CUDA 7.5 ใน Ubuntu 16.04 นี่เป็นเพราะรายการ SHA256 หรือ SHA512 ที่ขาดหายไปในแพ็คเกจ CUDA (ดังที่รายงานโดยทีม Debian ที่นี่ )

ดูเหมือนว่าเราไม่สามารถบังคับให้อัปเดต apt-get เพื่อดึงข้อมูล "ที่เก็บที่ไม่ปลอดภัย" แต่ฉันสามารถหลีกเลี่ยงปัญหานี้ได้อย่างสมบูรณ์โดยใช้ไฟล์. run นี่คือสิ่งที่ฉันทำทีละขั้นตอน:

  1. แทนที่จะดาวน์โหลดแพ็คเกจ. deb ให้ดาวน์โหลดไฟล์. run (จาก หน้านี้ )
  2. ติดตั้งคอมไพเลอร์ที่เข้ากันได้ (ดูเหมือนว่า cuda 7.5 เข้ากันไม่ได้กับคอมไพเลอร์เริ่มต้นของ Ubuntu 16.04):

    sudo apt-get install gcc-4.9 g++-4.9
    
  3. คุณอาจต้องติดตั้งแพ็คเกจเพิ่มเติม (ขึ้นอยู่กับการกำหนดค่าของคุณ):

    sudo apt-get install nvidia-modprobe freeglut3-dev libx11-dev libxmu-dev libxi-dev libglu1-mesa-dev
    
  4. เรียกใช้ไฟล์ run และทำตามคำแนะนำ:

    sudo sh cuda_7.5.18_linux.run
    

สิ่งนี้ใช้ได้ดีสำหรับฉัน (อย่าลืมติดตั้งไดรเวอร์ NVIDIA)

แก้ไข: หลังจากขั้นตอนที่ 2 และ 3 หากตัวติดตั้ง CUDA พยายามใช้ gcc 5.3.1 (ค่าเริ่มต้นสำหรับ Ubuntu 16.04) เป็นคอมไพเลอร์แทนที่จะเป็นเวอร์ชั่น 4.9 คุณสามารถลองลบรุ่น 5.3.1 ติดตั้ง CUDA แล้วติดตั้ง gcc ล่าสุด รุ่น


ฉันไม่ทราบว่าเป็นของใหม่หรือไม่ แต่เมื่อเห็นเวอร์ชัน gcc "ผิด" ของฉันสคริปต์การติดตั้งแนะนำให้เรียกใช้อีกครั้งด้วยการตั้งค่าสถานะ '--override' ดังนั้นฉันจึงวิ่งอีกครั้งsh cuda_7.5.18_linux.run --overrideและทุกอย่างดูเหมือนจะทำงานได้ดีในตอนนี้: ฉันสามารถเรียกใช้รหัส TensorFlow ง่ายๆโดยใช้บัตร NVidia ของฉัน การติดตั้งเกือบจะทันทีและฉันไม่คิดว่าจะรวบรวมอะไรเลย ฉันไม่แน่ใจว่าทำไมต้องคอมไพเลอร์ต้องระบุ ... ฉันอาจได้รับปัญหาในภายหลัง
toto2

ฉันควรระบุว่าฉันข้ามการติดตั้งไดรเวอร์เนื่องจากติดตั้งแล้ว ฉันไม่แน่ใจว่ามันสามารถข้ามการรวบรวมได้ไหม
toto2

ฉันคิดว่าไดรเวอร์ Nvidia ไม่ได้ติดตั้งโดยอัตโนมัติใน 16.04? ฉันยังขอให้ผู้พัฒนา Nvidia แก้ไขปัญหาของ Cuda .deb repository แต่พวกเขาบอกว่า Cuda 7.5 ยังไม่รองรับใน 16.04 ดูเหมือนแปลกเพราะใช้โปรแกรมติดตั้ง. sh มันใช้งานได้ดีและฉันสามารถใช้กับ tenorflow ได้ด้วย
Amine Horseman

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

5

เปลี่ยนของคุณ/var/cuda-repo-7-5-local/Releaseเป็นสิ่งต่อไปนี้:

Origin: NVIDIA
Label: NVIDIA CUDA
Architecture: repogenstagetemp
MD5Sum:
 51483bc34577facd49f0fbc8c396aea0            75379 Packages
 4ef963dfa4276be01db8e7bf7d8a4f12            21448 Packages.gz
SHA256:
 532b1bb3b392b9083de4445dab2639b36865d7df1f610aeef8961a3c6f304d8a            75379 Packages
 2e48cc13b6cc5856c9c6f628c6fe8088ef62ed664e9e0046fc72819269f7432c            21448 Packages.gz

เริ่มsudo apt-get updateละเว้นคำเตือนเกี่ยวกับลายเซ็นที่ไม่ถูกต้องและคุณเสร็จแล้ว

หากล้มเหลวให้แทนที่ผลรวม SHA256 ด้วยเอาต์พุตของ

sha256sum /var/cuda-repo-7-5-local/Packages.gz

และ

gunzip -c /var/cuda-repo-7-5-local/Packages.gz | sha256sum

2

ในปัจจุบันคุณสามารถใช้คำสั่งต่อไปนี้บน Ubuntu 16.04 เพื่อติดตั้ง CUDA Toolkit 7.5:

sudo apt install nvidia-cuda-toolkit

ขอบคุณสำหรับการแก้ไขดังนั้นคุณไม่จำเป็นต้อง cuda-dev?
SentinalBais

0

ฉันไม่สามารถแสดงความคิดเห็น แต่เพิ่มคำตอบของ @ Horse-man: คุณไม่จำเป็นต้องถอนการติดตั้ง / ติดตั้ง gcc ใหม่หากคุณติดตั้ง gcc 4.9 แล้ว สำหรับฉันมันก็เพียงพอแล้วที่จะ

sudo unlink /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc

gcc-4.9 ของฉันคือ 4.9.3 ซึ่งตัวติดตั้ง CUDA ไม่ชอบดังนั้นฉันจึงใช้มัน

sudo sh cuda_7.5.18_linux.run --override

และมันติดตั้งอย่างถูกต้อง


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.