Yum repo на cifs mount


2

Що я хочу зробити

Створіть моє сховище yum / dnf на спільній частці cifs.

Довга версія

Мій сервер Windows - це мій основний файловий сервер, і я зберігаю там свій каталог підтримки / платформ / Korora22 /. У мене є свої rpms, деякі завантажені, а деякі самостійно прокатуються.

Я хочу розмістити там сховище, але моя 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/

ви коли-небудь знаходили рішення для цього?
beks

Відповіді:


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 параметр видаляє блокування діапазону байтів від застосування до змонтованої файлової системи, що дозволяє createrepoуспішно оновити / отримати доступ до бази даних SQLite без спроб і не досягти блокування.


Відмінне відкриття! Мені вдалося виконати це завдання без перезавантаження, демонтувавши та перезавантаживши привід.
bgStack15

@ bgStack15, Дякую! Так, це могло б працювати без перезавантаження. Я знаю, що багато хто любить досягти всього, не перезавантажуючись в Linux, але чи завжди це хороший тест для підтвердження того, що все з'явиться після несподіваної перезавантаження?
бекеш

Додавши файлову систему з nobrlатрибутом у файл / etc / fstab, mount /repoкоманда змонтується точно так само, як це робиться під час завантаження. Тому я б сказав так, це хороший тест. Якщо у вас несподіване завантаження, слід перевірити інші речі, крім цієї файлової системи.
bgStack15
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.