私の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/
私はこの問題に遭遇しました、そして他のいくつかも同様であるように見えます。共通の要因は、リポジトリディレクトリが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
は正常に機能しました。
nobrl
option は、マウントされたファイルシステムに対して適用されるバイト範囲ロックを削除します。これにより、createrepo
は、SQLiteデータベースを正常に更新/アクセスできます。ロック。