Файловая система sshfs
FUSE реализована путем представления файловой системы поверх sftp
, протокола передачи файлов. В результате любой доступ к файлу, такой как редактирование с помощью vi[m]
, требует, чтобы подсистема sshfs
сначала скопировала файл в кэш локальной файловой системы. Если файл особенно велик или сеть между вашим клиентом и сервером особенно медленная, потребуется значительное время для передачи файла, прежде чем он станет доступным локально.
Это (очень )в целом эквивалентно следующему (, за исключением того, что здесь используется sftp
вместоscp
)
# Copy the remote file to a temporary local cache
scp -p remote:/path/to/file /tmp/file.tmp
checksum=$(cksum /tmp/file.tmp)
# Action on remote file is implemented by performing the action locally
vi /tmp/file.tmp
# Simplified; we would also need to handle local rm/mv -> remote rm/mv, etc.
[[ "$(cksum /tmp/file.tmp)" != "$checksum" ]] && scp -p /tmp/file.tmp remote:/path/to/file
Как следствие, вы обнаружите, что попытка запустить gcc
локально будет значительно медленнее, чем просто войти на удаленный сервер и запустить его там. Честно говоря, я не слишком удивлен тому, что «gcc падает при попытке скомпилировать файлы на удаленной файловой системе ». Не должно, конечно, но тогда подумайте о том, что на самом деле происходит на заднем плане...
Is my assumption correct?
Да. Это описано в справочной странице dnf
:
DNF uses a separate cache for each user under which it executes. The cache for the root user is called the system cache. This switch allows a regular user read-only access to the system cache, which usually is more fresh than the user’s and thus he does not have to wait for metadata sync.
Any way to make yum/dnf behave like apt?
Да; вы можете заставить dnf
обновить системный кеш, запустив dnf mc
от имени пользователя root, а затем запустить его от имени пользователя, отличного от -, с помощью переключателя-C
(или--cacheonly
):
Run entirely from system cache, don’t update the cache and use it even in case it is expired.
Пользовательские кеши будут игнорироваться и не будут обновляться.