{"id":20640133,"url":"https://github.com/maresb/docker-build-s3fs","last_synced_at":"2025-04-15T22:57:05.653Z","repository":{"id":107327044,"uuid":"238335987","full_name":"maresb/docker-build-s3fs","owner":"maresb","description":"Build s3fs from Docker","archived":false,"fork":false,"pushed_at":"2022-05-25T18:14:45.000Z","size":162,"stargazers_count":11,"open_issues_count":3,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T22:56:57.238Z","etag":null,"topics":["deb","debian-packages","docker","s3fs","s3fs-fuse","ubuntu","ubuntu1804"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maresb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-05T00:29:43.000Z","updated_at":"2024-10-17T02:30:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"26693b8f-7ec2-4eee-9963-d2a875e738cd","html_url":"https://github.com/maresb/docker-build-s3fs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maresb%2Fdocker-build-s3fs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maresb%2Fdocker-build-s3fs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maresb%2Fdocker-build-s3fs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maresb%2Fdocker-build-s3fs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maresb","download_url":"https://codeload.github.com/maresb/docker-build-s3fs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249167439,"owners_count":21223505,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["deb","debian-packages","docker","s3fs","s3fs-fuse","ubuntu","ubuntu1804"],"created_at":"2024-11-16T15:28:03.986Z","updated_at":"2025-04-15T22:57:05.646Z","avatar_url":"https://github.com/maresb.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-build-s3fs\n\n#### Builds a .deb for Ubuntu 18.04/20.04 based on a specified commit from the s3fs-fuse GitHub repository.\n\nThis Dockerfile repackages the Ubuntu 20.04 focal `.deb` file (currently [`s3fs_1.86-1_amd64.deb`](https://packages.ubuntu.com/focal/amd64/s3fs/download)) with updated source code from the [s3fs-fuse GitHub repository](https://github.com/s3fs-fuse/s3fs-fuse).  This is all done at Docker build time.\n\n## Download\n\n### [Download the resulting .deb file](https://media.githubusercontent.com/media/maresb/docker-build-s3fs/master/builds/s3fs_1.91+git-v1.91-3_amd64.deb) (rendered from [v1.91](https://github.com/s3fs-fuse/s3fs-fuse/tree/v1.91) release) and verify [your preferred checksum](#checksums).\n\n## Links\n\n- GitHub: https://github.com/maresb/docker-build-s3fs\n\n- s3fs-fuse: https://github.com/s3fs-fuse/s3fs-fuse\n\n\n## Motivation\n\nUbuntu 18.04's outdated version of [s3fs-fuse](https://github.com/s3fs-fuse/s3fs-fuse) (resulting from `apt-get install s3fs`) did not seem to work for me on AWS. Thus I started this project with a Dockerfile which compiles s3fs from a specified GitHub commit.\n\nI need to deploy this to several instances, so I much prefer the speed and\nconvenience of installing from a `.deb` file as opposed to compiling from source.\nFor security reasons, I avoid downloading software compiled by random people.\nIf you trust me\u003csup\u003e\u003ca name=\"trustmesrc\"\u003e[1](#trustmedest)\u003c/a\u003e\u003c/sup\u003e, you can download the `.deb` from the above link.  Otherwise, follow the instructions below to build it yourself.\n\n## Alternatives\n\nI no longer use this project myself. Nowadays my preferred installation method is to use conda-forge, which provides open-source infrastructure for package management. In particular, I use [`mamba`](https://github.com/mamba-org/mamba) to install the [`s3fs-fuse`](https://github.com/conda-forge/s3fs-fuse-feedstock) package with the command\n\n```bash\nmamba install -c conda-forge s3fs-fuse\n```\n\nIf you don't want to mess with setting up a Conda environment, the following should work on Ubuntu 22.04 (not thoroughly tested):\n\n```bash\nsudo apt-get install -y curl bzip2 fuse mime-support libxml2 libcurl4 libssl3\ncurl -Ls https://anaconda.org/conda-forge/s3fs-fuse/1.91/download/linux-64/s3fs-fuse-1.91-h66f7299_0.tar.bz2 | sudo tar -xvj --strip-components=1 --directory=/usr/local/bin bin/s3fs\n```\n\nOn Ubuntu 20.04, `libssl3` is not available, but the following procedure should install it from Conda-Forge (not thoroughly tested):\n\n```bash\nDEBIAN_FRONTEND=noninteractive sudo apt-get install -y curl bzip2 fuse mime-support libxml2 libcurl4\ncurl -Ls https://anaconda.org/conda-forge/openssl/3.0.3/download/linux-64/openssl-3.0.3-h166bdaf_0.tar.bz2 | sudo tar -xvj --strip-components=1 --directory=/usr/local/lib --wildcards \"lib/lib*\"\ncurl -Ls https://anaconda.org/conda-forge/s3fs-fuse/1.91/download/linux-64/s3fs-fuse-1.91-h66f7299_0.tar.bz2 | sudo tar -xvj --strip-components=1 --directory=/usr/local/bin bin/s3fs\n```\n\n## Installation\n\nOnce you have the `.deb` file, run\n\n```bash\nsudo apt-get install -y fuse mime-support libxml2 libcurl4 libssl1.1\nsudo dpkg -i s3fs_….deb\n```\n\n## Build s3fs from Docker\n\nIf you wish to validate my `.deb` file or to generate it yourself, then follow these steps.\n\n### 1. Compile under Docker.\n\nDownload `Dockerfile` and change to the corresponding directory.\n\n```bash\ngit clone https://github.com/maresb/docker-build-s3fs.git \u0026\u0026 cd docker-build-s3fs\n```\n\nTo render an untagged commit such as [e0712f4](https://github.com/s3fs-fuse/s3fs-fuse/tree/e0712f4),\n```bash\ndocker build -t build-s3fs --build-arg COMMIT_ID=e0712f4 --build-arg S3FS_VERSION=1.85 .\n```\n\nor for a tagged commit such as a release version, for example [v1.91](https://github.com/s3fs-fuse/s3fs-fuse/tree/v1.91),\n\n```bash\ndocker build -t build-s3fs --build-arg COMMIT_ID=v1.91 --build-arg S3FS_VERSION=1.91 .\n```\n\nThe argument `S3FS_VERSION` should refer to the latest version number as of the commit specified under `COMMIT_ID`.\n\n### 2. Copy the package from the image via a temporary container.\n```bash\nid=$(docker create build-s3fs)\ndocker cp $id:s3fs-debian-package.tar .\ndocker rm -v $id\ntar xvf s3fs-debian-package.tar \u0026\u0026 rm s3fs-debian-package.tar\n```\n\n### 3. Clean up.\n```bash\ndocker rmi build-s3fs\ndocker system prune\n```\n\n### For debugging,\n\nIf the image successfully builds, you can tag the build stage and look inside with\n```bash\ndocker build -t build-s3fs:build --target build [ADD BUILD ARGS HERE] .\ndocker run --rm -it build-s3fs:build /bin/bash\n```\nOtherwise, in the output of a partial build, look for a line with an arrow directly followed by a hash such as\n```bash\n ---\u003e df7f92f1a162\n```\nThen you can look inside at the corresponding point with\n```bash\ndocker run --rm -it df7f92f1a162 /bin/bash\n```\n\n# Checksums\n\nNormally, due to last-modified times of files and the timestamp in the changelog,\nno two `.deb` files are expected to be exactly the same, even if they have the\nexact same content. However, by fixing a build-time, the `.deb` files produced\nby this container are reproducible. Thus I can provide a checksum which can be\nverified from the download, and/or a build on your own computer.\n\nNOTE: After some time, discrepancies in the checksums could arise due to updated\ndependencies. To compare, I provide logs under [`builds/`](builds).\n\n### md5sums FILE CONTENTS\n\n    0f511a762f22c0c00d75e40515dca142  usr/bin/s3fs\n    e225a2dfdaadb1c4c484614df28cdfdf  usr/share/doc/s3fs/changelog.Debian.gz\n    2c85defc6568bd463d3dc9c5342faab0  usr/share/doc/s3fs/copyright\n    7ba8239dcc20cbbbe29a0fcb80cc27ed  usr/share/doc/s3fs/examples/passwd-s3fs\n    0b395c729d822fdfd60bcf0d13169c49  usr/share/man/man1/s3fs.1.gz\n\n\n### `s3fs_1.91+git-v1.91-3_amd64.deb` size and checksum\n\n    $ stat --printf=\"%s bytes\\n\" s3fs_1.91+git-v1.91-3_amd64.deb\n    222340 bytes\n\n    $ md5sum s3fs_1.91+git-v1.91-3_amd64.deb\n    95192b8c47c931623eb1ce49282338eb  s3fs_1.91+git-v1.91-3_amd64.deb\n    \n    $ sha256sum s3fs_1.91+git-v1.91-3_amd64.deb\n    9eca7cb1e9bb08b8e3ae9b476287712a8293493630c76d9102c5ac0058b098c0  s3fs_1.91+git-v1.91-3_amd64.deb\n    \n    $ b2sum s3fs_1.91+git-v1.91-3_amd64.deb\n    46befabcd4ffce0000db99d71b1d51d6cef2bab8816fc540bc2e7aaaed921ad545f61d661190b96d219648f69688a7ea65ce6142a6524ec3af5a6f7f9f2ea97f  s3fs_1.91+git-v1.91-3_amd64.deb\n\n\n### `s3fs` size and checksum\n\n    $ stat --printf=\"%s bytes\\n\" s3fs\n    604608 bytes\n\n    $ md5sum s3fs\n    0f511a762f22c0c00d75e40515dca142  s3fs\n    \n    $ sha256sum s3fs\n    9f205d172c8e23dcf1fa1f31d999ad469116d032ef5238e29a0d290edd91ec07  s3fs\n    \n    $ b2sum s3fs\n    c9df12b25a3d577f958b5bb1fd15c406c42344b22fd1e172fb2f1672eca1c0b10b0a3487099f9951ebfaf55a3c81e64ce8a9d2cad1275612d15c5ac1713bae92  s3fs\n\n\n\nOriginally these files were reproducible by Docker Hub. Unfortunately [Docker Hub Autobuilds have been deactivated](https://www.docker.com/blog/changes-to-docker-hub-autobuilds/), so I can no longer offer this service. I would be interested in autogenerating the checksums/binary through another CI service if someone else puts together a pull request.\n\n# Notes\n\n\u003ca name=\"trustmedest\"\u003e[[1]](#trustmesrc)\u003c/a\u003e On principle, you should check my Dockerfile and make sure that I'm not doing anything suspicious.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaresb%2Fdocker-build-s3fs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaresb%2Fdocker-build-s3fs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaresb%2Fdocker-build-s3fs/lists"}