web-dev-qa-db-ja.com

Yum cifsマウントのリポジトリ

私がしたいこと

私の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コマンドを正常に完了できませんでした。

動作しているように見えたが、最適ではないもの

これは機能しますが、非常に不格好です。

すべてのrpmをローカルでホストし、そこにリポジトリを作成します。次に、レポデータを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/
2
bgStack15

私はこの問題に遭遇しました、そして他のいくつかも同様であるように見えます。共通の要因は、リポジトリディレクトリがRWアクセスのCIFS共有にマウントされていることです。

このRedHatBugZillaによると: https://bugzilla.redhat.com/show_bug.cgi?id=429201

私にとってうまくいったのは、CIFS宣言にnobrlを含めるように/etc/fstab/ファイルを変更することでした。

# /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は正常に機能しました。

nobrloption は、マウントされたファイルシステムに対して適用されるバイト範囲ロックを削除します。これにより、createrepoは、SQLiteデータベースを正常に更新/アクセスできます。ロック。

3
beeks