{"id":35132959,"url":"https://github.com/nilfs-dev/nilfs-utils","last_synced_at":"2026-01-25T06:00:52.308Z","repository":{"id":1877648,"uuid":"2803116","full_name":"nilfs-dev/nilfs-utils","owner":"nilfs-dev","description":"NILFS utilities","archived":false,"fork":false,"pushed_at":"2026-01-19T15:33:57.000Z","size":1691,"stargazers_count":49,"open_issues_count":8,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-01-19T18:13:09.159Z","etag":null,"topics":["c","filesystem-library","filesystem-utils","gc","mkfs"],"latest_commit_sha":null,"homepage":"https://nilfs.sourceforge.io/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"splunk/splunk-app-splunkgit","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nilfs-dev.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2011-11-18T14:40:01.000Z","updated_at":"2026-01-19T15:34:47.000Z","dependencies_parsed_at":"2024-02-15T20:29:08.105Z","dependency_job_id":"52baf18a-aba5-497f-bcb7-31390d1ee335","html_url":"https://github.com/nilfs-dev/nilfs-utils","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/nilfs-dev/nilfs-utils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilfs-dev%2Fnilfs-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilfs-dev%2Fnilfs-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilfs-dev%2Fnilfs-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilfs-dev%2Fnilfs-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nilfs-dev","download_url":"https://codeload.github.com/nilfs-dev/nilfs-utils/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilfs-dev%2Fnilfs-utils/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28745836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T05:12:38.112Z","status":"ssl_error","status_checked_at":"2026-01-25T05:04:50.338Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","filesystem-library","filesystem-utils","gc","mkfs"],"created_at":"2025-12-28T07:05:35.061Z","updated_at":"2026-01-25T06:00:52.296Z","avatar_url":"https://github.com/nilfs-dev.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"* Required packages\n\n - libuuid-devel or uuid-dev\n - libmount-devel or libmount-dev\n - libblkid-devel or libblkid-dev\n - libselinux-devel or libselinux1-dev (*1)\n - pkg-config (*2)\n\n *1: required only if supporting SELinux context mount options without\n     using libmount.  By default, libmount is used and support of the\n     context mount depends on the libmount that distro provides.\n\n *2: required if resolving build dependencies via .pc (pkg-config)\n     files or generating the project's .pc files.\n\n\n* How to compile\n\n** From a source package (tarball): **\n\n $ ./configure\n $ make\n\n** From the git repository: **\n\n $ git clone https://github.com/nilfs-dev/nilfs-utils.git\n $ cd nilfs-utils\n $ ./autogen.sh\n $ ./configure\n $ make\n\nBefore compiling the development sources (git clone), you need to run\nthe autogen.sh script to generate the configuration files.  This is not\nrequired for packaged sources unless you have modified build system\nfiles such as configure.ac or Makefile.am.\n\n\n* Installation\n\nTo install the compiled utilities and libraries to your system, run:\n\n $ sudo make install\n\nTo remove the installed files from your system, you can run:\n\n $ sudo make uninstall\n\nNote: It is recommended to keep the build directory or the original\nsource tree if you plan to use 'make uninstall' later, as it relies\non the Makefile generated during configuration.\n\nFor more detailed general instructions, see the automatically\ngenerated INSTALL file.\n\n\n* Installation path configuration\n\nThe configure script automatically probes your system to determine the\nappropriate library installation directory (libdir).\n\n- On systems using RPM-based package management (e.g., RHEL clones,\n  Fedora, openSUSE):\n  Detects and sets libdir according to the system's library macro\n  (typically /usr/lib64 on 64-bit systems).\n\n- On Debian-based distributions (e.g., Debian, Ubuntu, etc):\n  Detects and sets libdir according to the Multiarch specification\n  (e.g., /usr/lib/x86_64-linux-gnu).\n\nYou can manually override this detection using the --libdir option:\n\n $ ./configure --libdir=/usr/lib64\n\nThe configure script can also generate pkg-config files (.pc files)\nthat provide build metadata for other tools or applications that\nutilize nilfs-utils libraries.  The following option is available to\ncontrol the installation of these files:\n\n $ ./configure --with-pkgconfigdir=DIR\n\nIf the DIR parameter (which is to specify the directory for\npkg-config files) is omitted, the path will be auto-detected (usually\n${libdir}/pkgconfig).  To disable the installation of .pc files, set\nit to 'no' or use --without-pkgconfigdir option.\n\nModern Linux distributions follow the \"UsrMerge\" or \"Bin-Sbin merge\"\nschemes.  The configure script automatically detects the system\nhierarchy and adjusts the installation paths for core binaries\n(mkfs.nilfs2, mount.nilfs2, nilfs_cleanerd, etc.):\n\n - Legacy: Installs to /sbin\n - UsrMerge: Installs to /usr/sbin\n - Bin-Sbin merge (e.g., Fedora Rawhide): Installs to /usr/bin\n\nWhen installing to /usr/bin, the build system also attempts to create\ncompatibility symbolic links in /usr/sbin if that directory exists and\nis different from /usr/bin.\n\nYou can manually override this detection using the following options:\n\n # Force installation into /usr/bin (Bin-Sbin merge style)\n $ ./configure --enable-usrmerge=bin\n\n # Force installation into /usr/sbin (UsrMerge style)\n $ ./configure --enable-usrmerge=sbin\n\n # Force installation into the traditional /sbin\n $ ./configure --disable-usrmerge\n\nBy default, if the option is omitted, the script probes the system's\ndirectory configuration to determine the appropriate hierarchy.  If\nthe option is specified without a TYPE (i.e., --enable-usrmerge), it\ndefaults to \"sbin\" (/usr/sbin) to align with standard UsrMerge\npractices.\n\nNote: This option is significant even when /sbin is a symbolic link to\n/usr/sbin (i.e., the physical installation destination is the same).\nIt ensures that the absolute paths used by the utilities to call other\nbinaries are consistent with the chosen hierarchy.\n\n\n* Build dependency information (pkg-config)\n\nSince version 2.3.0, nilfs-utils provides pkg-config metadata files\nfor its shared libraries (nilfs.pc and nilfsgc.pc).  These files are\nintended to simplify the development of independent tools that link\nagainst nilfs-utils libraries, and typical users do not need to be\naware of them.\n\nFor those interested in using these files for development, please\nrefer to the pkg-config(1) manual page or its official documentation\n(https://www.freedesktop.org/wiki/Software/pkg-config/).\n\n\n* Cross-compilation and remote deployment\n\nWhen cross-compiling, automatic library directory detection is\ndisabled.  You must explicitly specify the target's library directory.\nAdditionally, you should specify the UsrMerge scheme of the target\nsystem to ensure files are installed to the correct locations.\n\n1. Preparation (e.g., for aarch64/arm64 on Ubuntu noble):\n   You need a cross-toolchain and development libraries for the target\n   architecture.  On a Debian-based host, you can set them up as\n   follows:\n\n    $ sudo dpkg --add-architecture arm64\n    $ sudo apt update\n    $ sudo apt install gcc-aarch64-linux-gnu libuuid1:arm64 \\\n        libblkid-dev:arm64 libmount-dev:arm64 libselinux1-dev:arm64\n\n   If you are on Ubuntu, you may need to add the ports repository to\n   /etc/apt/sources.list.d/ubuntu.sources (or your sources.list):\n\n    Types: deb\n    URIs: http://ports.ubuntu.com/ubuntu-ports\n    Suites: noble noble-updates noble-security noble-backports\n    Components: main restricted universe multiverse\n    Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg\n    Architectures: arm64\n\n   For more details, please refer to the cross-compilation guidelines\n   provided by your specific distribution.\n\n2. Configure and build:\n   For example, when cross-compiling for aarch64-linux-gnu machine\n   running a UsrMerge-enabled OS:\n\n    $ ./configure --host=aarch64-linux-gnu \\\n        --libdir=/usr/lib/aarch64-linux-gnu \\\n        --enable-usrmerge=sbin\n    $ make\n\n3. Install to target:\n   Instead of running 'make install' on the target, it is recommended\n   to use DESTDIR on the host and transfer the files:\n\n    $ make install DESTDIR=$HOME/tmp/aarch64-linux-root\n    $ tar czf - -C $HOME/tmp/aarch64-linux-root . | \\\n        ssh target-host \"sudo tar xzvf - --no-same-owner -C /\"\n\n   Here, \"target-host\" represents the host you want to deploy to.\n   Using --no-same-owner with sudo on the target ensures that the\n   extracted files are owned by the root user.\n\n   After transferring the files, update the shared library cache on\n   the target system:\n\n    $ ssh target-host \"sudo ldconfig\"\n\n\n* Troubleshooting\n\nIf you change the installation path (such as --libdir) or other\nconfiguration options, old build artifacts (especially libtool's .la\nfiles) may cause build or installation errors.  In such cases, perform\na clean build as follows:\n\n $ make distclean\n $ ./configure [your-new-options]\n $ make\n\nIf you have:\n\n - Updated the source tree (e.g., 'git pull')\n - Installed/Uninstalled system tools (e.g., pkg-config) or libraries\n - Encountered \"command not found\" or strange autoconf errors\n\nStale caches (like autom4te.cache) or outdated generated files may\nbe the cause.  In such cases, perform a full reset using git:\n\n $ git clean -xdf\n $ ./autogen.sh\n $ ./configure [options]\n $ make\n\n WARNING: This will delete ALL untracked files, including your local\n config files or uncommitted changes.\n\nIf the blkid library in your environment is old and incompatible with\nthis package, you can use --without-blkid option:\n\n $ ./configure --without-blkid\n\nHowever, use of this option is normally not recommended because it\ndisables the safety check of mkfs.nilfs2, which prevents users from\naccidentally overwriting an in-use device.\n\nIf /etc/mtab is not a symlink to /proc/self/mounts but a regular file\nin the target system, you may need to disable libmount support to\nproperly handle the legacy mtab file:\n\n $ ./configure --without-libmount\n\nThis option is primarily intended for legacy environments or\nspecialized configurations that still rely on a writable /etc/mtab\nfile.  Note that most modern distributions provide libmount as standard\nand do not require this option.\n\nYou can compile the legacy mount.nilfs2 and umount.nilfs2 helpers\nwithout support for SELinux context mount options (-o context=\u003ccontext\u003e,\netc):\n\n $ ./configure --without-libmount --without-selinux\n\nFor helpers built with mount library (libmount), support of the\ncontext mount depends on the libmount that distro provides.\n\nIf you are having problems due to the missing nilfs2 disk format or\nioctl interface definition file (nilfs2_ondisk.h or nilfs2_api.h,\nrespectively), try installing the Linux kernel source or header file\npackage first.\n\nIf you still cannot install these files, or if you want to overwrite\nthem with files from this package, specify the\n\"--enable-uapi-header-install\" option as an argument to the configure\nscript.  This will install the uapi header files included in this\npackage:\n\n $ ./configure --enable-uapi-header-install\n\nNote that the utility package itself references bundled local header\nfiles, so you don't need to install these files with this option to\nbuild.\n\n\n* Developer's notes\n\nThe central resource for nilfs-utils development is the mailing list\n(linux-nilfs@vger.kernel.org).\n\nFirst, please read the following documents (in short, follow Linux\nkernel development rules):\n\nhttps://docs.kernel.org/process/coding-style.html\nhttps://docs.kernel.org/process/submitting-patches.html\n\nThen, check your patches with the patch style checker prior to\nsubmission (scripts/checkpatch.pl) like the following example:\n\n $ ./scripts/checkpatch.pl \u003cpatch-file\u003e\n ...\n \u003cpatch-file\u003e has no obvious style problems and is ready for submission.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnilfs-dev%2Fnilfs-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnilfs-dev%2Fnilfs-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnilfs-dev%2Fnilfs-utils/lists"}