Freebsd

文件名太長 mount_nfs

  • May 8, 2018

我有一個看起來像這樣的 FreeBSD Vagrant 盒子:

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

 config.vm.box = "chef/freebsd-10.0"

 config.vm.network "private_network", ip: "10.0.1.10"
 config.vm.synced_folder '.', '/vagrant', :nfs => true, id: "vagrant-root"

end

但是,如果它嘗試在名稱過長的目錄路徑中執行,則會失敗:

==> default: Mounting NFS shared folders...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

mount -t nfs '10.0.1.1:/Users/petersouter/projects/reallylongpathnameover88characterssothatmountfswillfail12345678910111213141516' '/vagrant'

Stdout from the command:



Stderr from the command:

mount_nfs: 10.0.1.1:/Users/petersouter/projects/reallylongpathnameover88characterssothatmountfswillfail12345678910111213141516: File name too long

除了將目錄複製到名稱較短的目錄之外,還有其他方法可以解決此問題嗎?我可以更新 FreeBSD 的東西,使它可以接受更大的文件名嗎?

FreeBSD 將掛載點名稱的長度限制為 88 個字元。其原因有些深奧,但與在頁面邊界上對齊記憶體結構有關

$$ 1 $$. 您可以修補安裝二進製文件以使用更大的限製或將其全部刪除

$$ 2 $$但這可能會導致崩潰。我已經成功地刪除了檢查(也適用於帶有 nfs 的 vagrant)並且它可以正常工作,但這樣做需要您自擔風險。我沒有做一個完整的建構世界,而是只用第二個連結的更新檔重建了 mount_nfs 二進製文件。 作為最後一點,我最終決定使用 nfs 的 vagrant 錯誤太多,並改用 rsync 共享文件夾。

$$ 1 $$ http://www.secnetix.de/olli/FreeBSD/mnamelen.hawk $$ 2 $$ https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=167105

引用自:https://serverfault.com/questions/660588