Yum repo trên cifs mount


2

Tôi muốn làm gì

Xây dựng kho lưu trữ yum / dnf của tôi trên chia sẻ cifs.

Phiên bản dài

Máy chủ windows của tôi là máy chủ tệp chính của tôi và tôi lưu trữ thư mục Hỗ trợ / Nền tảng / Korora22 / của tôi ở đó vào lúc này. Tôi có rpms của tôi ở đó, một số tải xuống và một số tự cuộn.

Tôi muốn lưu trữ một kho lưu trữ ở đó, nhưng createrepo .lệnh của tôi ném lại lỗi này:

[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.repose.d/bgstack.repo

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

Các bước tôi đã thử mà không giúp được

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

dnf clean all

My / etc / fstab bao gồm dòng này:

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

Quan sát rằng nó sẽ gắn kết thư mục của tôi với tư cách là người dùng bgstack, vì vậy tôi thực sự đã bỏ qua và gắn với root uid (một cách hiệu quả, bằng cách bỏ phần đó ra):

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

Nó vẫn không hoàn thành thành công một lệnh commeepo.

Những gì xuất hiện để làm việc nhưng không tối ưu

Điều này hoạt động, nhưng rất clunky.

Lưu trữ tất cả các rpms cục bộ và tạo kho lưu trữ ở đó. Sau đó chuyển dữ liệu repo vào chia sẻ 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/

Bạn đã bao giờ tìm thấy một giải pháp cho điều này?
ong

Câu trả lời:


2

Tôi gặp vấn đề này, và nó cũng xuất hiện một số người khác. Yếu tố phổ biến là các thư mục kho lưu trữ của chúng tôi được gắn trên chia sẻ CIFS với quyền truy cập RW.

Mỗi BugZilla RedHat này: https://ormszilla.redhat.com/show_orms.cgi?id=429201

Điều làm việc cho tôi là sửa đổi /etc/fstab/tệp của tôi để đưa nobrlvào tuyên bố CIFS của tôi:

# /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

Sau khi thực hiện khởi động lại xác nhận rằng hệ thống tập tin được gắn kết từ một khởi động lạnh, createrepohoạt động tốt.

Các nobrl tùy chọn loại bỏ Byte Dải Khóa từ được áp dụng đối với hệ thống tập tin được gắn kết, cho phép createrepocập nhật thành công / truy cập vào cơ sở dữ liệu SQLite mà không cần cố gắng và thất bại trong việc đạt được một khóa.


Khám phá tuyệt vời! Tôi đã có thể hoàn thành nhiệm vụ này mà không cần khởi động lại bằng cách ngắt kết nối và nối lại ổ đĩa.
bgStack15

@ bgStack15, Cảm ơn! Phải, điều đó có thể đã làm việc mà không cần khởi động lại. Tôi biết nhiều người muốn đạt được mọi thứ mà không cần khởi động lại trong Linux, nhưng đó có phải là một thử nghiệm tốt để xác nhận rằng mọi thứ sẽ xuất hiện sau khi khởi động lại bất ngờ?
ong

Bằng cách thêm hệ thống tệp với nobrlthuộc tính vào tệp / etc / fstab, mount /repolệnh sẽ gắn kết chính xác giống như cách thực hiện khi khởi động. Vì vậy, tôi muốn nói có, đó là một thử nghiệm tốt. Nếu bạn có một khởi động bất ngờ, bạn nên kiểm tra những thứ khác ngoài hệ thống tập tin này.
bgStack15
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.