2

Что я хочу сделать

Создайте мой репозиторий yum/dnf на общем ресурсе cifs.

Длинная версия

Мой Windows-сервер - это мой основной файловый сервер, и я пока что там храню каталог Support/Platforms/Korora22/. У меня есть мои RPM там, некоторые загружены, а некоторые самостоятельно.

Я хочу разместить там репозиторий, но мой createrepo . команда возвращает эту ошибку:

[root@linux-05|/mnt/smash/Support/Platforms/Korora22]# createrepo .
Spawning worker 0 with 3 pkgs
Spawning worker 1 with 3 pkgs
Spawning worker 2 with 2 pkgs
Spawning worker 3 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs

(process:368): GLib-CRITICAL **: g_timer_stop: assertion 'timer != NULL' failed

(process:368): GLib-CRITICAL **: g_timer_destroy: assertion 'timer != NULL' failed
Traceback (most recent call last):
  File "/usr/share/createrepo/genpkgmetadata.py", line 308, in <module>
    main(sys.argv[1:])
  File "/usr/share/createrepo/genpkgmetadata.py", line 280, in main
    mdgen.doRepoMetadata()
  File "/usr/lib/python2.7/site-packages/createrepo/__init__.py", line 1005, in doRepoMetadata
    rp.getOtherdata(complete_path, csum)
  File "/usr/lib64/python2.7/site-packages/sqlitecachec.py", line 61, in getOtherdata
    self.repoid))
TypeError: Can not create db_info table: database is locked

/etc/yum.repos.d/bgstack.repo

[bgstack]
name=bgstack
baseurl=file:///mnt/smash/Support/Platforms/Korora22/
gpgcheck=0

Шаги я уже пробовал, что не помогло

rm -rf /var/lib/rpm/__db*
rpm --rebuilddb

dnf clean all

Мой /etc /fstab включает эту строку:

//win-server1/smash       /mnt/smash        cifs     rw,user,uid=bgstack,credentials=/root/.bgstack.example.com,exec,soft

Заметьте, что он будет монтировать мой каталог как пользователь bgstack, так что я фактически размонтировал и смонтировал с помощью uid root (фактически, пропустив эту часть):

mount -t cifs -o credentials=/root/.bgstack.example.com //win-server1/smash /mnt/smash

Это все еще не будет успешно завершать команду createrepo.

То, что оказалось работать, но не является оптимальным

Это работает, но очень неуклюже.

Разместите все rpms локально и создайте там хранилище. Затем перенесите данные репо в папку cifs.

# as root: createrepo does not like regular users
mkdir -p ~/localrepo
cp -pr /mnt/smash/Support/Platforms/Korora22/*rpm ~/localrepo
createrepo ~/localrepo
cp -pr ~/localrepo/repodata /mnt/smash/Support/Platforms/Korora22/

1 ответ1

2

Я столкнулся с этой проблемой, и, кажется, некоторые другие тоже. Общим фактором является то, что наши каталоги репозитория монтируются на общем ресурсе CIFS с доступом к RW.

Для этого RedHat BugZilla:https://bugzilla.redhat.com/show_bug.cgi?id=429201

Для меня сработало изменение моего файла /etc/fstab/ для включения nobrl в мое объявление CIFS:

# /etc/fstab
# Created by anaconda on Mon Apr 18 15:04:59 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=a15ce235-0cd8-4890-95ed-9f1f8803e1fc /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
\\\\QNAP\\repo /repo cifs nobrl,rw,file_mode=0777,dir_mode=0775,async,noperm,credentials=/root/creds_smb_library_core,uid=5000,gid=6000 0 0

После выполнения перезагрузки убедитесь, что файловая система смонтирована с холодной загрузки, createrepo работала нормально.

nobrl опция удаляет Byte Range Блокировки от применяются против смонтированной файловой системы, что позволяет createrepo успешно обновить / доступ к базе данных SQLite , не пытаясь и не суметь достичь блокировки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .