Vagrant Up и раздражающий запрос пароля NFS

Предупреждение глоток>

Это - список случайных книг разнообразного качества. В представлении некоторых людей (с некоторым выравниванием), это больше не список рекомендуемых книг. Некоторые перечисленные книги содержат очевидно неправильные операторы или преподают неправильные/вредные методы. Люди, которые знают о таких книгах, могут отредактировать этот ответ, чтобы помочь улучшить его. См. , книжный список C вышел из строя. Что сделать с ним? , и также Удаленный вопрос контролируют 2018 . глоток>

Ссылка (Все Уровни)

  • Язык программирования C (2-й Выпуск) - Brian W. Kernighan и Dennis M. Ritchie (1988). Все еще хорошее, короткое, но полное введение в C (C90, не C99 или более поздние версии), записанный изобретателем C. Однако язык изменился, и хороший стиль C разработал за прошлые 25 лет, и существуют части книги, которые показывают ее возраст.

  • C: Справочник (5-й Выпуск) - Samuel P. Harbison и Guy R. Steele (2002). Превосходный справочник по C, до и включая C99. Это не учебное руководство, и вероятно негодный к новичкам. Замечательно, если необходимо записать компилятор для C, как авторы должны были сделать, когда они запустили.

  • Карманная Ссылка C (O'Reilly) - Peter Prinz и Ulla Kirch-Prinz (2002).

  • comp.lang.c FAQ - Steve Summit. Веб-сайт с ответами на многие вопросы о C.

  • Различные версии стандартов языка C могут быть найдены здесь . Существует интерактивная версия проект C11 стандарта .

  • новый стандарт C - аннотируемая ссылка (Свободный PDF) - Derek M. Jones (2009). "Новый стандарт", упомянутый, является старым стандартом C99, а не C11.

  • Объяснение для Стандарта C99 .

Новичок

Промежуточное звено

  • Объектно-ориентированное программирование с ANSI-C (Свободный PDF) - Аксель-Tobias Schreiner (1993). Код становится немного замысловатым. Если Вы хотите C++, используйте C++.

  • Интерфейсы C и Реализации - David R. Hanson (1997). Предоставляет информацию о том, как определить границу между интерфейсом и реализацией в C универсальным и допускающим повторное использование способом. Это также демонстрирует этот принцип путем применения его к реализации общих механизмов и структур данных в C, таких как списки, наборы, исключения, обработка строк, средства выделения памяти, и т.д. В основном Hanson взял весь код, который он написал как часть создания значок и lcc и вытащил лучшие биты в форме, которую другие люди могли снова использовать для их собственных проектов. Это - модель хорошего C, программирующего использующий методы современного дизайна (включая абстракцию данных Liskov), показывая, как организовать проект рака как набор полезных библиотек.

  • Книга Загадки C - Alan R. Feuer (1998)

  • Стандартная библиотека для C - P.J. Plauger (1992). Это содержит полный исходный код к реализации стандартной библиотеки C89, наряду с обширной дискуссией о дизайне и почему код разработан как показано.

  • 21-й век C: C Подсказки из Новой Школы - Ben Klemens (2012). В дополнение к языку C книга объясняет gdb, valgrind, автоинструменты и мерзавца. Комментарии к стилю найдены в последней части (Глава 6 и вне).

  • Алгоритмы в C - Robert Sedgewick (1997). Дает Вам реальное схватывание реализации алгоритмов в C. Очень ясный и ясный; вероятно, заставит Вас хотеть выбросить все свои другие книги алгоритмов и сохранить этого.

  • Указатели на C - Kenneth Reek (1997).

  • Указатели в C - Naveen Toppo и Hrishikesh Dewan (2013).

  • Решение задач и Проектирование программы в C (6-й Выпуск) - Jeri R. Hanly и Elliot B. Koffman (2009).

  • Структуры данных - Усовершенствованный Подход Используя C - Jeffrey Esakov и Tom Weiss (1989).

  • C, Развязанный - Richard Heathfield, Lawrence Kirby, и др. (2000). Не идеальный, но это стоит промежуточных программистов, практикующих проблемы, записанные в этой книге. Это - хороший подобный поваренной книге подход, предложенный comp.lang.c участниками.

  • современный C — Jens Gustedt (2017). Покрытия C на 5 уровнях (обнаружение, знакомство, познание, опыт, стремление) с начала C к усовершенствованному C. Это покрывает потоки C11 и атомарный доступ, который делают немного других книг и не все компиляторы распознают во всех средах.

Эксперт

Некатегоризированный

  • Существенный C (Свободный PDF) - Nick Parlante (2003). Обратите внимание, что это описывает язык C90 в нескольких точках (, например, , в обсуждении // комментарии и размещение объявлений переменной в произвольных точках в коде), таким образом, это нужно рассматривать с некоторой осторожностью.

  • C Программирование часто задаваемых вопросов: Часто Задаваемые Вопросы - Steve Summit (1995). Это - книга веб-сайта, перечисленного ранее. Это не покрывает C99 или более поздние стандарты.

  • C вкратце - Peter Prinz и Tony Crawford (2005). Превосходная книга, если Вам нужна ссылка для C99.

  • Функциональный C - Pieter Hartel и Henk Muller (1997). Преподает современные практики, которые неоценимы для низкоуровневого программирования с параллелизмом и модульным принципом в памяти.

  • Практика Программирования - Brian W. Kernighan и Rob Pike (1999). Очень хорошая книга для сопровождения K& R. Это использует C++ и Java также.

  • Прерывания C и Ловушки A. Koenig (1989). Очень хороший, но стиль C предшествует стандарту C, который делает его менее рекомендуемым в эти дни.

    Некоторые привели доводы в пользу удаления 'Прерываний и Ловушек' из этого списка, потому что это захватило некоторых людей в делание ошибок; другие продолжают приводить доводы в пользу его включения. Возможно, это должно рассматриваться как 'опытная' книга, потому что это требует, чтобы умеренно обширные знания C поняли то, что изменяется, так как это было опубликовано.

  • Сборка Ваш Собственный Lisp — Daniel Holden (2014). Приятный способ изучить C.

  • MISRA-C - промышленный стандарт, опубликованный и сохраняемый Ассоциацией Надежности программного обеспечения Автомобильной промышленности. Покрытия C89 и C99.

    , Хотя это не книга как таковая, многие программисты рекомендуют читать и реализовать как можно больше ее. MISRA-C был первоначально предназначен как инструкции для важных приложений безопасности, в частности, но он относится к какой-либо области применения, где стабильный, код C без ошибок желаем (кто не хочет меньшего количества ошибок?). MISRA-C становится фактическим стандартом в целой встроенной промышленности и становится все больше популярным даже в других ответвлениях программирования. Существует (по крайней мере) три публикации стандарта (1998, 2004, и текущая версия с 2012). Существует также документ Инструкций по Соответствию MISRA с 2016 и Поправка 1 MISRA C:2012 — Дополнительные Инструкции по безопасности для MISRA C:2012 (опубликованы в апреле 2016).
    Примечание, что часть резкой критики в правилах MISRA не соответствует каждому контексту. Например, направляющее 4.12 динамическое выделение памяти "Состояний не должно использоваться". Это является соответствующим во встроенных системах, для которых разработаны правила MISRA; это не является соответствующим везде. (Компиляторы, например, обычно используют динамическое выделение памяти для вещей как таблицы символов, и обходиться без динамического выделения памяти было бы трудным, если не нелепый.)

  • Заархивированные списки ACCU-рассмотренных книг по [1 147] C Новичка (116 заголовков) с 2007 и Усовершенствованный C (76 заголовков) с 2008. Большинство из них не надеется больше быть на основном сайте, и Вы не можете просмотреть это предметом так или иначе.

Предупреждения

опасаться книг, записанных [1 149] Herbert Schildt . В частности, необходимо избегать C: Полная Ссылка (4-й Выпуск, 2000), известный в некоторых кругах как C: Полная Ерунда.

Также не используют книгу , Позволяют Нам C (16 th глоток> Выпуск, 2017) Yashwant Kanetkar. Многие люди просматривают его как устаревшую книгу, которая преподает Turbo C и имеет много устаревшего, вводящего в заблуждение и неправильного материала. Например, страница 137 обсуждает ожидаемый вывод от printf("%d %d %d\n", a, ++a, a++) и не категоризирует его как [1 152] неопределенное поведение , как он должен.

Изучают C Твердый Путь (2015) Zed Shaw. Книга со смешанными обзорами. критический анализ А этой книги Tim Hentenaar:

Для суммирования моих представлений, которые размечаются ниже, автор представляет материал значительно упрощенным и вводящим в заблуждение способом, целый корпус является связанной путаницей, и некоторые мнения и исследования, которые он предлагает, являются просто неправильными. Я попытался просмотреть эту книгу через глаза новичка, но к сожалению я смещаюсь написанием кода лет опыта в C. Для меня очевидно, что у или автора есть дефектное понимание C, или он сознательно упрощает до такой степени, когда, он на самом деле вводит в заблуждение читателя (намеренно или иначе.)

"Учатся на горьком опыте, что C" не является книгой, которую я мог рекомендовать кому-то, кто и учится программировать и изучает C. Если Вы уже - компетентный программист на некотором другом связанном языке, то он представляет интересную и необычную выставку на C, хотя у меня есть резервирование о частях книги. Jonathan Leffler

Устаревший

, Другие участники , не обязательно зачисленный в истории пересмотра, включают:
Alex Lockwood , Ben Jackson , Пузыри , когти , coledot, Dana Robinson , Daniel Holden , Преобразователь Dervin , dwc, Erci How, Garen, haziz, Johan Bezem , Jonathan Leffler , Joshua Partogi , Lucas, Lundin, Matt K. , mossplix, Matthieu M. , midor, Nietzche-jou, Norman Ramsey , r3st0r3, ridthyself, Robert S. Barnes , Steve Summit , Tim Ring , Tony Bai , VMAtm

17
задан 07.05.2020, 22:43

5 ответов

Официальные документы Vagrant теперь охватывают это: https://www.vagrantup.com/docs/synced-folders/nfs.html#root-privilege-requirement

Вам нужно чтобы добавить записи в файл /etc/sudoers и способ редактирования, то есть набрать его на терминале: sudo visudo

Введите свой пароль, и вы редактируете файл. Вы можете вставить эти строки ниже (в зависимости от того, используете ли вы Vagrant в OS X или Linux.

Если вы не знакомы с vim , в котором он открывается, эта страница помогла . По сути, скопируйте соответствующий блок текста ниже. Затем, в visudo, перейдите к месту, куда вы хотите вставить текст в файл (конец файла в порядке), и нажмите «i ", чтобы перейти в режим вставки. CMD + V, чтобы вставить ваш текст. Затем нажмите ESC, затем введите :w, чтобы сохранить изменения, а затем :q, чтобы выйти.

Начиная с версии 1.7 .3 , файл sudoers в OS X должен иметь следующие записи:

Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE

И в Linux должны быть следующие записи:

Cmnd_Alias VAGRANT_EXPORTS_CHOWN = /bin/chown 0\:0 /tmp/*
Cmnd_Alias VAGRANT_EXPORTS_MV = /bin/mv -f /tmp/* /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /etc/init.d/nfs-kernel-server status
Cmnd_Alias VAGRANT_NFSD_START = /etc/init.d/nfs-kernel-server start
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
%sudo ALL=(root) NOPASSWD: VAGRANT_EXPORTS_CHOWN, VAGRANT_EXPORTS_MV, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START, VAGRANT_NFSD_APPLY

Обратите внимание, что они отличаются от одной версии Бродячим к другому, поэтому вышесказанное может быть устаревшим. Важно то, что документы теперь охватывают его.

32
ответ дан 07.05.2020, 22:44
  • 1
    Вместо того, чтобы редактировать основной sudoers файл я рекомендую добавить это как новый файл в /etc/sudoers.d для предотвращения будущих конфликтов при обновлении ОС. На Ubuntu: sudo visudo -f /etc/sudoers.d/vagrant-nfs или OSX: sudo visudo -f /private/etc/sudoers.d/vagrant-nfs – Evan Kwan 07.05.2020, 22:44
  • 2
    Странно это не работает на меня, даже при том, что /var/log/auth.log только содержит команды, которые перечислены там, и я могу вручную проверить, что sudo полномочия работают. – MANOJ AP 07.05.2020, 22:45
  • 3
    Это помогло, спасибо! Просто быстрый комментарий к Вашему совету двигаться энергия редактор: Просто откройте visudo с sudo EDITOR=nano visudo команда, которая позволяет Вам обходить энергия полностью. – rotoava 07.05.2020, 22:45

Для тех, кто делает это для OSX (я на MacOS Sierra версии 10.12.6), у меня были трудности с разрешениями даже после добавления этих строк. Это сообщение действительно помогло:

https://github.com/cogitatio/vagrant-hostsupdater/issues/50

По сути, это тот факт, что у вас нет установленных прав доступа для этой папки. Итак, вам нужно запустить:

sudo chmod +a "$USER allow write,append" /etc/hosts
2
ответ дан 07.05.2020, 22:43

TL & DR: добавить следующее override.vm.synced_folder ".", "/ Vagrant", отключено: true

Rational: по умолчанию Vagrant пытается обнаружить любую NFS / SMB папки. Хотя я могу понять, почему разработчики добавили эту функцию, для моего варианта использования это очень раздражает. Решение состоит в том, чтобы просто отключить синхронизацию папок NFS.

Это можно сделать, переопределив опцию синхронизированной папки VM. На ваше рассмотрение я приложил следующую конфигурацию для цифрового океана, чтобы вы могли увидеть всю конфигурацию.

 config.vm.define "droplet1" do |config|
 config.vm.provider :digital_ocean do |provider, override|
    override.vm.synced_folder ".", "/vagrant", disabled: true
        override.ssh.private_key_path = '~/.ssh/id_rsa'
        override.vm.box = 'digital_ocean'=
        override.vm.box_url = "https://github.com/devopsgroup-io/vagrant- 
 digitalocean/raw/master/box/digital_ocean.box"
    override.nfs.functional = false
            provider.image = 'ubuntu-14-04-x64'
            provider.region = 'nyc1'
            provider.size = '512mb'
       end
      end
    end
0
ответ дан 07.05.2020, 22:45
  • 1
    Из-за Вашего " TL& DR" Вы заслуживаете всего upvotes, который можно получить, но истина является Вашим ответом didn' t помогают мне. Не потому что it' s не хороший, но проблема я имел, немного отличалось от того, что спросили во-первых. Однако, спасибо за Вас хорошее отношение.:) – Larry Cai 07.05.2020, 22:45
  • 2
    Должен любить " TL& DR" люди! Аплодисменты. – Brady Trainor 07.05.2020, 22:45
  • 3
    Спасибо! Don' t забывают к upvote;) – Jay Kumar 07.05.2020, 22:45

Точные команды могут меняться между версиями Vagrant, поэтому невозможно перечислить те, которые будут работать всегда.

В любом случае, правила sudoers в , эта суть должна быть еще довольно близка. Проверьте /var/log/auth.log, показывает ли он фактические команды для вашей версии Vagrant и адаптируйте правила соответствующим образом.

2
ответ дан 07.05.2020, 22:45
  • 1
    Спасибо, но я попробовал это решение a давно - это - doesn' t работают на меня. – Mayas 07.05.2020, 22:45

добавив , nfs_export: false в конце config.vm.synced_folder -линий в Vagrantfile, решил это для меня.

Если у вас уже есть работающий nfs-config, и вам не нужен Vagrant, чтобы перезаписывать его при каждом запуске, вы можете просто отключить запись в файл экспорта.

Это также решает проблему коллизий, если у вас есть более одного Vagrant, пытающегося получить доступ к одной и той же папке, например, у вас есть 2 почти идентичных Vagrant, один работает php 5.6 и один работает php 7.2.

1
ответ дан 07.05.2020, 22:46

Теги

Похожие вопросы